본문 바로가기

CS/Network

ARP (Address Resolution Protocol)

728x90

목차

01 _ ARP (Address Resolution Protocol) 이란?

02 _ ARP Cache Table

03 _ ARP Request & Reply 흐름

04 _ ARP Request & Reply with 내부 네트워크

05 _ ARP Request & Reply with 외부 네트워크

 

 


 

 

01 _ ARP (Address Resolution Protocol) 이란?

ARP는 Address Resolution Protocol의 약자로, 주소 결정 프로토콜이라 불립니다. ARP는 네트워크 상에서 논리적 주소인 IP 주소를 물리적 주소인 MAC 주소에 대응시키기 위해 사용됩니다. 통신을 처음 시작할 때, 목적지의 MAC 주소를 모르는 상태에서 MAC 주소를 알아내기 위해 사용하는 프로토콜입니다. 네트워크에서 2 계층과 3 계층 사이에 있는 프로토콜입니다. RARPReverse Address Resolution Protocol의 약자로, 역순 주소 결정 프로토콜입니다. 이는 ARP와 달리, 물리적 주소인 MAC 주소를 논리적 주소인 IP 주소로 변환하는 프로토콜입니다.

ARP가 필요한 이유IP 주소와 MAC 주소로만 통신할 수 없기 때문입니다.

IP 주소는 인터넷에 연결된 호스트나 라우터 장비의 인터페이스에 할당된 주소입니다. 다시 말해, 네트워크에 할당된 주소이기 때문에 특정 PC에 접근할 수  없습니다. IP 주소를 통해 특정 PC의 네트워크까지만 접근할 수 있습니다. 따라서, PC에 접근하기 위해서는 목적지인 PC의 MAC 주소를 알아내야 합니다. 또한, IP 주소는 네트워크에 할당된 주소이기 때문에 가변적인 성질을 가지고 있습니다. 그러므로 불가변적인 주소인 MAC 주소를 알고 이어야 정확히 통신이 가능합니다.

반대로 MAC 주소만 가지고 있다면 충분히 통신이 가능하다고 생각할 수 있습니다. 물론, MAC 주소를 안다면 특정 PC에 접근은 가능합니다. 하지만 불가변적인, 즉 고유번호와 같은 MAC 주소로 통신한다고 하면 라우터는 통신할 수 있는 모든 PC의 MAC 주소를 모두 등록해야합니다. 따라서 라우터의 저장 공간의 문제로, 이러한 비효율적인 방식을 취하지는 않습니다.

그러므로 여러대의 PC를 묶어 IP주소를 만들고 MAC주소를 거치게 되는 ARP가 탄생하게 되었습니다.

 

 


 

 

02 _ ARP Cache Table

# arp
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.0.1              ether   90:9f:33:b2:ef:08   C                     eth0
192.168.0.4              ether   1c:23:2c:8c:6c:99   C                     eth0

위는 ARP Cache Table의 예시입니다. 첫 번째 열에 해당하는 Address는 IP 주소를 의미하며, 세 번째 열에 해당하는 HWaddress는 MAC 주소를 의미합니다. 따라서 192.168.0.1의 IP 주소는 90:9f:33:b2:ef:08의 MAC 주소에 맵핑되어 있다는 것을 확인할 수 있습니다. 정리하면, IP 주소와 MAC 주소가 서로 맵핑되어 있는 테이블을 ARP Cache Table이라 합니다.

 

 


 

 

03 _ ARP Request & Reply 흐름

 

ARP 흐름에 대해 간단히 살펴봅시다.

ARP의 동작 방식은 크게 두 가지로, ARP RequestARP Reply로 나뉩니다. ARP Request는 ARP를 요청하는 것입니다. 송신자에서 목적지의 MAC 주소를 알아내기 위해, Broadcast 방식으로 요청을 보냅니다. 여기서 Broadcast 방식이란, 모든 호스트 및 라우터에게 접근하는 것 입니다. 반대로 ARP Reply는 ARP에 대한 응답입니다. 목적지의 MAC 주소를 알아내었으면, 알아낸 MAC 주소를 송신자에게 전달하는 것입니다. 이때는 Unicast 방식으로 전달하며, 그 이유는 송신자에게만 전달하는 것이므로 하나의 단말에만 접근해도 되기 때문입니다. 

