Link Layer
처음에 호스트라 라우터에 보낼때 브로드케스트로 보내서 모든 호스트한테도 신호가 간다.
따라서 한명이 신호를 보내고 있을때 다른호스트가 동시에 신호를 보내면 충돌이 일어날 수 있다. 따라서 충돌이 일어나지 않도록 해야함.
충돌이 발생하지 않게 , 또 충돌이 발생한다면 해결하는 일을 하는것이 링크레이어의 핵심적인 일.
링크레이어는 유선(이더넷), 무선(와이파이) 일 수가 있음
유선인 상황
링크레이어의 어뎁터는 NIC(네트워크 인터페이스 카드)임
유선일 경우는 브로드캐스트 또는 포인트 투 포인트, 무선일 경우 브로드캐스트.
Medium Access Control (MAC):
어떻게 하면 충돌을 해결할것인가?
와이파이도 맥 프로토콜이라 할수있음
현재는 유선을 얘기하겟음
TDMA: 타임 디비전 멀티플 엑세스
시간을 쪼개서 사용할 사람들을 정한다. 단점: 낭비가 심함
FDMA: 프리퀀씨 디비전 멀티플 엑세스
각자 자기자신의 주파수가 있어서 주파수에 맞게 보낸다.
Random Access Protocols: 가장많이 사용. 내가 보내고자 할 데이터가 있을때 보내겠다. 여기선 충돌이 날 수 밖에 없는데 ,
해결방법 -> ALQHA, ALOHA, CSMA, CSMA/CD, CSMA/CA 등등
CSMA:
캐리어 센스 멀티플 액세스
말하기 전에 듣는다 ( 핵심 개념 )
우리가 여러명이서 모여서 말할때, 말하는 기법이랑 비슷한 개념이다. 누군가 말하고 있을 때 말하지 않는다.
하지만, 혹시나 동시에 얘기하는경우도 있음
CSMA/CD (collision detection)
충돌이 일어나는 경우, NIC가 인지한후 바로 멈춘다
그다음 한발짝 물러선다 binary exponential backoff
사람이 많으면 백오프 하는 경우도 많아지고 말할 타이밍이 느려진다(단점) 그리고 재전송
그렇다면 TCP 재전송과는 무엇이 다른것?
TCP는 호스트와 저 멀리 있는 호스트와의 재전송을 담당하는것
링크레이어에서 하는 재전송은 호스트와 게이트웨이라우터와의 재전송을 담당하는것.
충돌 감지 일때만 재전송한다.(유선일 경우 큰 문제는 없음. 그래서 이더넷에서 csma/cd사용)
혹시라도 충돌감지를 못하면 큰문제가 될 수 있다.
그밖에도
Taking Turns: polling
token passing : 토큰을 가지고 있는 사람이 얘기를 할 수 있다 단점: 토큰이 사라지면 심각한 문제에 빠짐.
LANS
local area network 호스트 기준 서브넷들
Ethernet
LAN안에서의 링크 프로토콜 .
요즘은 버스형이 아니라 스타형(스위치이용) 하여 구성되어있다.
>>링크레이어의 프레임 구조
링크레이어의 전송단위는 프레임 ! 뒤에 CRC도 있음
프레임의 헤더는 굉장히 단순함. 4가지 밖에 없음. type에는 무슨 프로토콜인지 들어감.
이더넷에서 사용하는 MAC 프로토콜은 CSMA/CD 임.이더넷은 유선임으로 큰 문제 없음.
만약 충돌 감지가 안된다면 어떻게 되는가?
해결: 프레임을 보낼때 할말이 없어도 말을 길게하게함 Minimum Frame Size : 64바이트를 지켜야함
만약 사이즈가 작다면 패딩을 해줘서 64바이트 맞춰주어야함.
프레임 헤더에는 MAC addr src, des 가 들어간다.
MAC 주소는 LAN인터페이스카드 그자체 바꿀수 없는 정해져있는 주소임. 48비트이고 앞에는 제조사등등 주민번호같은 느낌
자기자신의 MAC address는 어뎁터에있음.
여기까지 종합정리
맨처음에 게이트웨이라우터의 아이피는 DHCP에 의해 아이피를 안다. 처음 게이트웨이 라우터에 가면 네트워크 계층까징 있어서 포워딩 테이블로 알맞은 아이피 방향으로 갈 수 있지만
처음 게이트 웨이라우터로 가기위해서는 맥 어드레스를 알아야된다. 그이후도 마찬가지.
라우터는 MAC address를 여러개가짐.
ARP
IP주소를 가지고 다음 MAC 어드레스를 알아내기위한 프로토콜
아이피 어드레스를 가지고 게이트웨이라우터의 맥 어드레스를 알아야된다. => ARP
ARP테이블에 아이피 어드레스에 해당하는 맥 어드레스가 적혀있다. 처음에는 채워져 있지 않는 경우에는 ARP request를 통해 채운다. 브로드캐스트로 보낸다음 자기자신의 아이피인경우 자신의 어뎁터 맥 어드레스를 보낸다 ( 그것이 게이트웨이가 될것임 왜냐면 request에 dhcp에서 알게된 게이트웨이 아이피 주소를 요청 할 것이기 때문. ) 그이후에도 라우터가 라우터를 가기위해서 프레임 에서는 맥 주소가 계속 필요함. 라우터에도 ARP 테이블이있어서 그것으로 목적지 맥주소를 프레임에 담아 보냄.
...반복
즉, Next hop을 알아내기 위하여 포워딩 테이블을 lookup하고, 맥 어드레스를 알아내기 위해서는 ARP 테이블을 lookup한다. 없으면 request ( 포워딩테이블을 만들때 어느정도 ARP 테이블도 만들어짐)
요즘은 버스형이 아니라 성형이라 switch필요
Switch
2계층까지만 기능함. 3계층 관점에선 없는거나 마찬가지
편리할 뿐만아니라 collision domain을 분리 시켜준다. A-A’ , B-B’ 동시에 보낼수도 있고, 혹시나 목적지가 같은경우 하나하나 교통정리도 해준다. 그렇다면 스위치 목적지를 어떻게 아냐면? 스위치 테이블 때문.
A’은 4번인터페이스에있고 등등 테이블에 정리되어있음.
스위치 테이블은 만드는 방법 => self learning
테이블이 아무것도 없는데 A-A’ 이 들어올 경우 우선 들어온 A의 1번 인터페이스 정보를 TTL과 함께 테이블에 적는다. 그러면 flooding을 하여 모두에게 보낸다.( flooding이 초반에만 생김 학습하면 할수록 테이블이 채워지므로 )
즉 목적지를 알지못하는 경우: flooding
아는경우: 테이블 참조하여 보냄.
Interconnect Switch
스위치들을 또 스위치로 연결 할 수 있음.
스위치는 맥 어드레스 어뎁터 없음.
'📗 Computer Science' 카테고리의 다른 글
[네트워크] 데이터 통신 정리 (0) | 2021.04.20 |
---|---|
[2장] 운영체제 - Operating System Concepts 공룡책 (0) | 2021.01.13 |
[네트워크] Network Layer - 네트워크 계층 (0) | 2021.01.07 |
[1장] 운영체제 - Operating System Concepts 공룡책 (0) | 2021.01.07 |
[네트워크] TCP 개념 (0) | 2021.01.01 |