🖥 CS/네트워크

ARP(Address Resolution Protocol)

0_ch4n 2022. 4. 17. 03:47
반응형

✔️ ARP란?

ARP(Address Resolution Protocol)은 IP 주소를 MAC 주소와 매칭시키기 위한 프로토콜입니다.

ARP를 사용하는 이유는 로컬 네트워크(LAN)에서 단말과 단말 간 통신을 하기 위해서는 IP 주소와 함께 MAC 주소를 이용하게 되는데,

IP 주소를 MAC Address와 매칭하여 목적지 IP의 단말이 소유한 MAC 주소를 향해 제대로 찾아가기 위함입니다.

 

📌 RARP

RARP(Reverse Address Resolution Protocol)은 ARP와 반대로 MAC 주소를 이용해 IP 주소를 알아내는 프로토콜입니다.

 

📌 GARP

GARP(Gratuious Address Resolution Protocol)은 송신 IP와 수신 IP가 동일한 ARP Request입니다.

주로 자신의 존재를 알리는 목적으로 IP 충돌 감지, ARP Table 갱신 용도로 사용합니다.

 

✔️ ARP Table

ARP Table은 IP 주소와 MAC 주소를 일대일 대응하여 테이블로 정리해둔 것을 말합니다.

 

✔️ ARP 패킷 구조

- Hardware Type

  • 16bit로 ARP가 수행되고 있는 네트워크 유형을 정의합니다.

- Protocol Type

  • 16bit로 프로토콜의 유형을 정의합니다. (IPv4일 경우 0x0800)

- Hardware Length

  • 8bit로 물리 주소(MAC)의 길이를 정의합니다. (이더넷인 경우 6)

- Protocol Length

  • 8bit로 논리 주소(IP)의 길이를 정의합니다. (이더넷인 경우 4)

- Operation

  • 16bit로 패킷의 유형을 정의합니다.
  • ARP Request : 1 / ARP Reply : 2 / RARP Request : 3 / RARP Reply : 4

- Sender Hardware Address

  • 송신자의 물리 주소를 나타내는 필드입니다. (이더넷의 경우 이 필드는 6byte)

- Sender IP Address

  • 송신자의 논리 주소를 나타내는 필드입니다. (IP 프로토콜인 경우 4byte)

- Target Hardware Address

  • 목적지 시스템의 물리 주소를 정의합니다. (이더넷인 경우 6byte)
  • ARP Request인 경우 목적지 시스템의 물리 주소를 알 수 없어 모두 0으로 설정합니다.

- Target IP Address

  • 목적지 시스템의 논리 주소를 정의합니다. (IP 프로토콜인 경우 4byte)

 

✔️ ARP 동작 과정

 

📌 내부 네트워크 host에게 ARP 요청

Sender ip: 192.168.10.193

# ping 192.168.10.173

 

ARP request

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)

 

1. 192.168.10.193에서 브로드캐스트로 ARP Request 패킷을 보냅니다. (목적지는 192.168.10.173)

 

2. ARP Request 패킷이 스위치에 도착하고 브로드캐스트로 ARP Request 패킷을 보냅니다.

 

3. 스위치에서 네트워크 안에 Source IP를 제외한 모든 호스트들에게 ARP Request 패킷을 브로드캐스트로 보냅니다.

 

4. 라우터를 포함한 각각의 호스트들은 받은 ARP Request 패킷의 Destination IP가 자신이 아니면 패킷을 버리고 자신이면 패킷을 받아서 ARP Reply 패킷을 보냅니다.

 

5. 192.168.10.173이 목적지 IP를 192.168.10.193으로 한 ARP Reply을 보냅니다.

ARP reply

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)

 

6. 192.168.10.193에게 ARP Reply 패킷이 보내졌습니다. (192.168.10.173의 MAC Address는 bc-5f-f4-34-78-17)

 

📌 외부 네트워크 host에게 ARP 요청

Sender ip : 192.168.10.193

#ping 173.194.120.84

 

 

ARP request

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)

 

1. 패킷에 Destination Address가 Broadcast 임으로 라우터를 통과하지 못한다는 것을 알 수 있습니다.

192.168.10.193이 내부 네트워크 안에 라우터를 포함한 모든 호스트에게 Broadcast로 ARP Request 패킷을 보냅니다.

 

2. 192.168.10.1 라우터가 ARP Request 패킷을 받고 ARP Reply 패킷을 보냅니다.

ARP reply

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)

 

 

3. 192.168.10.193은 ARP Reply 패킷을 받았지만 Source Address는 내부 네트워크의 라우터 MAC입니다.

 

📌 결론

ARP는 외부 네트워크의 host는 불가능합니다.

ARP Request의 메시지는 2계층으로 전달되고 이더넷 프레임으로 Encapsulation 됩니다.

ARP Request는 Broadcast 이고 ARP Reply는 Unicast입니다.

 

📄 참고

https://musclebear.tistory.com/12

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

 

반응형