record logo record

ARP(Address Resolution Protocol)란?

네트워크 계층 주소(인터넷 IP 주소)와 링크 계층 주소(MAC 주소)가 있습니다. 이들 주소 사이에 변환 이 필요한데 이것을 ARP(Address Resolution Protocol)에서 해줍니다.(RFC 826)

다시말해, ARP(Address Resolution Protocol - 주소 결정 프로토콜) 는 TCP/IP 3계층(네트워크계층)의 IP Address를 2계층(데이터링크계층)의 MAC address로 대응(bind) 시킬때 사용하는 프로토콜 입니다.

예를 들어 설명하면, 택배를 배송할때 목적지의 주소(IP 주소)가 어떤 건물로 배달해야하는지 알고 있지만 몇호(MAC 주소)에 배달해야하는지 모른다고 할때 이를 알아내기 위한 방법이 ARP라고 생각하면 됩니다.

ARP 동작 원리

ARP가 목적지의 IP 주소만 알고 MAC 주소를 모를때 이를 알아내기 위한 프로토콜이라는 걸 알았습니다. 그렇다면 “송신 호스트가 어떻게 목적지의 IP 주소만을 가지고 목적지의 MAC 주소를 결정할 수 있는가??” ARP의 동작 원리에 대해서 알아보겠습니다.

아래의 그림은 각 호스트와 라우터는 하나의 IP 주소와 하나의 MAC 주소를 가집니다. 그리고 스위치가 모든 프레임을 브로드캐스트한다고 가정하겠습니다.(즉, 스위치가 한 인터페이스로 프레임을 수신하면 다른 모든 인터페이스로 프레임을 전달합니다.)

위 그림에서 IP 주소 222.222.222.220을 가진 A 호스트가 222.222.222.222를 가진 C 호스트로 IP 데이터그램을 전송하려고 한다고 가정 하겠습니다.

데이터그램을 전송하기 위해서, 출발지 노드는 반드시 자신의 어댑터에게 IP 데이터그램뿐만 아니라 목적지 222.222.222.222의 MAC 주소도 주어야 합니다. 송신 어댑터는 목적지의 MAC 주소가 포함된 링크 계층 프레임을 구성해서 그 프레임을 랜으로 전송합니다.

그러나 목적지(222.222.222.222)의 MAC주소를 모르는 상황에서 ARP를 사용함으로써 송신 호스트가 목적지의 MAC주소를 결정 이 가능합니다.

송신 호스트의 ARP 모듈은 입력값으로서 동일한 랜상의 임의의 IP 주소에 대해 대응되는 MAC 주소를 돌려줍니다. 위 그림에서, 송신 호스트 A(222.222.222.220)가 자신의 ARP 모듈에게 IP 주소 222.222.222.222를 주면, ARP 모듈은 대응하는 MAC 주소 1C-21-E9-SZ-52-8H로 응답합니다.

ARP와 DNS의 차이

따라서 ARP는 IP 주소를 MAC 주소로 변환해 준다는 것을 알았습니다. ARP는 호스트 네임을 IP 주소로 해결하는 DNS와 비슷함을 볼 수 있습니다. 그러나 이들 변환기의 중요한 차이점이 있습니다. DNS 가 인터넷의 임의의 장소에 있는 호스트의 호스트 네임을 해결하는 반면에, ARP 는 동일한 서브넷상에 있는 호스트나 라우터 인터페이스의 IP 주소만을 해결한다는 것입니다.

만일 서울에 있는 노드가 부산에 있는 노드의 IP 주소를 해결하기 위해 ARP를 사용하려고 한다면, ARP는 오류 메시지를 반환할 것입니다.


다시 돌아와 ARP가 어떻게 동작 하는지 살펴보겠습니다. 각 호스트와 라우터는 자신의 메모리에 ARP 테이블 을 갖고 있습니다. 이 ARP 테이블은 IP 주소와 MAC 주소 간의 매핑 정보를 포함합니다.

IP 주소 MAC 주소 TTL(Time-TO-Live)
222.222.222.221 1C-21-E9-SZ-52-8H 13:45:00
222.222.222.223 3B-72-Q9-WD-41-9L 13:52:00

