
RARP는 Host가 자신의 IP주소를 알지 못할 때, 자신이 사용할 수 있는 IP주소를 할당받으려고 사용한다.

예를 들어, 우리가 컴퓨터에서 IP 주소를 직접 적는 것이 아닌 이상 자동으로 컴퓨터가 IP를 할당받아 사용하게 되는데, 이때 RARP를 사용해서 자신의 IP주소를 받을 수 있다.
RARP 패킷의 형식과 프로토콜 순서는 다음과 같다.

형식은 ARP 패킷과 거의 동일하지만, Request에서 Sender의 Protocol address를 공란으로 비워두고 Target은 Broadcast 해야하므로 공란으로 비워서 Request하는 것이 특징이다.

역시 이 RARP 패킷도 Datalink의 Frame으로 들어가면 ARP처럼 캡슐화되어 들어가게 되고, Frame의 Type 부분에서 이 프레임이 RARP 프레임이라는 것을 명시해줄 수 있다.
그러나 이렇게 RARP를 통해 IP주소를 할당받아도 Host는 인터넷에 접속할 수 없다. RARP는 IP주소만 제공해주기 때문에 Subnet Mask값과 Default Gateway 정보를 Host는 알 수가 없어서 인터넷에 접속할 수 없다.
물론 RARP를 사용하고 다른 것들도 사용해서 다른 정보들을 가져올 수 있겠지만 이것 자체가 이미 오버헤드가 늘어나는 것이기 때문에 성능이 떨어진다.
그래서 이러한 필수적인 정보들을 한번에 줄 수 있는 방식을 사용하는 데 대표적인 방식이 바로 DHCP이다.

DHCP도 RARP처럼 DHCP Server를 두어 Host들이 동적으로 IP주소를 할당받을 수 있도록 한다. DHCP 프로토콜에 해당하는 메세지들은 다음과 같다.

여기 optional한 부분은 안 쓸 수도 있다. 예를 들어, host가 DHCP 서버의 주소를 알고 있고, 예전에 썼던 IP값을 그대로 쓰겠다고 요청하는 경우는 위에서 언급한 optional 요청들을 사용하지 않을 수 있다.
이런 DHCP는 RARP와 달리 IP주소, Mask값, first-hop router address(=Default gateway), DNS 주소 등을 한번에 알려줄 수 있다. 참고로 이 DHCP는 Application layer에서 사용하는 프로토콜이다.