본문으로 바로가기

상대방의 MAC 주소를 알아내기 위해 사용되는 것이 ARP 프로토콜입니다. 

로컬 네트워크에서는 ARP 브로드캐스트를 이용해 도착지 MAC 주소를 학습할 수 있고, 직접 통신할 수 있습니다.

 

여기서는 중요하지 않지만 원격 네트워크 통신에서는 네트워크 내부 전체 호스트에게 요청을 날리는 브로드캐스트가 닿지 않아 별도의 장비가 필요하게 됩니다. 이건 나중에 알아보도록하고, 우선은 로컬 네트워크 간에 통신을 가능케하는 ARP 프로토콜을 알아보도록합시다.

 

ARP 프로토콜이 왜 필요한가?

처음 통신을 하려고 하면 요청을 보내는 측은 자신의 IP, MAC 주소와 상대방의 IP 주소는 알고 있지만 상대방의 MAC 주소를 모르고 있습니다. 2계층의 MAC 주소와 3계층의 IP 주소는 아무런 관련이 없기 때문에 상대방 IP 주소를 알고 있다고 해도 MAC 주소를 계산 내지는 유추할 수 없는 것이죠. 따라서 어떻게 해야 한다? 상대방에게 물어봐야 합니다.

 

상대방의 MAC 주소를 알기 위해서는 ARP 브로드캐스트를 이용하여 네트워크 전체에 상대방의 MAC 주소를 질의합니다. ARP 브로드캐스트를 받은 목적지는 ARP 프로토콜을 이용하여 자신의 MAC 주소를 보내줍니다.

 

이 과정을 마쳐야 비로소 요청을 보내는 측은 상대방의 MAC 주소를 캡슐화하여 상대방에게 요청을 보내게 됩니다.

 

 

* ARP 테이블

 

브로드캐스트는 모든 곳에 '방송' 하듯이 요청하는 것인데, 당연히 비용이 많이 소요됩니다.

각 호스트가 네트워킹을 할 때마다 매번 이런 요청을 먼저 보내야 한다면 비효율적일 것입니다.

따라서 ARP 프로토콜을 통해 얻은 상대방 MAC 주소는 잠시 ARP 테이블에 보관해두었다가, 일정 시간 이상 통신하지 않으면 지워집니다.

 

이 ARP 테이블을 직접 보고 싶으시다면 아래와 같은 명령어로 확인할 수 있습니다.

arp -a // window, linux, mac

 

 

* GARP는 또 무엇인가

 

ARP 프로토콜 필드를 그대로 사용하지만 내용을 변경하여 다른 목적으로 사용하는 또 다른 프로토콜이다.

GARP는 Gratuitous ARP로, 대상자의 IP 자리에 자신의 IP를 넣고, 대상 MAC 주소는 00:00:00:00:00:00으로 채워서 네트워크에 브로드캐스트합니다. 결국에 네트워크 범위 내의 호스트들에게 자신의 IP와 MAC 주소를 알릴 목적으로 사용됩니다.

 

왜 이런 일을 할까요?

1) IP 충돌을 감지, 2) 상대방 ARP 테이블 감지, 3) HA 고가용성 용도의 클러스터링, VRRP, HSRP를 위해 사용됩니다.

 

 

* RARP는 또 무엇인가 => 이제 안 쓴다.

 

Reverse ARP로, IP가 정해져 있지 않은 단말이 IP를 할당해 달라고 요청할 때 사용합니다.

그런데 이 프로토콜은, DHCP와 같은 자동 IP 할당이 사용되면서 이제는 사용되고 있지 않습니다.

 

 

 


darren, dev blog
블로그 이미지 DarrenKwonDev 님의 블로그
VISITOR 오늘 / 전체