본문 바로가기
Network Infra 쉽게 이해하기/L2 Network 쉽게 이해하기

ARP 쉽게 이해하기

by 네트워크 엔지니어 환영 2020. 6. 27.
반응형
주소 결정 프로토콜(Address Resolution Protocol, ARP)은 네트워크 상에서 IP 주소를 물리적 네트워크 주소로 대응(bind)시키기 위해 사용되는 프로토콜이다. 여기서 물리적 네트워크 주소는 이더넷 또는 토큰링의 48 비트 네트워크 카드(NIC) 주소를 뜻한다. 

- 출처 : 위키백과 -

ARP는 Address Resolution Protocol의 약자로 IP 주소를 MAC 주소와 매칭시키기 위한 프로토콜입니다. ARP를 사용하는 이유는 로컬 네트워크(LAN, Local Area Network)에서 단말과 단말 간 통신을 하기 위해서는 IP 주소와 함께 MAC 주소를 이용하게 되는데, IP 주소를 MAC Address와 매칭하여 목적지 IP의 단말이 소유한 MAC 주소를 향해 제대로 찾아가기 위함입니다. 왜 IP 주소를 MAC 주소로 매칭하여야 할까요? 그 이유를 알기 위해서는 LAN(Local Address Network)과 MAC 주소에 대해 이해해야 합니다. 먼저 LAN(Local Address Network)와 MAC 주소에 대해 설명하고 ARP를 정의하도록 하겠습니다~!

 

LAN(Local Address Network)이란?

근거리 통신망, 로컬 영역 네트워크(영어: local area network, LAN), 구내 정보 통신망은 네트워크 매체를 이용하여 집, 사무실, 학교 등의 건물과 같은 가까운 지역을 한데 묶는 컴퓨터 네트워크이다.

- 출처 : 위키백과 -

(LAN 쉽게 이해하기 문서를 참조해 주세요~!)

위키백과에서 서술한 LAN(Local Address Network)의 정의입니다. 사실 저렇게만 들어서는 LAN의 정의를 알기 어렵습니다. 보통 네트워크를 정의할 때는 IP 주소와 Subnetmask를 이용하여 정의하기 마련인데 위의 정의는 꽤 추상적이군요. 그렇지만 저라도 위키백과처럼 정의할 것 같습니다. 왜냐하면 아무리 큰 규모의 네트워크일지라도 같은 IP 대역을 공유한다면 그것은 근거리 네트워크이기 때문입니다. 

 

