ARP는 논리적 주소(IP주소)를 물리적 주소(MAC주소)로 변환하는 프로토콜이다.
ARP는 다음과 같은 상황에서 사용된다.
)
호스트A는 네트워크 전체에 IP 주소에 해당하는 MAC 주소를 물어보는 요청을 보낸다. (Broadcast)
본인의 IP주소에 대한 MAC 주소를 요청받은 호스트 B는 자신의 MAC 주소를 담아 응답을 보낸다.
호스트 A는 이 ARP의 정보를 담고 있는 저장소(ARP Cache)에 IP-MAC 주소 쌍을 저장하고, 일정시간이 지나면 이를 삭제한다.
이런 과정을 거쳐서 호스트 B의 MAC 주소를 알아내면, 호스트 A는 이더넷 패킷을 만들어 스위치로 전달한다. 스위치는 이더넷 패킷 속 MAC 주소를 확인하여 호스트 B에게 정보를 전달한다.
반대로 MAC 주소로 부터 IP 주소를 변환할 수도 있다. 이런 작업을 위해서는 RARP 서버를 필요로 하며, ARP 와 유사한 방식으로 진행된다.
호스트A 는 자신의 IP도 모르고, RARP 서버가 어디있는지도 모른다. RARP 패킷에 자신의 MAC 주소를 담아서 자신과 연결된 네트워크 전체에 RARP Request를 브로드 케스팅으로 보낸다.
RARP 서버가 이 요청을 받으면 호스트 A의 IP 주소를 담아 RARP 응답을 전송한다.
같은 네트워크에 속해있는 서로다른 호스트가 통신하기 위해서는 ARP를 통해서 IP 주소에 대한 MAC 주소를 알아내야한다.
하지만 이런 ARP Request는 네트워크 내에 위치한 모든 호스트에게 보내기 때문에 보안상 위험이 존재한다. 대표적인 방법으로 ARP 스푸핑을 통해서 공격자는 다른 두 호스트 사이에 주고 받는 데이터를 가로챌 수 있다.