ARP (Address Resolution Protocol)
프로토콜이란, 소프트웨어적으로 할당된 논리 주소인IP 주소
(L3, 네트워크 계층)를 실제적인 물리 주소인MAC 주소
(Media Access Control /L2, 데이터링크 계층)로 바꾸어주는 역할을 하는 '주소 해석 프로토콜'을 의미합니다.
반대로 MAC 주소를 가지고 IP 주소를 알아내는 프로토콜은
RARP 프로토콜
이라고 합니다.
두 단말간 통신을 할 때에는 기본적으로 각각의 LAN 카드에 할당되어 있는 고유한 실질적인 물리 주소 (MAC 주소)를 통해 결국 데이터가 전달되게 됩니다. 그 이유는 MAC 주소가 시리얼 번호와 같이 전 세계에서 유일한 실제 목적지의 주소이며, 이를 바탕으로 OSI 7계층
또는 TCP/IP 4
계층의 표준화된 모델에 따라 그렇게 통신을 하기로 약속했기 때문입니다.
OSI 7계층 | TCP/IP 4계층 | |
---|---|---|
응용 (Application) | ||
표현 (Presentation) | HTTP, FTP, SSH | 응용 (Application) |
세션 (Session) | ||
-------------------------------------------------- | ----------------- | -------------------------------------------------- |
전송 (Transport) | TCP/UDP | 전송 (Transport) |
-------------------------------------------------- | ----------------- | -------------------------------------------------- |
네트워크 (Network) | IP | 인터넷 (Internet) |
-------------------------------------------------- | ----------------- | -------------------------------------------------- |
데이터 링크 (Data Link) | ||
MAC | 네트워크 인터페이스 (Network Interface) | |
물리 (Physical) |
ARP 프로토콜이 동작하는 경우는 크게 통신하고자 하는 두 단말이 같은 네트워크에 있을 때와 다른 네트워크에 있을 때로 나눌 수 있습니다.
같은 네트워크 내에 있는 단말들의 MAC 주소는 중계 장치가 MAC 주소 테이블 정보를 저장하고 관리하고 있으므로 내부에서 단말들이 MAC 주소를 가지고 통신을 할 수 있게 됩니다.
단말(A) | <---------->네트워크 스위치<----------> | 단말(B) |
---|---|---|
IP 주소: 10.0.0.1/24 | IP 주소: 10.0.0.2/24 | |
MAC 주소: 00:11:BB:00:00:AA | MAC 주소: 00:11:BB:00:00:BB |
1) A가 B와 통신하기 위해 같은 네트워크 대역에 ARP 요청을 브로드캐스트(Broadcast) 방식 (A 단말이 전송한 데이터가 네트워크에 연결된 모든 단말에 전송)으로 B의
10.0.0.2/24 IP 주소
를 가진 단말이 있는지 물어봅니다. (IP 주소와 MAC 주소를 비교해서 확인 해달라는 요청) A는 상대방 B의 MAC 주소를 모르기 때문에 MAC 주소는 일단 기본 게이트웨이(FF:FF:FF:FF:FF:FF)
로 기록합니다.
2) 네트워크 스위치 장비는 A의
MAC 주소(00:11:BB:00:00:AA)
를 자신의 MAC 주소 테이블에 저장합니다. (저장되어 있지 않은 경우)
3) 네트워크 스위치 장비가 ARP 요청을 받고나서 자신이 가지고 있는 MAC 테이블에 B의 IP 주소
10.0.0.2/24
에 대한MAC 주소(00:11:BB:00:00:BB)
가 저장되어 있다면, A에게 B의 IP 주소10.0.0.2/24
의MAC 주소(00:11:BB:00:00:BB)
를 알려줍니다.
4) 네트워크 스위치 장비가 ARP 요청을 받고나서 자신이 가지고 있는 MAC 테이블에 B의 IP 주소
10.0.0.2/24
의MAC 주소 (00:11:BB:00:00:BB)
가 저장되어 있지 않다면, 반대편의 B까지 ARP 요청이 전달됩니다. 이후 B는 ARP 요청을 받은 다음 자신의 IP 주소가 목적지에 기록되어 있음을 확인한 후 자신의MAC 주소(00:11:BB:00:00:BB)
를 알려주는 응답을 합니다. 이후 네트워크 스위치는 B의MAC 주소(00:11:BB:00:00:BB)
를 MAC 주소 테이블에 저장합니다.
5) A는 마침내 전달 받은 B의
MAC 주소(00:11:BB:00:00:BB)
를 확인하고 B와 통신을 시작합니다.
같은 네트워크에 있는 중계 장비의 MAC 주소 테이블에 존재하지 않는 다른 네트워크 대역에 있는 단말과 통신을 해야 하는 경우, IP 주소를 이용하여 통신하게 되므로 ARP 프로토콜을 통해 IP 주소와 MAC 주소 간 변환을 통해 통신을 하게 됩니다.
단말(A) | <--네트워크 스위치--> | <---->라우터<----> | <--네트워크 스위치--> | 단말(B) |
---|---|---|---|---|
IP 주소: 10.0.0.1/24 | A (MAC 주소) 00:00:00:00:RR:00 | IP 주소: 10.0.0.2/24 | ||
MAC 주소: 00:11:BB:00:00:AA | B (MAC 주소) 00:00:00:00:RR:01 | MAC 주소: 00:11:BB:00:00:BB |
1) A가 B와 통신하기 위해 같은 네트워크 대역에 ARP 요청을 브로드캐스트(Broadcast) 방식으로 B의
20.0.0.1/24 IP 주소
를 가진 단말이 있는지 물어봅니다. (IP 주소와 MAC 주소를 비교해서 확인해달라는 요청)A는 상대방 B의 MAC 주소를 모르기 때문에 MAC 주소는 일단 기본 게이트웨이(FF:FF:FF:FF:FF:FF)
로 기록합니다.
2) 라우터는 해당 ARP 요청을 받고 (목적지가 게이트웨이의 MAC 주소이므로) 목적지 B의 IP 주소가 같은 네트워크에 있지 않기 때문에 같은 네트워크 대역대에 있는 라우터 자신의 인터페이스
MAC 주소(00:00:00:00:RR:00)
로 응답해줍니다.
3) A는 B와 통신하기 위해 다시 라우터에게 B의 목적지
IP 주소 20.0.0.1/24
와 같은 네트워크 대역의 라우터 인터페이스MAC 주소(00:00:00:00:RR:00)
를 목적지로 ARP 요청을 보냅니다.
4) 라우터는 해당 네트워크 대역까지 패킷을 보냅니다.단, 라우터도 목적지 B의 MAC 주소를 모르므로 해당 네트워크 대역대에 Broadcast 메세지로
20.0.0.1/24 IP 주소
를 가진 단말이 있는지 물어봅니다.
5) B 단말이 자신의 IP 주소가 목적지로 되어 있는 패킷을 보고 라우터에게 자신의
MAC 주소(00:11:BB:00:00:BB)
를 포함하여 응답합니다.
6) 이 후 라우터를 통해 A와 B가 통신을 시작합니다.
- MAC 주소를 어렵게 얻어왔으므로, 각 단말은 방금 통신한 IP 주소의 MAC 주소를 일정 시간 동안 보관하여 활용합니다. 이를 ARP캐시(Cache)라고 합니다.