네트워크계의 별(★)이신 오리뎅이(https://blog.naver.com/goduck2/220138802591)님은 LAN의 정의를 'ARP Request가 미치는 영역'이라고 말씀하셨습니다. ARP Request Packet이 전달되기만 한다면 LAN이라고 보는 것이죠. 같은 IP 대역을 공유하는 LAN에서 단말 간 통신을 하기 위해, 다시 말해 Layer 2에서의 통신에서 사용자는 IP 주소를 목적지로 지정하지만 실제로는 MAC 주소를 이용해 목적지를 찾습니다. 이에 IP 주소와 MAC 주소를 매칭하기 위해 ARP가 사용된다는 것을 의미합니다. 아래 그림을 보시면 중앙에 하나의 L2 Switch를 두고 컴퓨터들을 연결하여 LAN을 구성한 것을 볼 수 있습니다.

<LAN의 구성 예시(192.168.1.0/24)>

위의 구성에서 PC0(192.168.1.1)이 PC1(192.168.1.2)와 통신을 하기 위해서 사용자는 목적지를 192.168.1.2로 잡지만 실제 목적지는 PC1의 IP 주소와 함께 MAC 주소를 목적지로 지정하고 이를 활용하여 전달합니다.

반응형

MAC 주소란? 

MAC 주소란 말을 자주 들어보셨을 거라 생각합니다. IP Address와 늘 함께 언급되는 주소이지요. 데이터 링크 계층에서 통신을 위한 네트워크 인터페이스에 할당된 고유 식별자로 Network Interface Card(NIC)를 가진 단말이라면 공장에서 출고될 때 부여되고 평생 사용하는 고유한 주소를 의미합니다. 즉 LAN(Local Address Network)에서 목적지와 통신하기 위한 실질적인 주소가 바로 MAC 주소입니다. 

<MAC Address 확인>

네트워크 장비 혹은 컴퓨터는 모두 MAC 주소를 갖습니다. 좀 더 자세히 말하면 네트워크 장비 혹은 컴퓨터가 갖는 Network Interface Card마다 MAC 주소를 갖고 있지요. 그리고 위에서도 언급하였지만 LAN(Local Address Network, Layer 2)에서는 IP 주소를 MAC 주소에 매칭하여 통신합니다.

 

그런데 이렇게 생각할 수 있습니다. 통신하는데 IP 주소만 필요한 것 아닐까요? 왜 MAC 주소까지 필요한 것일까요? 거꾸로 MAC 주소가 고유하다면 그냥 인터넷에서 MAC 주소를 쓰면 되는 거 아닐까요?

 

왜 MAC 주소가 필요한가?

저는 대학생 시절 버스를 타고 학교와 집을 오고 갔습니다. 그리고 그 버스는 내비게이션이 아닌 도로 표지판을 보고 서울에서 성남으로 향했지요. 그 시절을 떠올리며 '서울특별시 광진구 화양동 43'에서 '성남시 분당구 야탑동 24'로 간다고 생각해 보겠습니다.

<서울특별시 광진구 화양동에서 성남시 분당구 야탑동으로>

화양동을 출발하여 남쪽으로 내려갑니다. 도로 표지판을 보니 성남으로 가기 위해서는 잠실대교를 건너 송파구의 석촌동, 문정동을 지나면 문정동 옆에 복정동으로 향하는 도로가 있다고 합니다. 그 길을 따라갑니다. 성남시 수정구 복정동에 도착하니 도로 표지판에 분당구 야탑동으로 가려면 중원구 성남동을 지나가야 한다고 하네요. 성남동을 지나 드디어 야탑동에 도착했습니다! 그런데 말입니다... 야탑동 24가 어디죠...? 막상 야탑동에 도착하니 야탑동 24가 어디인지 쓰여있는 도로 표지판이 없습니다.

 

이런 경우 주변의 물리적인 지형지물을 통해 야탑동 24의 위치를 찾아낼 수 있습니다. 야탑동 24라는 곳이 친구 집이라면 친구에게 전화해 "한국전자부품연구원 위에 보면 야탑천이 시작되는 곳이 있는데 거기에 있어"라는 답변을 얻을 수 있을 겁니다. '야탑동 24'라는 행정적 주소는 제도에 따라 변할 수 있지만 '야탑천이 시작되는 곳'이라는 물리적인 주소는 결코 변하지 않습니다. 논리적 주소인 IP 주소와 물리적 주소인 MAC주소의 관계 또한 행정적 주소와 물리적 주소와 맥이 같다고 볼 수 있습니다.

<LAN의 구성 예시(192.168.1.0/24)>

IP 주소는 끊임없이 변화합니다.  MAC 주소 체계가 없는 상황을 가정하고 IP 주소만 있는 상황에서 PC0 사용자가 자신의 IP를 192.168.1.2로 바꾼다면 PC0와 PC1 모두 192.168.1.2 IP를 갖게 될 것이고 원래 IP 192.168.1.2 주인이 누군지 알 길이 없게 됩니다. 사람은 동명이인이라도 주민번호가 다르기 때문에 구별할 수 있지만요. 고유한 정보인 MAC 주소 또한 웬만해서는 변하지 않습니다. 그렇기에 MAC 주소를 사용하여 전달하는 것이 확실하기에 그런 것이 아닌가 싶습니다.

 

거꾸로 인터넷상에서 IP 주소 없이 변화하지 않는 고유한 주소인 MAC 주소를 사용하여 라우팅을 한다면... 각 고유한 주소를 라우팅 테이블에 일일이 입력하다간 라우터가 다운되고 말 겁니다. 숫자가 매우 많아질 테니까 말이죠. IP 주소는 연속성을 갖기 때문에 IP 주소 다수를 한 줄로 지정해 줄 수 있으니 편리하지요.

 

그렇다면 ARP란 무엇인가?

단말 간 통신에서 양쪽 단말은 IP를 이용하여 목적지를 지정하지만 실제 데이터 이동을 위해 MAC 주소를 함께 이용합니다. 이를 위해 필요한 것이 바로 Address Resolution Protocol(ARP)이며 IP 주소와 MAC 주소를 일대일 매칭하여 LAN(Layer 2)에서 목적지를 제대로 찾아갈 수 있도록 돕습니다. IP 주소와 MAC 주소를 일대일 대응하여 테이블로 정리하고 목적지 IP에 맞는 목적지 MAC 주소로 전달하지요. 이것을 ARP Table이라 부릅니다. IP 주소와 MAC 주소를 일대일 매칭시킨 정보를 정리해 둔 Table을 뜻합니다.

<PC0의 ARP Table>

위 그림을 보시면 PC0의 ARP Table에 다른 PC들의 IP 주소와 함께 MAC 주소가 일대일 매칭되어 관리되고 있는 것을 보실 수 있습니다. 사용자가 데이터를 보내기 위해 목적지 IP 주소를 지정한다면 PC0은 ARP Table에 있는 MAC 주소를 보고 해당 MAC 주소의 소유 PC로 전달하는 것이죠.

<스위치의 MAC 주소 Table>

중간에서 데이터를 전달하는 스위치 또한 자신의 Port에 연결된 PC 들의 MAC 주소 정보를 갖고 있습니다. 어느 Port에서 어느 PC의 MAC 주소가 올라오는지 알아야 PC에게서 전달받은 데이터를 전달할 때 목적지 MAC 주소를 올바르게 지정할 수 있기 때문이죠. 참고로 위 스위치의 MAC Table은 PC0에서 PC 1,2,3으로 Ping 명령을 실시한 후의 결과입니다. LAN에서의 통신은 MAC 주소를 이용한다는 것을 알 수 있지요. 

 

ARP Table 생성 과정

이번에는 ARP Table의 생성 과정에 대해 알아보겠습니다. IP 주소와 MAC 주소가 구비되어 있다 하더라도 다른 PC의 IP 주소와 MAC 주소를 모르면 데이터를 전달할 수 없겠죠. 그래서 ARP Table을 생성하여 다른 PC들에 대한 주소 정보를 확보하는 것이 필요합니다.

<PC 0과 PC 2의 통신>

위의 그림을 토대로 순차적으로 설명하겠습니다. 여기서 짚고 넘어가야 할 점은 PC 0,1,2,3뿐만 아니라 모든 단말들은 자신만의 Routing Table이 있어 자신이 보내려는 패킷의 목적지 IP가 자신이 소속된 IP 대역인지 아닌지 알 수 있다는 것입니다.

1.  PC 0(192.168.1.1)은 PC 2(192.168.1.3)에게 데이터를 전달하려고 합니다. 일단 Routing table을 보니 자신과 PC 2가 같은 LAN에 속한다는 것을 알았습니다. 이제 PC 2의 MAC 주소를 알기 위해 ARP Request(Who has 192.168.1.3? Tell 192.168.1.1)를 뿌립니다.

2. PC 0는 Broadcast(FF:FF:FF:FF:FF:FF)인 ARP Request를 날리고 PC 1, PC 2, PC 3에 전달됩니다. 그리고 ARP Request의 목표인 PC 2가 이에 반응하여 ARP Response(PC 2의 MAC 주소)를 보냅니다. 

3. PC 0(192.168.1.1)은 PC 2가 보낸 ARP Reponse를 받고 ARP Table에 PC2의 IP와 MAC 주소를 적습니다. 그리고 데이터를 보내려 목적지 IP를 192.168.1.3으로 지정하면 자연스레 ARP Table을 보고 PC 2의 MAC 주소를 목표로 전달합니다.

여기까지가 ARP입니다. ARP는 이더넷 통신에 없어서는 안 될 매우 중요한 요소이며 네트워크 트러블 슈팅의 기본으로 잘 알고 있어야 합니다. 감사합니다.

반응형

댓글