본문 바로가기

IT 엔지니어를 위한 네트워크

ARP(Address Resolution Protocol) Part 1

Today Keys : IP주소, MAC주소, ARP, 프로토콜, address, resolution, protocol

본 포스팅은 'IT 엔지니어를 위한 네트워크 입문' [길벗] 서적에 포함된 '3. 네트워크 통신하기'의 내용  3.5.1장의 내용입니다.


ARP 

 OSI 7계층 중 2, 3계층이 주소를 가지고 있고 통신할 때 목적지를 찾아갈 수 있도록 하지만 사실 2계층 MAC 주소와 3계층 IP 주소 간에는 아무 관계도 없습니다.

 MAC 주소는 하드웨어 생산업체가 임의적으로 할당한 주소이고 NIC에 종속된 주소입니다.

3계층 IP 주소는 우리가 직접 할당 하거나 DHCP를 이용해 자동으로 할당받습니다.

실제로 통신은 IP 주소 기반으로 일어나고 MAC 주소는 상대방의 주소를 자동으로 알아내 통신하게 됩니다.

이 때 상대방의 MAC 주소를 알아내기 위해 사용되는 프로토콜이 ARP(Address Resolution Protocol)입니다.

 

ARP란?

데이터 통신을 위해 2계층 물리적 주소인 MAC 주소와 3계층 논리적 IP 주소 두 개가 사용됩니다.

IP 주소 체계는 물리적 MAC 주소와 전혀 연관성이 없으므로 두 개의 주소를 연계시켜 주기 위한 메커니즘이 필요합니다.

이때 사용되는 프토토콜이 ARP입니다.

ARP 프로토콜 필드(ARP 헤더 + ARP 데이터)

 

ARP 프로토콜은 TCP/IP 프로토콜 스택을 위해서만 동작하는 것은 아닙니다.

 TCP-이더넷 프로토콜과 같이 3계층 논리적 주소와 2계층 물리적 주소 사이에 관계가 없는 프로토콜에서 ARP 프로토콜과 같은 메커니즘을 사용해 물리적 주소와 논리적 주소를 연결합니다.

 호스트에서 아무 통신이 없다가 처음 통신을 시도하면 패킷을 바로 캡슐화(Encapsulation)할 수 없습니다.

 통신을 시도할 때 출발지와 목적지 IP 주소는 미리 알고 있어 캡슐화하는 데 문제가 없지만 상대방의 MAC 주소를 알 수 없어 2계층 캡슐화를 수행할 수 없습니다.

 상대방의 MAC 주소를 알아내려면 ARP 브로드캐스트를 이용해 네트워크 전체에 상대방의 MAC 주소를 질의해야 합니다. ARP 브로드캐스트를 받은 목적지는 ARP 프로토콜을 이용해 자신의 MAC 주소를 응답합니다.

 이 작업이 완료되면 출발지, 목적지 둘 다 상대방에 대한 MAC 주소를 학습하고 이후 패킷이 정상 적으로 인캡슐레이션되어 상대방에게 전달될 수 있습니다.

 윈도 명령 프롬프트에서 arp -a 명령을 입력하면 PC의 ARP 테이블 정보를 확인할 수 있습니다.

 ARP 프로토콜을 이용해 IP 주소와 맥 주소를 매핑하면 “유형” 필드에 “동적”으로 표기됩니다.

윈도의 ARP 테이블

 패킷 네트워크에서는 큰 데이터를 잘라 전송하므로 여러 개의 패킷을 전송해야 합니다.

 패킷을 보낼 때마다 ARP 브로드캐스트를 수행하면 네트워크 통신의 효율성이 크게 저하되므로 메모리에 이 정보를 저장해두고 재사용합니다.

 성능 유지를 위해서는 ARP 테이블을 오래 유지하는 것이 좋지만 논리 주소는 언제든지 바뀔 수 있으므로 일정 시간 동안 통신이 없으면 이 테이블은 삭제됩니다.

 네트워크 장비에서의 ARP 작업은 하드웨어 가속으로 처리되지 않고 CPU에서 직접 수행하므로 짧은 시간에 많은 ARP 요청이 들어오면 네트워크 장비에서는 큰 부하로 작용합니다.

 그동안 해 커들이 네트워크 장비를 무력화하는 데 다량의 ARP를 이용한 공격을 많이 수행해왔습니다.

 이런 공격에 대응하기 위해 네트워크 장비는 ARP 테이블 저장 기간을 일반 PC보다 길게 설정하고 많은 ARP 요청이 들어오면 이를 필터링하거나 천천히 처리하는 방식으로 네트워크 장비를 보호합 니다.

 이외에도 일부 장비는 ARP 테이블을 수동으로만 갱신하도록 설정해 운영하기도 합니다(특히 회선 사업자가 임대하는 네트워크 장비는 MAC 테이블이나 ARP 테이블을 정적으로 유지하기 때문에 외부 회선에 연결된 네트워크 장비가 변경된 경우, 이 정보를 회선 사업자에게 알려주어야 합니다).

ARP의 매핑 정보는 PC에서 쉽게 파악할 수 있습니다.

참고
패킷으로 데이터를 전송하는 네트워크에서는 데이터를 보내기 위해 여러 개의 패킷을 사용해야 하므로 반복작업을 줄이기 위해 참조할 수 있는 여러 가지 테이블을 사용합니다.

이번 장에서 다루는 ARP 테이블 외에도 DNS 캐시나 라우팅 캐시와 같이 다양한 계층에서 네트워크의 성능을 높이기 위한 캐시 테이블을 가지고 있습니다