2015년 7월 27일 월요일

[Network] Link-layer addressing & address resolution protocol (ARP)

네트워크를 공부한지 하도 오래되서 link-layer address를 어디에 쓰는건지 잊어버렸다.(link-layer address, link address, physical address, MAC address 다 같은 말이다.)

Data communications and networking 5판의 9장을 참고하여 쓴다.

9.2 Link-Layer Addressing

Internet 같은 connectionless internetwork의 경우에 datagram(packet)을 IP 주소만을 이용해서 보낼 수는 없다.
Connectionless communication is a data transmission method used in packet switching networks by which each data unit is individually addressed and routed based on information carried in each unit, rather than in the setup information of a prearranged, fixed data channel as in connection-oriented communication (wikipedia, connectionless communication, connectionless internetwork)

각 datagram은 같은 source와 destination으로 이동하더도 다른 path를 가지게 된다.

datagram이 network layer에서 data-link layer로 가면 datagram이 frame으로 encapuslate되고 두 개의 data-link address가 frame header에 붙는다. 이 두 주소는 다른 링크로 갈 때 마다 바뀌게 된다.

아래 그림을 참고하자.








datagram의 Link-layer 주소가 link1, 2, 3에서 각각 다른 것을 알 수 있다. 윗면이 빨간색인 직육면체 박스는 LAN switch이고 가로로 긴 x가 들어간 타원은 라우터이다.

9.2.2 Address Resolution Protocol (ARP)

Path 상의 라우터 중 마지막 라우터를 제외하고는 forwarding table을 보고 다음 라우터의 IP 주소를 알 수 있다. source host는 default router의 IP 주소를 알고 있다. 마지막 라우터는 destination host의 IP 주소를 알고 있지만, 다음 노드의 IP 주소는 frame을 link를 통해 보내는데 도움이 안된다. 대신 다음 노드의 link-layer address(MAC address)를 가지고 있어야 한다. 그리고 ARP가 다음 노드의 MAC address를 가르쳐 줄 수 있다.

ARP accepts an IP address from the IP protocol, maps the address to the corresponding link-layer address, and passes it to the data-link layer.

Anytime a host or a router needs to find the link-layer address of another host or router in its network, it sends an ARP request packet.
패킷은 sender A의 MAC 주소와 IP 주소, 그리고 receiver의 IP 주소를 포함하고 있다. query는 link-layer broadcast address를 이용해서 link 전체에 브로드캐스트 된다. receiver들 중 해당하는 receiver는 자신의 IP와 MAC 주소를 ARP를 요청한 sender A에게 보낸다.