Southern Island

[ Network ] ARP의 개념과 동작 과정

by 월루

《 ARP란? 》

ARP는 Address Resolution Protocol의 약자입니다, 저희가 보통 네트워크를 통해 통신을 진행할 땐 보통 IP를 통해 한다고 생각합니다.

하지만 실제 통신을 진행할땐 MAC 주소를 통해 서로 통신을 진행합니다. 하지만 통신을 시작할땐 보통 상대방의 IP만을 알고 통신을 시작하죠,

근데 왜 IP만으론 통신이 불가능한 걸까요? 이유는 간단합니다. IP는 유동적으로 계속 변할 수 있는 값이고, MAC 주소는 랜카드의 고유값이기 때문에

통신 도중에 고유한 값인 MAC을 통해 목적지를 확실하게 유지하기 위함입니다. 그럼 어떻게 MAC 주소로 통신을 한다는 걸까요?

바로 위에서 말씀드린 ARP 덕분에 가능한 일입니다. ARP는 L3(OSI Layer 3) IP를 L2 MAC 주소로 바꿔주는 L3의 프로토콜입니다.

반대로 L2 MAC 주소를 L3 IP로 바꿔주는 RARP(Reverse Address Resolution Protocol)도 있습니다! 물론 RARP는 자주 쓰이진 않습니다.

그래서 ARP는 어떤 과정을 통해 IP를 MAC으로 바꾸는 걸까요? 예시를 통해서 과정을 알아보겠습니다!

 

《 ARP 패킷구조 》

ARP 패킷의 전체적인 구조

우선 ARP의 통신과정을 설명하기 앞써 ARP 패킷의 구조중 중요한 몇 가지를 알아보도록 하겠습니다!

Operation Code 패킷 유형 (ARP Request 1, ARP Reply 2)
Source Hardware Address ARP 요청을 송신하는 PC의 MAC 주소
Source Protocol Address  ARP 요청을 송신하는 PC의 IP 주소
Destination Hardware Address ARP 요청에 응답해야될 PC의 MAC 주소
Destination Protocol Address ARP 요청에 응답해야될 PC의 IP 주소

L3 ARP 헤더는 L2 이더넷 헤더 바로 다음에 붙는 형태로 전송됩니다. 이더넷 헤더에 대한 자세한 내용은 아래의 링크에서 확인해주세요!

 

https://southern-island.tistory.com/19

 

[ Network ] TCP/IP 패킷의 구조

TCP/IP 패킷의 구조 패킷의 전체적인 구조.. 좀 복잡해 보이죠? 컴퓨터 간의 통신이란 게 상당히 정교한 약속(프로토콜)으로 이루어져 있습니다. 그래서 전체적인 구조를 한 번에 파악하긴 상당히

southern-island.tistory.com

 

《 ARP 통신과정 》

그럼 위의 ARP 헤더의 구조를 바탕으로 실제 ARP를 요청하고 응답하는 과정을 알아보도록 하겠습니다!

HOST는 이하 (A), 34.40.21.20은 이하 (B)로 가정 후 설명을 진행하겠습니다!

출처 : www.fortinet.com/resources/cyberglossary/what-is-arp

 

1) (A)는 (B)와 통신을 원합니다. A는 자신의 ARP 캐시 테이블에서 B의 IP에 해당하는 MAC 주소가 있는지 탐색합니다.

 

2) 만약 (A)의 ARP 캐시 테이블에 B의 MAC 주소가 있다면 별도의 ARP 요청 과정 없이 통신이 진행됩니다. 만약 없다면 아래의 과정을 진행합니다

 

3) (A)는 (B)의 MAC 주소를 알기위해 순서대로 "L2 이더넷 헤더", "L3 ARP 헤더"의 내용으로 라우터에게 요청을 보냅니다.

Destination MAC Address (Broadcast) FF:FF:FF:FF:FF:FF
Source MAC Address (A) MAC ex) AA::::::A
Operation Code (ARP Request) 1
Source Hardware Address (A) MAC ex) AA::::::A
Source Protocol Address (A) IP ex) 1.1.1.1
Destination Hardware Address (B) MAC 00:00:00:00:00:00
Destination Protocol Address (B) IP 34.40.21.20

[TMI] "L3 ARP 헤더"의 "Destination Hardware Address"는 아직 알 수 없기 때문에 00 값으로 요청을 보냅니다!

 

3) 위의 내용으로 패킷을 받은 라우터는 "L2 이더넷 헤더"의 "Destination MAC Address" 값이 Broadcast 주소라는 걸 확인 후 같은 네트워크 망의 모든 기기에게 위의 패킷을 Broadcast 즉 뿌리게 됩니다.

 

4) 만약 위의 패킷을 본인과 상관없는 34.40.21.18 또는 34.40.21.19 PC가 받게 된다면 "L3 ARP 헤더"의 "Destination Protocol Address"이 자신의 IP와 일치하지 않기 때문에 받은 패킷을 즉시 폐기합니다.

 

5) 만약 위의 패킷을 요청 받은 본인인 (B)가 받게 된다면 "L3 ARP 헤더"의 "Destination Protocol Address"이 자신의 IP와 일치하기 때문에 자신의 ARP 캐시 테이블에 (A)의 IP와 MAC 주소를 저장 후 ARP Request를 보낸 (A)에게 ARP Reply를 아래와 같은 구조로 보내게 됩니다. (순서대로 "L2 이더넷 헤더", "L3 ARP 헤더")

Destination MAC Address (A) MAC ex) AA::::::A
Source MAC Address (B) MAC A5:22:98:5C:24:93
Operation Code (ARP Reply) 2
Source Hardware Address (B) MAC A5:22:98:5C:24:93
Source Protocol Address (B) IP 34.40.21.20
Destination Hardware Address (A) MAC ex) AA::::::A
Destination Protocol Address (A) IP ex) 1.1.1.1

6) 그 후 정상적으로 라우터를 통과하여 (A)에게 전달된 (B)의 ARP Reply를 확인 후 (A)는 자신의 ARP 캐시 테이블에 (B)의 IP와 MAC 주소를 저장한다.

 

7) ARP 통신을 통해 서로의 MAC 주소를 확인한 (A), (B)는 정상적인 통신을 진행한다!

 

《 마치며... 》

제가 글을 쓰는 가장 큰 이유는 배운 내용을 정리하고 나중에 다시 공부하기 위해서입니다, 따라서 잘못된 정보가 포함되어 있거나 중요한 내용이 빠져 있을 수 있습니다.

잘못된 내용이나 빠진 내용이 있는 경우 댓글로 말씀해주시면 정말 감사드리겠습니다!

 

블로그의 정보

남쪽의 외딴섬

월루

활동하기