ARP(Address Resolution Protocol)에 대해서는 아마도 많은 분들이 잘 알고 계실 것입니다.
IPoE(IP over Ethernet) 환경에서(현재 우리 모두가 사용하고 있는 환경이죠... L3 = IP, L2 = Ethernet) 상대방 호스트(PC/서버) 혹은 라우터의 MAC 주소를 알기 위해, 해당 노드(호스트/라우터)의 IP 주소를 타겟으로(ARP Request 패킷의 Target IP address 필드에 타겟 주소를 넣어서)하여 ARP 요청(ARP Request)을 보내고, 이를 수신한 호스트/라우터는 이에 대한 응답으로 자신의 MAC을 포함한 ARP Reply를 보냅니다 (아래 그림 참조).
그럼 Gratuitous ARP란 뭘까요?
Gratuitous ARP(이하 GARP라고 부를께요~)는 "자신의 IP 주소"를 타겟으로 하여 ARP 요청를 보내게 되는데요. 즉, 누군가의 MAC 주소를 알고자 하는 것이 목적이 아닙니다.
GARP의 사용 목적은 여러가지가 있겠지만 가장 대표적인 3가지 정도를 말씀드리겠습니다.
1) IP 주소 충돌 감지
"IP 주소 충돌"을 감지하기 위해 사용합니다. 호스트에서 자신의 IP 주소를 타겟으로 하여 ARP 요청을 보내고, 만약 다른 호스트에서 이에 대한 응답이 있다면 이미 해당 IP 주소를 사용하고 있는 호스트가 존재하고 있음을 알 수 있습니다. 이 경우 Windows는 "IP 주소가 충돌납니다~*"라고 화면에 띄어 주게 됩니다. (아래 그림)
여기서 잠깐! GARP와 약간의 차이가 있기는 하지만 Windows의 DHCP client도 IP 주소를 할당 받은 후 "IP 주소 충돌" 감지를 위해 ARP를 보냅니다. 이에 대해서 좀 더 상세하게 알고 싶으시면 넷매니아즈 기술문서, "DHCP 상세 동작 원리", 1~2 page 참조
2) ARP Table 갱신
나와 동일 서브넷 상에 존재하는 호스트/라우터의 ARP table(ARP cache라고도 부르는)을 갱신(refresh)하기 위해 사용됩니다. 즉, 누군가가 GARP 패킷을 보내면, 이를 수신한 모든 호스트/라우터는 GARP 패킷의 {Sender MAC address와 Sender IP address} 필드로 자신의 ARP table을 갱신하게 됩니다. (아래 그림)
3) VRRP/HSRP
VRRP/HSRP 프로토콜에서 사용됩니다. VRRP/HSRP가 enable된 라우터 중 Master에 해당하는 라우터는 자신과 연결된 L2 switch의 MAC address table 정보를 갱신(해당 MAC 주소에 대한 Port 정보 갱신)하기 위해 GARP를 사용합니다.
이에 대해서 좀 더 상세하게 알고 싶으시면 넷매니아즈 기술문서, "VRRP 상세 동작 원리", 5 page 참조
좋아요. 좋습니다.
어우 이해하기 너무쉽네요..ㅋㅋ 책보다가 막혀서 검색해보는데 감사합니다.
훌륭한 정보입니다.
좋은 정보 감사합니다~
거의 유일하게 한글로 된 GARP 특징 문서네요.
정말 많은 도움 되었습니다!!
2) ARP Table 갱신 목적으로 사용되는 경우, pcap 확인결과 opcode: reply(2)로(request가 아닌) 확인 되는데 맞는지요?^^
항상 좋은 정보 감사드립니다.
아래 2가지 패킷 수신시 ARP Table이 갱신됩니다.
1. ARP Reply
2. GARP Request (위 설명 글이 여기에 해당)
ARP Request 패킷을 수신한 호스트들은 target ip가 자신이 아니면 해당 패킷을 drop하는게 기본 동작이라면,
GARP패킷을 수신 받는 다른 호스트들에겐 target ip가 자신이 아닐텐데 해당 패킷이 GARP패킷인지는 어떻게 식별하나요?
(arp 패킷 포멧의 opcode에는 따로 GARP값은 없고 ,source ip 와 target ip가 동일한지 여부로 판단하는게 맞나요?)
좋은 내용 감사합니다. ^^
좋은 글 감사합니다.
GARP와 CARP는 무슨차이가 있나요 CARP의 개념을 못잡겠어서요..
https://en.wikipedia.org/wiki/Common_Address_Redundancy_Protocol
이중화프로토콜이라네요 HSRP, VRRP 랑 비슷하게 동작다고 합니다.