위의 표는 호스트 222.222.222.220의 ARP 테이블 입니다. ARP 테이블은 테이블에서 각 매핑이 언제 삭제되는지를 나타내는 TTL 값을 포함합니다. 이 테이블에 서브넷상의 모든 호스트와 라우터에 대한 엔트리를 가지고 있지 않아도 됩니다. 즉, 어떤 노드들에 대해서는 종료된 엔트리를 갖고 있을 수 있는 반면에 다른 노드들에 대한 엔트리는 테이블에 전혀 없을 수도 있습니다. 일반적인 엔트리의 종료 시간은 엔트리가 ARP 테이블에 들어간 후 20분입니다.

이제 노드 222.222.222.220이 같은 서브넷의 다른 IP 주소(222.222.222.222)로 가는 데이터그램을 전송하려고 한다고 하겠습니다. 송신 호스트는 주어진 IP 주소로부터 목적지의 MAC 주소를 획득해야만 합니다. 이것은 송신 노드의 ARP 테이블에 목적지 노드에 대한 엔트리가 있으면 쉬운 일입니다. 그러나 ARP 테이블에 목적지 노드에 대한 엔트리가 없으면 ARP 프로토콜을 사용하여 목적지 IP 주소의 MAC 주소를 결정해야합니다.

먼저 송신 노드는 ARP 패킷 이라는 특수 패킷을 구성합니다. ARP 패킷은 송신 및 수신 IP 주소와 MAC 주소를 포함하는 핑드들을 갖고 있습니다. ARP 질의 패킷과 응답 패킷 모두 같은 형식을 갖습니다. ARP 질의 패킷의 목적은 해결하려는 IP 주소에 대응되는 MAC 주소를 결정하기 위해 서브넷의 다른 모든 호스트와 라우터들에게 질의하는 것입니다.

222.222.222.220은 ARP 질의 패킷을 어댑터에게 전달하며, 이때 어댑터에게 MAC 브로드캐스트 주소 즉 FF-FF-FF-FF-FF-FF로 패킷을 전송하도록 지시합니다. 어댑터는 ARP 패킷을 링크 계층 프레임에 캡슐화하고, 이 프레임의 목적지 주소를 브로드캐스트 주소로 해서 서브넷으로 전송합니다.

ARP 질의를 포함하는 프레임은 서브넷상의 다른 모든 어댑터들에 의해서 수신되며, 브로드캐스트 주소 때문에, 각 어댑터는 프레임에 들어 있는 ARP 패킷을 자신의 ARP 모듈로 전달합니다. ARP 모듈은 자신의 IP 주소가 ARP 패킷에 들어 있는 목적지 IP 주소와 일치하는지 검사합니다. 일치하는 노드는 요구된 매핑 정보가 포함된 응답 ARP 패킷을 질의한 노드로 돌려보냅니다. 그러면 질의 호스트 222.222.222.220은 자신의 ARP 테이블을 갱신하고 자신의 IP 데이터 그램을 링크 계층 프레임으로 캡슐화해서 전송합니다. 이때 프레임의 목적지 MAC 주소는 ARP 질의에 대한 응답을 보낸 호스트나 라우터의 MAC 주소가 됩니다.

ARP는 어느 계층 프로토콜인가?

ARP 패킷은 링크 계층 프레임에 캡슐화되며, 따라서 구조적으로 링크 계층보다 위에 있습니다. 그러나 ARP 패킷은 링크 계층 주소를 포함하는 필드들이 있기 때문에 링크 계층 프로토콜이라고 주장할 수도 있지만, 네트워크 계층 주소도 포함하기 때문에 네트워크 계층 프로토콜이라고도 할 수 있습니다. 결론은, ARP는 링크 계층과 네트워크 계층의 경계에 있는 프로토콜 이라고 하는 게 가장 타당하다고 할 수 있습니다.

RARP란?

IP 호스트가 자신의 물리 네트워크 주소(MAC)는 알지만 IP 주소를 모르는 경우, 서버로부터 IP주소를 요청하기 위해 RARP를 사용합니다.

References