OSI 7계층 중 2,3 계층이 주소를 가지고 있고, 통신할 때 목적지를 찾아갈 수 있도록 하지만 사실 2계층 MAC 주소와 3계층 IP 주소 간에는 아무 관계가 없다.
실제로 통신은 IP 주소 기반으로 일어나는데 MAC 주소는 상대방의 주소를 자동으로 알아내 통신하게 된다. (잘 생각해보면 요청이 들어올때는 MAC에 대한 정보가 없다.)
상대방의 MAC 주소를 알아내기 위해 사용하는 프로토콜이 ARP 이다.
통신을 시도할 때 출발지와 목적지 IP 주소는 미리 알고 있어 캡슐화하는데 문제가 없지만 상대방의 MAC 주소를 알 수 없어, 2계층 캡슐화를 수행할 수 없다
상대방의 MAC 주소를 알아내려면 ARP 브로드캐스트를 이용해 네트워크 전체에 상대방의 MAC 주소를 질의해야 한다.
ARP 브로드캐스트를 받은 목적지는 ARP 프로토콜을 이용해 자신의 MAC 주소를 응답한다. (자신이 아니면 ARP 패킷을 버린다.)
이 작업이 완료되면 출발지, 목적지 둘 다 상대방에 대한 MAC 주소를 학습하고 이후 패킷이 정상적으로 인캡슐레이션되어 상대방에게 전달될 수 있다.
패킷을 보낼 때마다 ARP 브로드캐스트를 수행하면, 네트워크 통신의 효율성이 크게 저하되므로 메모리에 이 정보를 저장해두고 재사용한다. 성능 유지를 위해서는 ARP 테이블을 오래 유지하는 것이 좋지만 논리 주소는 언제든지 바뀔 수 있으므로, 일정 시간 동안 통신이 없으면 이 테이블은 삭제된다.
참조
IT 엔지니어를 위한 네트워크 입문
https://xyom.github.io/2018/01/08/ARP%E1%84%85%E1%85%A1%E1%86%AB/