ARP (Address Resolution Protocol) 정의
논리적 주소(IP Address)를 기반으로 물리적 주소(MAC Address)를 알아오는 프로토콜이다. ARP는 Layer 2계층 이더넷 환경에서 목적지 IP주소에 대한 MAC주소 변환 동작을 담당한다. 단 목적지 MAC주소 정보가 없다면, ARP주소 변환이 불가능하기 때문에 데이터를 전송할 수 없다. 쉽게 말해 IP -> MAC, MAC -> IP 이렇게 바꿔주는 역할을 한다는 뜻이다. 상대방은 MAC 주소가 없는 패킷을 받으면 2계층 (Datalink-Layer)에서 폐기해버린다. 때문에 상대방의 MAC주소를 알아야 프레임이 만들어져서 통신을 할 수 있게 된다.
※ IP -> MAC으로 변환 할 때를 ARP라고 하고, MAC -> IP로 변환 할 때 RARP라고 한다.
ARP : IP는 아는데 MAC주소를 모를 때 사용한다.
RARP : IP 호스트가 자신의 물리적 주소(MAC)은 알지만 논리적 주소(IP) 주소를 모르는 경우 서버로부터 IP 주소를 요청하기 위해 사용한다.
Hardware Type : 이 필드에는 네트워크 유형에 대한 정보가 있다.
Protocol Type : 이 필드에는 프로토콜에 대한 정의가 있다.
Hardware Length : 여기에는 MAC 주소의 길이가 들어간다.
Protocol Length : 여기에는 IP 주소의 길이가 들어간다.
Operation : 이 필드에는 이 패킷이 요청인지 응답인지가 들어가 있고, 이때 요청일 경우에는 1, 응답일 경우에는 2가 들어가게 된다.
Sender Hardware address : 송신원(출발지)의 MAC주소가 들어있다.
Sender Protocol address : 송신원(출발지)의 IP주소가 들어있다.
Target hardware address :송신지(목적지)의 MAC주소가 들어있다.
Target Protocol address : 송신지(목적지)의 IP주소가 들어있다.
ARP 확인하는 방법
명령 프롬포트 화면에서 arp -a 를 입력하면 ARP테이블 결과를 볼 수 있다.
ARP의 필요성
- 송신자는 목적지(수신자)의 IP주소를 알고 있다.
- IP 데이터그램을 프레임으로 캡슐화하여 전송하려고 한다.
- 그러나 프레임 헤더에는 물리주소가 들어가야 하는데 물리주소를 모른다.
- 따라서, IP주소를 이용하여 물리주소를 알아내는 방법이 필요하게 되었다.
ARP의 동작원리
- 송신자는 목적지 물리주소가 필요하므로, 물리주소 요청을 위한 ARP요청 패킷을 브로드캐스트로 전송. (브로드캐스트를 하는 이유는 목적지의 물리주소를 모르므로 모두에게 요청함.) (요청 패킷에는 수신자가 수신자 주소를 응답할 때 필요한 송신자 주소가 포함)
- 모든 호스트와 라우터는 송신자가 보낸 ARP 요청 패킷을 수신함.
- 해당되는 수신자만 자신의 논리주소와 물리주소를 넣어 응답 패킷을 유니캐스트로 전송.
ARP 동작과정
ⅰ. 송신자는 목적지 IP주소는 알고 있으나, 물리주소는 모름.
ⅱ. 물리주소를 알아내기 위해 ARP 요청 메시지 생성.
= ARP 요청 메시지 (송신자 물리주소, 송신자 IP주소, 00-00-00-00-00, 수신자 IP주소)
ⅲ. 요청메시지를 데이터링크 계층으로 전달, 프레임 생성.
= 송신자 물리주소를 발신지 주소, 수신자 물리주소를 브로드캐스트 주소로 지정
ⅳ. 모든 호스트나 라우터는 이 프레임을 수신하여 자신의 ARP로 전달.
ⅴ. 요청 메시지에 해당되는 호스트나 라우터만 ARP응답 메시지 생성.
= 자신의 물리주소를 포함하는 응답 메시지
ⅵ. ARP 응답메시지를 유니캐스트로 ARP 요청 메시지를 보낸 송신자에게 전송.
= 유니캐스트를 이요오하는 이유는 송신자가 요청메시지에 물리주소를 포함했기 때문
ⅶ. 송신자는 ARP 응답메시지를 받고 목적지 물리주소를 획득
ⅷ. 목적지에게 전송할 IP데이터그램을 획득한 물리주소를 이용해 프레임으로 캡슐화
ⅸ. 캡슐화된 프레임을 유니캐스트로 목적지로 전송