ARP는 MAC주소를 모두에게 물어보고 응답을 받는 프로토콜이다.
Destination Address가 Host 혹은 Router일 수 있습니다.
논리 주소 logical address
3계층 이상부터 사용하는 논리적인 주소입니다.
물리 주소인 MAC 주소는 장소가 바뀌어도 바뀌지 않지만
논리 주소는 바뀝니다.
소프트웨어 상에서 구현되며, 전세계에 유일한 주소입니다.
논리 주소는 네트워크 상에서 IP 주소라 불립니다.
ARP란
Address Resolution Protocol 주소 결정 프로토콜
해당 IP주소(논리적 주소)에 맞는 MAC 주소(물리적 주소)로 가지고 오는 프로토콜입니다.
MAC 주소를 찾기 위해 3계층의 IP주소를 사용합니다.

ARP의 동작과정
request
1. 송신자(보내는 사람)는 target(받는 사람)의 IP주소를 알고 있다고 가정합니다.
만일 LAN이라면 IP주소를 알고있고, 다른 LAN으로 가기 위해 Router를 거친다면 DHCP라는 프로토콜을 통해 안다고 가정합니다.
2. IP는 ARP에게 ARP 요청 메세지 패킷 생성을 요청합니다.
3. Data Link 계층에 전달되면 Source Address는 송신자의 물리주소, Destination Address는 Broadcast 방식으로 모두에게 전달하기 위한 ff:ff:ff:ff:ff:ff broadcast 주소로 frame을 캡슐화합니다.
response (reply)
4. 모든 host나 router가 frame을 수신하여 자신의 ARP에 전달합니다.
5. target system은 자신의 물리 주소를 포함한 ARP reply 패킷을 Unicast 방식으로 송신합니다.
6. 송신자는 응답 메세지를 받고 target system의 물리 주소를 알게됩니다.
같은 LAN 안에서 ARP 동작
Client A가 datagram을 B에게 보내고 싶은데
B에 대한 MAC 주소를 A가 모릅니다. ARP table이 존재하지 않습니다.
이 떄 broadcasts 방식으로 모두에게 Query packet을 보내서 질문합니다.
B는 이 패킷을 받고 자신의 주소를 적어 A에게 응답합니다.
이 MAC 주소를 ARP 단계에서 ARP table에 정보를 저장합니다.

다른 LAN으로 Routing을 거쳐야 할 때 네트워크 동작
Client A가 datagram을 Naver에게 보내고 싶을 때
DNS에 의해서 마치 query packet을 보내듯이 Naver의 IP주소를 물어봅니다.
이후 바로 옆에 있는 라우터의 주소를 모릅니다.
이때 A 옆에 있는 첫번째 라우터인 first Router의 IP 주소를 DHCP에 의해 안다고 가정하고 진행합니다.
DHCP는 추후에 설명할 예정입니다.
또한 A 옆에 있는 첫번째 라우터인 first Router의 MAC 주소를 ARP에 의해 추정합니다.

ARP 패킷 분석
WireShark을 이용해 ARP 패킷을 분석 해보았습니다.

다음과 같이 Source Address와 Destination IP Address를 아는 상태에서 이것의 MAC 주소를 알아내기 위해
ARP를 거쳐 ARP request packet를 만들어 Broadcast 방식으로 보냅니다.
이후 Wi-Fi 모듈이 이를 받아 MAC주소를 실어 보냅니다.
Who has 는 이 주소를 누가 가지고 있는지 물어보는 것이고
is at은 이 IP주소를 가진 시스템의 MAC 주소를 보여줍니다.

Ethernet 2의 frame인 destination, source, type과 밑의 data가 담겨있습니다.

frame의 data 안에는 그 윗 계층인 3계층의 ARP datagram이 담겨있습니다.
현재 아직 request packet이므로 target의 mac 주소는 0으로 채워져있습니다.
참조
대학교 네트워크 프로토콜 강의
ARP(Address Resolution Protocol)란? - 개념과 동작원리
ARP 란? 주소 결정 프로토콜(Address Resolution Protocol) 해당 IP를 그 IP주소에 맞는 물리적인 주소 즉, MAC주소를 가지고 오는 프로토콜입니다. RARP : 역순 주소 결정 프로토콜 (Reverse Address Resolution..
musclebear.tistory.com
'CS > Network' 카테고리의 다른 글
| [Network] DHCP (0) | 2022.10.18 |
|---|---|
| [Network] IP (0) | 2022.10.14 |
| [Network] DNS (0) | 2022.10.11 |
| [Network] Ethernet (0) | 2022.09.29 |
| [Network] OSI Model, TCP/IP Layer (0) | 2022.09.06 |