1. 정의
송신 호스트가 수신 호스트의 IP 주소는 알지만, MAC 주소는 모를 때, 해당 MAC 주소를 알아내는 것이 목적인 네트워크 계층 프로토콜이다. (
ARP = Address Resolution Protoocol)2. 구성 요소
- ARP 테이블
- ARP 패킷
(1) ARP 테이블
IP 주소와 그에 해당하는 MAC 주소가 대응하는 표를 뜻한다.
IP 주소와 MAC 주소를 대응시켜 메시지를 송신해야 하는 네트워크 계층 이상의 장비는 모두 ARP 테이블을 가지고 있다. 예를 들어 호스트(PC, 노트북, 테블릿) 혹은 라우터 등이 ARP 테이블을 가지고 있다.
(2) ARP 패킷
ARP 프로토콜 대로 IP에 해당하는 MAC 주소를 알아오는 ARP의 PDU이다. 응답값으로 송신지 호스트가 알고 싶어 하던 수신지의 MAC 주소가 IP 주소랑 함께 적혀있다.
오퍼레이션 코드
: 해당 ARP 패킷이 요청 패킷인지 응답 패킷인지를 구분하는 필드이다.
(해당 패킷이 ARP 요청 패킷이면 1, 응답 패킷이면 0이 적혀있다.)
송수신지 하드웨어 주소
: 각각 송신지와 수신지의 MAC 주소가 적혀 있다.
송수신지 프로토콜 주소
: 각각 송수신지의 IP 주소가 적혀 있다.
3. 작동 원리
- 본 메시지 전송과 ARP 실행 순서 관계
- 같은 LAN에 속한 수신지 호스트의 MAC 주소를 찾을 때
- 다른 LAN에 속한 수신지 호스트의 MAC 주소를 찾을 때
(0) 본 메시지 전송과 ARP의 실행 순서 관계
ARP를 본 메시지 전송보다 선행해서 실행메시지를 보내려고 해도, 수신지의 MAC 주소를 모르면, 이더넷 프레임을 만들 수가 없어서 메시지를 보낼 수가 없다. 따라서 본 메시지 전송 전에 ARP를 활용해 수신지의 MAC 주소를 알아내는 작업이 선행되어야 한다.
(1) 같은 LAN 내의 수신 호스트 MAC을 찾을 때
L2 스위치가 MAC 주소 테이블 채우는 과정과 원리가 같다. 같은 LAN에 있을 때는 다음과 같은 3가지 과정을 거쳐 수신지의 MAC 주소를 찾아낸다.- ARP 요청
- ARP 응답
- 1번 송신 호스트의 ARP 테이블 갱신
A라는 호스트가 '10,0,0,2' 라는 IP 수신지(이하 B)에 메시지를 보내고 싶은데, MAC 주소를 모르는 상황이라고 생각해보자.
A. ARP 요청
A가 10.0.0.2 IP 수신지의 MAC 주소를 찾기 위해 LAN에 속한 모든 호스트에게 브로드 캐스트로 ARP 요청 메시지를 전송한다.
B. ARP 응답
메시지를 받은 호스트 중 당사자에 해당하는 B만 ARP 응답 메시지에 자신의 MAC 주소를 적어서 반환한다. 이를 A가 다시 전달 받는다. (나머지 호스트는 자신에게 온 메시지가 아니므로 ARP 요청 패킷을 폐기한다.)
C. ARP 테이블 갱신
A는 응답 메시지를 토대로 자신의 ARP 테이블을 새로 갱신한다.
(2) 다른 LAN에 속한 수신 호스트의 MAC 주소를 찾을 때
위의 그림에서 원안에 든 구성원 끼리 동일 LAN에 속한다. 라우터는 LAN과 LAN 사이를 연결하는 역할을 하며, WAN은 여러 개의 LAN이 합쳐진 것이다.
송신 호스트 A에서 수신 호스트 B에 가기까지 거치는 모든 노드들 사이에서 수신 노드의 MAC 주소를 모를 떄마다 ARP를 반복한다.
- A가 라우터 Z에게 메시지를 보내려고 하는데 라우터 Z의 MAC 주소가 없다. -> ARP 해서 라우터 Z의 MAC 주소 채운 후 본 메시지 전송
- 라우터 Z가 라우터 Y에게 메시지를 보내려고 하는데, 라우터 Y의 MAC 주소가 없다. -> 똑같이 ARP 해서 라우터 Y의 MAC 주소 채운 후 본 메시지 전송
부록
A. 모르는 것 정리
ARP 요청 패킷의 수신지에는 뭐가 적혀 있을까?
ARP 요청 패킷의 경우, 해당 패킷을 페이로드로 담은 이더넷 프레임의 '수신지 MAC 주소' 에는 브로드 캐스트를 나타내는 'ff:ff:ff:ff:ff:ff'가 적혀있고, ARP 패킷 내부의 '수신지 하드웨어 주소' 에는 '00:00:00:00:00:00' 이 적혀있다.
⬅️ 이전 글
➡️ 다음 글