위의 그림으로 설명을 하자면, 왼쪽 네모를 송신자 오른쪽 네모를 목적지라고 가정합시다. 송신자는 본인의 IP 주소와 MAC 주소, 그리고 목적지의 IP 주소만 알고 있습니다. 따라서 목적지의 MAC 주소는 모르므로, 00:00:00:00:00:00으로 테이블을 채운 후 ARP Request를 보냅니다. 목적지는 본인의 MAC 주소인 22:22:22:22:22:22를 테이블에 채워 넣은 후 ARP Reply를  통해 송신자에게 응답을 합니다.

 

 


 

 

04 _ ARP Request & Reply with 내부 네트워크

04 _ 01 _ 송신자와 목적지 설정

초록색 네모 표시가 된 것이 송신자, 빨간색 네모 표시가 된 것이 목적지입니다.

다시 말해, IP 주소가 192.168.10.193인 초록색 PC는 IP 주소가 192.168.10.173인 빨간색 PC와 통신하길 원합니다. 그러기 위해서는 빨간색 PC의 MAC 주소에 대해 알아내야 합니다.

따라서 초록색 PC (192.168.10.193)에서 192.168.10.173으로 ping 을 보냅니다.

이때 ARP 케시 테이블은 다음과 같으며, 현재 목적지에 대한 IP 만 있을 뿐 MAC 주소는 기본값으로 처리된 것을 확인할 수 있습니다.

Destination Address
ff-ff-ff-ff-ff-ff Broadcast
Source Address
bc-5f-f4-34-76-99
Type

08 06 (ARP)
Hardware Type Protocol Type H/W Add Length Protocol Length OP
00 01 (Ethernet) 08 00 (IP) 06 04 00 01 (request)
Source MAC Address Sender IP
bc-5f-f4-34-76-99 c0 a8 0a c1 (192.168.10.193)
Destination MAC Address Destination IP
00 00 00 00 00 00 (의미없음) c0 a8 0a ad (192.168.10.173)

 

04 _ 02 _ ARP Request 

 

송신자 PC (192.168.10.193)는 ARP Request를 보냅니다.

스위치를 통해 브로드 캐스트로 ARP Request 패킷을 모든 호스트 및 라우터에게 전달합니다.

 

 

04 _ 03 _ ARP Reply

전달된 ARP Request 패킷에는 목적지 IP에 대한 정보가 있습니다.

따라서 목적지인 192.168.10.173 PC를 제외한 호스트 및 라우터는 요청받은 ARP Request 패킷을 버립니다.

목적지인 192.168.10.173 PC는 자신의 MAC 주소를 ARP Cache Table에 담아 ARP Reply 패킷을 보냅니다.

이때 ARP Reply 패킷은 처음 송신자인 192.168.10.193 PC 에게만 전달되며, 유니캐스트 방식으로 전달됩니다.

업데이트된 ARP Cache Table은 다음과 같으며, 목적지의 MAC 주소 정보가 업데이트된 것을 확인할 수 있습니다.

Destination Address
bc-5f-f4-34-76-99
Source Address
bc-5f-f4-34-78-17
Type
08 06 (ARP)
Hardware Type Protocol Type H/W Add Length Protocol Length OP
00 01 (Ethernet) 08 00 (IP) 06 04 00 02 (reply)
Source MAC Address Sender IP
bc-5f-f4-34-78-17 c0 a8 0a ad (192.168.10.173)
Destination MAC Address Destination IP
bc-5f-f4-34-76-99 c0 a8 0a c1 (192.168.10.193)

 

 


 

 

