OSI 7계층의 Network Layer에는 주소를 알아내기 위한 ARP, GARP, RARP 프로토콜이 존재한다.
ARP는 Address Resolution Protocol의 약자로 네트워크 계층의 주소 결정 프로토콜이다.
네트워크 상에서 IP주소를 MAC주소로 대응 시키기 위해 사용된다.
IP주소 체계는 MAC 주소와 전혀 연관성이 없으므로 두개의 주소를 연계시켜 주어야한다.
이때 연계시키는 방식이 IP 주소를 통해 MAC 주소를 알아내 대응시키기 때문에 'IP로 MAC을 알아내는 프로토콜이다~' 라고도 할 수 있다.
예를 들어 host A가 host B에게 데이터를 전송하고자 하는데 host B의 MAC 주소를 모른다면, ARP 프로토콜을 사용하여 host B의 MAC 주소를 알아낸 후 데이터를 전송한다.
ARP의 대략적인 동작 방식은 네트워크망 내의 모든 host에게 브로드캐스트 로 패킷을 보내면 목적지가 해당 패킷에 자신의 MAC 주소를 실어서 유니캐스트 로 응답하고 ARP는 이 정보를 테이블에 저장한다. (목적지가 아닌 다른 호스트는 패킷을 버린다.)
ARP 테이블
➕arp -a
명령어를 통해 해당 PC의 ARP 테이블 정보를 확인 할 수 있다.
- 패킷을 보낼 때마다 ARP 브로드캐스트를 수행하면 네트워크 통신의 효율성이 크게 저하될 수 있다. 이로 인해 메모리에 이 정보를 저장해두고 재사용하는 것이다.
- ARP 성능을 위해서는 테이블 정보를 오래 유지하는 것이 좋지만 IP주소는 언제든지 변경될 수 있으므로 일정 시간 동안 통신이 없으면 이 테이블은 삭제된다.
ARP Request 메시지 : 송신자 MAC(자신), 송신자 IP(자신), 수신 MAC(00-00-00-00-00), 수신자 IP 정보
1. 목적지 IP 주소가 일치하는 시스템은 자신의 MAC 주소를 프레임에 담아 ARP Reply 메시지를 보낸다. (유니캐스트)
1. 송신측의 ARP 프로토콜은 Reply 메시지를 수신하여 수신자의 MAC 주소를 테이블에 저장한다.
ARP 외에도 ARP 프로토콜의 필드를 그대로 사용하지만 내용을 변경해 원래 ARP의 목적과 다른 용도로 사용하는 프로토콜이 있다.
GARP와 RARP가 대표적이다.
GARP는 Gratuitous Address Resolution Protocol의 약자로 자신의 IP와 MAC주소를 알리는 목적으로 사용된다.
GARP 패킷을 살펴보면
정보를 넣어 네트워크에 브로드캐스트한다.
GARP를 사용하는 이유는 아래의 3가지이다.
같은 네트워크 망 안에서 IP 주소 충돌을 방지하기 위해서 이미 사용되고 있는지 GARP를 통해 확인할 수 있다.
만약 GARP에 대한 응답이 오면 'IP 주소 충돌'과 관련된 에러메시지를 사용자에게 알려준다.
GARP의 두 번째 사용 목적은 같은 네트워크 망 내부에 존재하는 단말들의 ARP 테이블을 갱신하는 것이다.
가상 MAC을 사용하는 클러스터링, VRRP, HSRP와 같은 FHRP (Fisrt Hop Redundancy)에도 GARP가 사용된다.
'상대방 ARP 테이블 갱신'은 단말의 ARP 테이블을 갱신하는 것이 목적이였던 반명, 이것은 네트워크에 있는 스위치 장비의 MAC 테이블 갱신이 목적이다.
RARP는 Reverse Address Resolution Protocol의 약자이다.
ARP의 반대로 동작하는 것인데 ARP 프로토콜 구조는 같지만 필드의 내용이 다르고 원래 목적과 반대로 사용된다.
❓ RARP는 과거에 네트워크 호스트의 주소 할당에 사용되었지만 제한된 기능으로 인해 BOOTP와 DHCP로 대체되었다고 한다.
💡 BOOTP와 DHCP 차이점