본문 바로가기
Network Science

Address Resolution Protocol (ARP) 완벽히 이해하기

by blackjack_96 2022. 4. 17.

오늘은 ARP 프로토콜에 대하여 알아보겠습니다.

이에 관하여 컴퓨터 과학에서 굉장히 중요하게 다루어지고 많은 연구가 진행되는 만큼

저와 같은 네트워크 학도들이 이를 완벽히 이해하고 숙지했으면 하는 바람에서 글을 작성합니다!

 

ARP 프로토콜이란 무엇인가?

ARP 프로토콜이 무엇인가 설명하기 전에 하나의 예시를 들어보겠습니다.

 

저 멀리 떨어져 있는 네이버 서버와 HTTP Request/Response를 주고 받으며 통신하는 상황을 예로 들어보죠.

 

만약 어떠한 인터넷 유저가 www.naver.com이라는 URL을 주소창에 입력하면

HTTP Request Message가 네이버 서버에게로 전달되고

네이버 서버는 특정 page를 사용자에게 HTTP Response를 통하여 응답해 줍니다.

 

다음 그림을 한번 보도록 하죠

 

클라이언트가 네이버 페이지 주소를 입력하면

클라이언트가 속해있는 네트워크의 DNS서버는 이를 IP주소로 변환해 줍니다.

 

 

그리고 웹 브라우저는 다음과 같이 결심합니다.

 

 

목적지는 112.13.1.7이군,

이 곳으로 HTTP request메시지를 보내기 위해서는

한 번에 보낼 수 없으니 일단 Router A(IP주소 AAAA)에게 보내야겠다!

 

 

Router A는 이 메시지를 받고 또 다음과 같은 결심을 합니다.

목적지는 112.13.1.7이군,

이 곳으로 HTTP request메시지를 보내기 위해서는

한 번에 보낼 수 없으니 일단 Router B(IP주소 BBBB)에게 보내야겠다!

 

Router B는 이 메시지를 받고 또 다음과 같은 결심을 합니다.

목적지는 112.13.1.7이군,

이 곳으로 HTTP request메시지를 보내기 위해서는

한 번에 보낼 수 없으니 일단 Router C(IP주소 CCCC)에게 보내야겠다!

 

...

 

클라이언트로부터 서버에 이르는 경로에 있는 모든 Router들은

이와 같이 최종 목적지로 데이터 패킷을 전달하기 위하여

다음에 이 패킷을 어디로 송신해야 하는지에 대한 정보를 가지고 있습니다.

 

 

최종 목적지로 어떻게 보내는지는 알 수 없습니다.

단지 , 112.13.1.7라는 최종 목적지에 이 패킷이 보내지기 위해서는

다음에 내가 이 패킷을 어디로 보내야 하는가에 대해서만 알고 있습니다.

 

 

위 그림에서 A 라우터는 다음과 같은 사실을 알고 있습니다.

이 목적지를 112.13.1.7까지 전달하려면

나는 방금 전달받은 메시지를 B라우터에게 보내야 돼.

 

 

A라우터는 B의 IP주소를 알고 있습니다.

B의 IP주소만을 알면 B로 패킷을 보낼 수가 있을까요?

아닙니다.

 

MAC주소의 필요성

A라우터는 B 라우터에게 패킷을 보내려면

B 라우터의 MAC주소를 알고 있어야 합니다

 

 

예를들어, 친구가 사는 곳을 찾아가고 싶습니다.

친구는 강원도 원주시 학성동 삼천리 아파트에 살고 있습니다.

이 정보만으로 친구가 사는 곳을 찾아갈 수 있을까요??

친구가 몇 동, 몇 호에 사는지를 알아야 친구가 사는 곳에 정확히 방문할 수 있을 것입니다.

 

 

이와 똑같은 이치입니다.

A는 B의 IP주소를 통하여 어느 네트워크에 위치하는지에 대한 정보를 얻을 수 있지만

B의 MAC주소를 모른다면, 패킷을 B에게 전송할 수 없습니다.

 

 

A는 B의 MAC주소를 알아내야 합니다.

하지만 A는 B의 IP주소만을 알고 있을 뿐입니다.

어떻게 B의 MAC주소를 알 수 있을까요?

 

 

바로 ARP프로토콜, 즉 Address Resolution Protocol을 이용하여 알아냅니다.

ARP 프로토콜이란

특정 대상의 IP주소를 통해 MAC주소를 알아내는 기술입니다.

 

 

ARP 동작 원리

Router A는 같은 Network내에 속해있는 모든 장비들에게 다음 메시지를 뿌립니다.

(Broadcasting)

 

"IP주소가 BBBB인 분 계신가요?

계시면 저에게 MAC주소를 알려 주세요"

 

그러면 다음 그림에서 볼 수 있듯이,

IP주소가 BBBB가 아닌 모든 장비들은 이 메시지를 듣고 무시합니다.

 

 

하지만 IP주소가 BBBB인 Router B만이 이 메시지를 받고는 

" 제가 바로 IP주소 BBBB인 Router B 입니다

제 MAC주소는 ~~입니다 "

라고 Router A에게 답장을 해 줍니다.

 

이로써 A는 B의 MAC주소를 알게 되고

B에게 패킷을 전송할 수가 있게 되는 것이죠.

 

 

ARP 캐싱 및 효율 최적화

IP주소를 알고 있는 상대의 MAC주소를 알아내기 위하여

ARP Request메시지를 BroadCast하여

B에게 MAC주소가 담긴 ARP Response를 받아낸다.

ARP Protocol입니다.

 

 

분명 매력적이지만,

이러한 broadcasting이 자주 일어난다면

Network내 Traffic이 과부하되는 일이 발생할 것입니다.

 

 

그리하여 ARP Caching이라는 기술을 사용하여 이러한 broadcast를 최소화 하려고 하는 것이죠

 

 

ARP Protocol을 이용하여 MAC주소를 알아낸 것을 

자신의 ARP Table이라는 곳에 기록합니다

 

IP주소 AAAA의 MAC주소는 OOOO

IP주소 BBBB의 MAC주소는 XXXX

IP주소 CCCC의 MAC주소는 KKKK

 

이런 식으로, 한번 MAC주소를 알아낸 상대 장비에 대한 정보를

일정 시간 이상 기록해 놓았다가

이 보관 시간동안 똑같은 장비에게 패킷을 전송할때에는

broadcasting이 아니라

ARP Table을 참조하여 MAC주소를 알아내 패킷을 전송합니다.

이것이 ARP Caching입니다

 

 

이상 ARP 프로토콜에 관하여 알아 보았습니다.

감사합니다!

'Network Science' 카테고리의 다른 글

Reverse ARP와 한계점  (0) 2022.04.17