05 _ ARP Request & Reply with 부 네트워크

05 _ 01 _ 송신자와 목적지 설정

송신자는 192.168.10.193의 IP 주소를 가지고 있는 PC이고, 목적지는 173.194.120.84의 IP 주소를 가지고 있는 PC입니다.

조금 더 자세히 살펴보면, 왼쪽 네트워크는 192.168.10이며, default-gateway는 192.168.10.1입니다.

오른쪽 네트워크는 173.194.120이며, default-gateway는 173.194.120.1입니다.

따라서 라우터 1과 라우터 2를 기반으로 네트워크는 분할된 상태이며, 왼쪽과 오른쪽은 다른 네트워크 망이라고 볼 수 있습니다.

송신자인 192.168.10.193 PC는 목적지인 173.194.120.84 PC의 MAC 주소를 알아내기 위해, ARP Request를 보냅니다.

현재 ARP Cache Table은 아래와 같으며, 목적지인 173.194.120.84 PC의 MAC 주소는 기본값으로 설정된 것을 확인할 수 있습니다.

Destination Address
ff-ff-ff-ff-ff-ff Broadcast
Source Address
bc-5f-f4-34-76-99
Type
08 06 (ARP)
Hardware Type Protocol Type H/W Add Length Protocol Length OP
00 01 (Ethernet) 08 00 (IP) 06 04 00 01 (request)
Source MAC Address Sender IP
bc-5f-f4-34-76-99 c0 a8 0a c1 (192.168.10.193)
Destination MAC Address Destination IP
00 00 00 00 00 00 (의미없음) c0 a8 0a 01 (192.168.10.1)

 

05 _ 02 _ ARP Request

송신자인 192.168.10.193 PC 는 목적지인 173.194.120.84 PC의 MAC 주소를 알아내기 위해, ARP Request를 보냅니다.

우선은 같은 네트워크 망인 192.168.10 내부에 브로드 캐스트로 ARP Request 패킷을 전송합니다.

내부 네트워크에는 목적지 IP 주소를 가진 호스트가 없으므로, 라우터를 통해 외부 네트워크에 ARP Request 패킷을 전송합니다.

 

05 _ 03 _ ARP Reply

라우터는 다른 대역의 네트워크 정보를 가지고 있으며, 라우터끼리는 서로 통신하며 ARP 테이블을 업데이트합니다.

따라서 라우터 1을 통해, 목적지 IP 주소(173.194.120.84)를 가진 PC로부터 ARP Reply를 전달받습니다.

전달받은 ARP Reply 패킷을 통해 업데이트된 ARP Cache Table은 다음과 같으며, 목적지의 MAC 주소 정보가 업데이트된 것을 확인할 수 있습니다.

Destination Address
bc-5f-f4-34-76-99
Source Address
00-26-66-d5-e1-08
Type
08 06 (ARP)
Hardware Type Protocol Type H/W Add Length Protocol Length OP
00 01 (Ethernet) 08 00 (IP) 06 04 00 02 (reply)
Source MAC Address Sender IP
00-26-66-d5-e1-08 c0 a8 0a 01 (192.168.10.1)
Destination MAC Address Destination IP
bc-5f-f4-34-76-99 c0 a8 0a c1 (192.168.10.193)

 

 


 

 

참고 레퍼런스

- https://thebook.io/080326/0109/

- https://coding-factory.tistory.com/720

- https://ssup2.github.io/theory_analysis/Address_Resolution_Protocol/

- https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=sujunghan726&logNo=220322717607 

 

 

'CS > Network' 카테고리의 다른 글

Switching Loop 해결 방법: STP & PVST & EC  (1) 2023.10.15
Cisco Network Command 정리 ( - Updating )  (1) 2023.10.08
웹 서버 vs WAS  (0) 2020.09.10
브라우저와 렌더링 엔진 동작 원리  (0) 2020.09.10
웹(WWW)의 동작 원리  (0) 2020.09.09