Link Layer(2)

June Lee·2021년 5월 19일
0

네트워크

목록 보기
10/28
post-thumbnail

Local Area Network

같은 서브넷에 속한(라우터를 거치지 않고 매개체를 통해 접근 가능함) 호스트들의 집합.

Frame


type: 데이터가 어떤 상위 레이어의 프로토콜인지. 보통 IP Protocol이라고 적혀있음.
CRC: 에러 체킹에 사용
source address: MAC address

Ethernet

physical topology

이더넷은 CSMA/CD를 사용.

Collision Detection을 하지 못한다면?
CD 판단은 어쨌든 보낸 노드에서 해야하는데, 보낸 노드에 Collision 정보(다른 노드에서 보낸 시그널)가 도착하기 전에 전송이 완료된다면, CD를 하지 못함.
=> 해결 방법: Minimum Frame Size(64byte)를 지켜야함. 이 길이 이상은 되어야 저 멀리서 발생한 Collision을 인지하기 전에 전송이 끝나는 일이 발생하지 않음. Minimum Frame Size를 지키기 위해 너무 적으면 의미없는 Padding을 집어넣음.

MAC Address

48bit. (앞 24bit는 제조회사 + 뒤 24bit는 제조번호)
링크계층에서 사용하는 주소.
공장에서 나올 때 네트워크 인터페이스(LAN 카드)에 찍어서 나오는 주소.

cf)
자신의 MAC Address를 바꾼다는건, 실제로 바꾼다는게 아니라, Source Address 부분을 위조하는 것.

실제 세상에 비유
이름 <-> hostname (바꿀 수 있음)
주소 <-> IP Address (바꿀 수 있음)
주민번호 <-> MAC Address (바꿀 수 없음. 그 존재 자체를 의미함)

데이터를 보내는 과정

  1. DHCP가 게이트웨이 라우터의 IP 주소를 알려줌
  2. Source도 DHCP가 알려줌
  3. Destination(구글,..)은 DNS가 알려줌
  4. 이렇게 생성된 IP 패킷이 MAC Frame의 데이터 부분에 들어감
  5. 프레임의 Source에는 MAC Address를 넣어줌(자기는 알 수 있음)
  6. 게이트웨이 라우터의 MAC Address가 Destination에 필요. 근데 DHCP는 IP만 알려줘서 MAC Address는 모름.

IP Address로 MAC Address를 찾는 과정
1) 각 호스트 내부에는 ARP(Address Resolution Protocol) Table이 읽음 (IP Addr와 MAC Addr가 1:1로 맵핑되어있는 캐시 테이블 + TTL(해당 entry가 얼마나 유지될지))
2) 원하는 entry가 채워져있지 않으면 ARP Request라는 프레임(source: 나, dest: 1.1.1.1(broadcast), MAC addr를 찾고자 하는 ip addr)을 LAN 전체에 브로드 캐스트
3) 게이트웨이 외에는 받아도 다 버리고, 게이트웨이는 거기에 적힌 IP가 자기자신이면 응답을 해줌

  1. Collision이 안났다면 게이트웨이 라우터가 받음.
  2. 게이트웨이 라우터가 프레임에서 IP 패킷을 끄집어냄(source, dest IP가 적혀있는)
  3. forwarding하기 위해 dest 필드를 보고, 라우터 안에 있는 forwarding table(dest IP : next hop)을 참조해서 next hop을 찾아냄.
  4. 이걸 다시 프레임으로 감싸서 src에는 gateway router의 MAC addr를 적어줌. 단! 이딴 MAC addr는 이전에 호스트에서 써준 MAC addr랑은 다름. 라우터에는 네트워크 인터페이스가 여러개 있기 때문에, 나가는 애랑 내부로 들어가는 쪽은 MAC addr가 다름.
  5. dest에는 ARP를 통해 R1(Google로 가기 위해 거치는 라우터 중 하나)의 MAC Address를 찾아서 적어줌.
  6. 프레임을 보낼 때는 CSMA/CD로 먼저 listen하고 보내고, collision나면 중단하고 기다렸다가 재전송.

IP Packet의 src, dest는 도착할 때까지 안바뀜.
MAC 프레임의 src와 dest MAC addr는 계속해서 바뀜. 이때 참고하는 테이블은 2가지.
1.Forwarding Table => next hop이 어딘지, 해당 라우터의 IP를 찾아냄.
2.ARP Table => IP를 통해 MAC Addr를 알아냄

profile
📝 dev wiki

0개의 댓글