ARP

1 개요

Address Resolution Protocol
OSI 7 Layer에서 Layer 2.5(Layer 3와 Layer 2 사이)에 위치한 프로토콜이며, MAC 주소와 IP 주소를 서로 연결하는 용도로 사용한다.

사실 이 내용은 일반 사용자 레벨에서는 거의 볼 일이 없는 내용이다. 하지만 ARP는 의외로 중요한 역할을 하는데, LAN 환경에서는 MAC 주소를 기반으로 통신하기 때문이다. ARP는 IP 주소를 기반으로 MAC 주소를 알아오는 역할을 한다. 실제로 Wireshark를 이용하여 패킷을 잡아보면 출발지 주소가 자기 랜카드의 MAC 주소, 도착지 주소는 브로드캐스트(255.255.255.255)이다. 예시로 192.168.0.0/24 환경에서 자신의 IP는 192.168.0.2이고, 192.168.0.10의 IP 주소를 가진 PC의 MAC 주소를 알려고 할 때 Info 부분에 "Who has 192.168.0.10? Tell 192.168.0.2" 라고 써 있는 것을 볼 수 있다. 이런 식으로 얻어온 ARP 정보는 ARP 테이블에 올라가는데, Microsoft Windows에서는 명령 프롬프트에 arp -a를 입력하면 볼 수 있다.

파일:Attachment/arp.png

ARP 테이블은 캐시 개념이라 일정 시간이 지나면 사라진다. 바로 ARP를 초기화 할 수 있는데, 명령 프롬프트에서 arp -d를 입력하거나 랜 케이블을 분리했다 다시 연결해 주면 ARP 테이블이 초기화된다. 잘 보면 현재 환경은 IP 주소가 172.16.119.0/24의 사설 IP 환경인데, 현재 VMware Host-only 네트워크라 게이트웨이가 없다. 하지만 실제 로컬 네트워크 환경에서는 게이트웨이마저 ARP 테이블에 동적으로 올라와 있게 되는데, 이로 인해 발생할 수 있는 상황이 ARP spoofing. 자세한 것은 해당 항목을 참고해 보자.

파일:Attachment/arp1.png
실제로 ARP 패킷을 캡처한 모습이다.

2 RARP

Reverse Adress Resolution Protocol
ARP와는 반대로 MAC 주소를 가지고 IP 주소를 알아내는 프로토콜이다. 중요한 건 DHCP나 BOOTP처럼 IP를 자동으로 할당해 주는 게 아니라 이미 다른 PC에 할당된 IP를 MAC 주소만을 가지고 알아오는 것이다. ARP와는 다르게 잘 쓰이지 않으므로 더 이상의 자세한 설명은 생략한다.

3 IPv6 에서의 동작

ND (Neighbor Discovery) 또는 NDP (Neighbor Discovery Protocol)

IPv6 에서도 동일하게 MAC 주소로 부터 IP 주소를 얻어 오는 기능이 필요하다. 다만, 이것은 ARP 라고 부르지는 않고, 대신 IPv6 ND (Neighbor Discovery) 또는 NDP(Neighbor Discovery Protocol) 이라고 부른다.

이에 대해서는 RFC 4861에서 설명되어 있다.

개념상으로 ARP 와 같은 동작을 하고 실제로도 유사하게 동작하지만, IPv6 구조에 따라 다르게 동작하는 부분도 많이 있다. NDP 는 ICMPv6 를 이용해서 동작한다.

참고로 윈도우와 리눅스에서는 각각 아래와 같은 명령으로 ipv6 neighbor 정보를 확인할 수 있다.

윈도우netsh interface ipv6 show neighbors [1]
리눅스ip -6 neigh show
이 문서의 내용 중 전체 또는 일부는 IP문서에서 가져왔습니다.</div></div>
  1. 정확한 명령어는 이것이 맞지만 축약해서 'netsh i ipv6 sh n' 라고만 쳐도 된다