문서의 각 단락이 어느 리비전에서 마지막으로 수정되었는지 확인할 수 있습니다. 왼쪽의 정보 칩을 통해 작성자와 수정 시점을 파악하세요.

ARP 프로토콜 | |
이름 | ARP (Address Resolution Protocol) |
목적 | |
OSI 계층 | |
RFC 문서 | RFC 826 |
주요 기능 | |
상세 정보 | |
동작 방식 | |
패킷 구조 | 하드웨어 타입, 프로토콜 타입, 하드웨어 주소 길이, 프로토콜 주소 길이, 오퍼레이션 코드, 송신자/목표지 MAC 주소 및 IP 주소 |
ARP 캐시 | 변환 결과를 임시 저장하는 테이블 (일정 시간 후 삭제) |
ARP 스푸핑 | |
관련 프로토콜 | RARP (Reverse ARP), InARP (Inverse ARP), GARP (Gratuitous ARP) |
사용 환경 | |
한계 | 로컬 네트워크 내에서만 동작, 보안 취약점 존재 |
보안 대책 | |

ARP 프로토콜(Address Resolution Protocol)은 TCP/IP 네트워크에서 IP 주소를 물리적 주소(MAC 주소)로 변환하는 데 사용되는 통신 프로토콜이다. 이 프로토콜은 OSI 모델의 네트워크 계층과 데이터 링크 계층 사이에서 동작하며, 인터넷 프로토콜 스위트의 중요한 구성 요소이다.
ARP의 주요 목적은 동일한 로컬 네트워크(LAN) 내에서 특정 IP 주소를 가진 장치의 실제 하드웨어 주소를 발견하는 것이다. 예를 들어, 한 컴퓨터가 같은 네트워크 세그먼트에 있는 다른 컴퓨터로 IP 패킷을 전송하려면 목적지의 MAC 주소를 알아야 한다. 이때 IP 주소는 알지만 MAC 주소를 모르는 경우, ARP 요청을 브로드캐스트하여 해당 정보를 얻는다.
이 프로토콜은 1982년 RFC 826 표준으로 정의되었으며, 이더넷을 비롯한 다양한 네트워크 기술에서 널리 사용된다. ARP의 동작은 네트워크 통신의 근간을 이루는 기본 메커니즘으로, 효율적인 데이터 전송을 가능하게 한다.

ARP는 IP 주소를 MAC 주소로 변환하는 프로토콜이다. 이 변환 과정은 이더넷과 같은 브로드캐스트가 가능한 다중 접속 네트워크에서 통신을 위해 필수적이다. 네트워크 상의 호스트가 특정 IP 주소를 가진 대상과 통신하려면, 최종적으로 프레임을 전달하기 위한 물리적 MAC 주소를 알아야 한다. ARP는 이 정보를 동적으로 매핑하는 역할을 한다.
ARP 동작은 크게 ARP 요청과 ARP 응답 두 단계로 나뉜다. 통신을 원하는 호스트(송신자)는 먼저 자신의 ARP 캐시를 확인한다. 캐시에 대상 IP 주소에 대한 MAC 주소가 없다면, 송신자는 ARP 요청 패킷을 네트워크 전체에 브로드캐스트한다. 이 패킷은 "이 IP 주소를 가진 호스트의 MAC 주소가 무엇인가?"라는 질문을 담고 있다. 네트워크의 모든 호스트는 이 요청을 수신하지만, 지정된 IP 주소를 가진 호스트만이 응답한다.
응답 단계에서는 질문받은 IP 주소의 소유자(수신자)가 ARP 응답 패킷을 유니캐스트로 송신자에게 보낸다. 이 응답 패킷에는 자신의 MAC 주소 정보가 포함되어 있다. 송신자는 이 응답을 받아 자신의 ARP 캐시에 해당 매핑 정보를 저장한다. 이후 같은 대상과의 통신에서는 캐시된 정보를 즉시 사용할 수 있어 효율적이다. ARP 캐시의 항목은 일정 시간이 지나면 삭제되는데, 이는 네트워크 구성 변경(예: NIC 교체)에 대응하기 위함이다.
동작 단계 | 패킷 타입 | 전송 방식 | 질문/응답 내용 |
|---|---|---|---|
1. 질문 | 브로드캐스트 | "Target IP 주소의 MAC 주소는?" | |
2. 응답 | 유니캐스트 | "Target IP 주소의 MAC 주소는 [내 MAC 주소]이다." |
이 기본 동작을 통해 OSI 모델의 네트워크 계층(IP) 주소와 데이터 링크 계층(이더넷) 주소 사이의 갭이 메워진다. ARP는 TCP/IP 스택이 제대로 동작하기 위한 핵심적인 하위 프로토콜 중 하나이다.
ARP 프로토콜의 핵심 동작은 ARP 요청과 ARP 응답이라는 두 단계를 통해 이루어진다. 이 과정은 IP 주소를 알고 있을 때, 해당 IP 주소를 사용하는 호스트의 물리적 주소(MAC 주소)를 알아내는 데 사용된다.
ARP 요청은 질의를 시작하는 과정이다. 호스트 A가 호스트 B와 통신하려고 할 때, 호스트 A는 자신의 ARP 캐시에 호스트 B의 MAC 주소가 있는지 먼저 확인한다. 캐시에 정보가 없으면 호스트 A는 네트워크 상의 모든 호스트에게 브로드캐스트 패킷을 보낸다. 이 패킷은 "이 IP 주소(호스트 B의 IP)를 가진 호스트의 MAC 주소가 무엇인가?"라는 질문을 담고 있다. 이 요청 패킷의 발신자 MAC 주소와 IP 주소 필드에는 호스트 A 자신의 정보가 채워진다.
ARP 응답은 질의에 대한 답변이다. 브로드캐스트된 ARP 요청을 네트워크 상의 모든 호스트가 수신하면, 각 호스트는 요청 패킷에 담긴 목표 IP 주소를 자신의 IP 주소와 비교한다. 일치하지 않는 호스트는 패킷을 무시한다. 목표 IP 주소를 가진 호스트 B만이 유니캐스트 방식으로 응답 패킷을 보낸다. 응답 패킷에는 "그 IP 주소의 소유자는 나이며, 내 MAC 주소는 이것이다"라는 정보가 담겨 있다. 호스트 A는 이 응답을 받아 자신의 ARP 캐시에 호스트 B의 IP 주소와 MAC 주소 쌍을 저장한 후, 통신을 시작한다.
이 동작을 요약하면 다음과 같은 표로 나타낼 수 있다.
단계 | 패킷 종류 | 발신지 | 목적지 | 내용 |
|---|---|---|---|---|
1 | ARP 요청 | 호스트 A | 브로드캐스트(FF:FF:FF:FF:FF:FF) | "IP 주소 B의 MAC 주소는?" |
2 | ARP 응답 | 호스트 B | 호스트 A(유니캐스트) | "IP 주소 B의 MAC 주소는 BB:BB:BB:BB:BB:BB이다." |
이러한 요청-응답 메커니즘은 로컬 네트워크(같은 서브넷) 내에서만 동작한다. 다른 네트워크에 있는 IP 주소의 MAC 주소를 알아낼 때는 기본 게이트웨이의 MAC 주소를 목표로 ARP 요청을 보낸다[1].
ARP 캐시는 ARP 동작의 효율성을 높이기 위해 각 호스트나 라우터가 유지하는 임시 저장소이다. 이 테이블에는 알려진 IP 주소와 그에 대응하는 MAC 주소의 매핑 정보가 일정 시간 동안 저장된다. 이 정보는 ARP 요청과 ARP 응답 과정을 통해 학습되거나, 정적으로 관리자가 설정할 수 있다.
ARP 캐시의 주요 목적은 매번 같은 목적지에 패킷을 전송할 때마다 ARP 요청 브로드캐스트를 발생시키는 것을 방지하는 것이다. 호스트가 특정 IP 주소로 패킷을 전송해야 할 때, 먼저 자신의 ARP 캐시를 조회한다. 캐시에 해당 IP 주소에 대한 MAC 주소 항목이 존재하고 유효하다면, 이더넷 프레임을 즉시 구성하여 전송한다. 항목이 존재하지 않거나 만료된 경우에만 ARP 요청 프로세스를 시작한다.
ARP 캐시의 항목은 일반적으로 동적(Dynamic) 항목과 정적(Static) 항목으로 구분된다. 동적 항목은 ARP 프로토콜을 통해 자동으로 학습되며, 일정 시간(타임아웃)이 지나면 삭제된다. 이 타임아웃 시간은 운영체제마다 다르며, 보통 2분에서 20분 사이이다. 정적 항목은 관리자가 수동으로 설정하며, 재부팅 시까지 또는 명시적으로 삭제할 때까지 캐시에 영구적으로 남아 있다. 정적 항목은 주로 중요한 서버나 기본 게이트웨이에 사용되어 ARP 스푸핑 공격을 방지하는 데 활용된다.
ARP 캐시의 내용은 운영체제의 명령어를 통해 확인하고 관리할 수 있다. 일반적인 명령어는 다음과 같다.
운영체제 | 캐시 확인 명령어 | 캐시 항목 삭제 명령어 |
|---|---|---|
Windows |
|
|
Linux / macOS |
|
|
캐시 항목이 손상되거나 오래된 정보를 가지고 있으면 네트워크 통신 장애의 원인이 될 수 있다. 예를 들어, 대상 호스트의 네트워크 인터페이스 카드가 교체되어 MAC 주소가 변경되었는데, 다른 호스트들의 ARP 캐시에 예전 MAC 주소가 남아 있다면 패킷은 잘못된 물리적 주소로 전송되어 통신이 실패한다. 이러한 문제는 ARP 캐시를 비우는(flush) 명령어를 실행하여 해결할 수 있다.

ARP 패킷은 이더넷 프레임에 캡슐화되어 전송됩니다. 패킷 구조는 크게 이더넷 헤더와 ARP 메시지 본문으로 나뉩니다. 이더넷 헤더는 물리적 전송을 위한 목적지와 출발지 MAC 주소 등을 포함하며, ARP 메시지 필드는 실제 ARP 질의와 응답에 필요한 정보를 담습니다.
ARP 메시지의 주요 필드는 다음과 같습니다.
필드 이름 | 크기(비트) | 설명 |
|---|---|---|
하드웨어 타입 (HTYPE) | 16 | 네트워크 유형을 지정합니다 (예: 이더넷은 1). |
프로토콜 타입 (PTYPE) | 16 | 매핑을 요청하는 프로토콜을 지정합니다 (예: IPv4는 0x0800). |
하드웨어 주소 길이 (HLEN) | 8 | MAC 주소의 길이를 바이트 단위로 지정합니다 (이더넷은 6). |
프로토콜 주소 길이 (PLEN) | 8 | 프로토콜 주소의 길이를 바이트 단위로 지정합니다 (IPv4는 4). |
오퍼레이션 (OPER) | 16 | 패킷의 유형을 지정합니다 (요청은 1, 응답은 2). |
송신자 하드웨어 주소 (SHA) | 가변* | 패킷을 보내는 호스트의 MAC 주소입니다. |
송신자 프로토콜 주소 (SPA) | 가변* | 패킷을 보내는 호스트의 IP 주소입니다. |
대상 하드웨어 주소 (THA) | 가변* | 목표 호스트의 MAC 주소입니다. 요청 시 일반적으로 0으로 채워집니다. |
대상 프로토콜 주소 (TPA) | 가변* | 찾고자 하는 목표 호스트의 IP 주소입니다. |
*가변 길이는 HLEN과 PLEN 필드에 정의된 값에 따라 결정됩니다.
이 구조에서 오퍼레이션 코드는 패킷이 ARP 요청인지 ARP 응답인지를 구분하는 핵심입니다. 요청 패킷은 브로드캐스트로 전송되며, 목표 하드웨어 주소(THA) 필드는 채워지지 않습니다. 응답 패킷은 유니캐스트로 회신되며, 송신자 주소 필드에 응답자의 MAC과 IP 주소가, 대상 주소 필드에 원래 요청자의 주소들이 채워집니다. 이 표준화된 구조는 다양한 네트워크 기술에서 ARP가 동작할 수 있는 기반을 제공합니다.
이더넷 헤더는 ARP 패킷이 로컬 네트워크 상의 특정 목적지에 정확히 전달되도록 하는 프레임의 출발지와 목적지 주소 정보를 담는다. OSI 모델의 데이터 링크 계층(2계층)에 해당하는 이 헤더는 ARP 메시지를 캡슐화하여 전송하는 역할을 한다.
헤더의 주요 필드는 다음과 같다.
필드 | 설명 |
|---|---|
목적지 MAC 주소 (Destination MAC Address) | 프레임을 수신할 네트워크 인터페이스의 물리적 주소이다. ARP 요청 시에는 브로드캐스트 주소(FF:FF:FF:FF:FF:FF)로 설정되어 네트워크의 모든 호스트가 패킷을 받게 한다. |
출발지 MAC 주소 (Source MAC Address) | ARP 패킷을 보내는 호스트의 MAC 주소이다. |
이더타입 (EtherType) | 캡슐화된 상위 계층 프로토콜의 종류를 식별한다. ARP 프로토콜의 경우 값은 0x0806으로 고정되어 있다. |
이 구조를 통해 스위치나 허브 같은 네트워크 장치는 패킷을 적절한 포트로 전달하거나 모든 포트로 확산할 수 있다. ARP 응답 패킷의 이더넷 헤더에서는 목적지 MAC 주소가 ARP 요청을 보낸 호스트의 MAC 주소로 지정되어 유니캐스트로 회신된다.
ARP 패킷의 핵심인 ARP 메시지는 네트워크 계층 주소(IP 주소)와 데이터 링크 계층 주소(MAC 주소) 간의 매핑 정보를 요청하거나 응답하기 위해 사용되는 구조화된 데이터입니다. 이 메시지는 고정된 크기의 여러 필드로 구성되어 있으며, 각 필드는 특정한 정보를 담고 있습니다.
ARP 메시지의 주요 필드는 다음과 같습니다.
필드 이름 | 크기(비트) | 설명 |
|---|---|---|
하드웨어 타입 (Hardware Type) | 16 | 네트워크 인터페이스의 유형을 지정합니다. 이더넷의 경우 값은 |
프로토콜 타입 (Protocol Type) | 16 | 매핑을 요청하는 네트워크 계층 프로토콜을 지정합니다. IPv4의 경우 값은 |
하드웨어 주소 길이 (HLen) | 8 | 하드웨어 주소(MAC 주소)의 길이를 바이트 단위로 지정합니다. 이더넷은 |
프로토콜 주소 길이 (PLen) | 8 | 프로토콜 주소(IP 주소)의 길이를 바이트 단위로 지정합니다. IPv4는 |
오퍼레이션 코드 (Operation) | 16 | ARP 메시지의 유형을 나타냅니다. 주요 값으로는 요청( |
송신자 하드웨어 주소 (Sender Hardware Address) | 가변 (HLen) | 메시지를 보내는 호스트의 MAC 주소입니다. |
송신자 프로토콜 주소 (Sender Protocol Address) | 가변 (PLen) | 메시지를 보내는 호스트의 IP 주소입니다. |
대상 하드웨어 주소 (Target Hardware Address) | 가변 (HLen) | 목표 호스트의 MAC 주소입니다. ARP 요청 시에는 일반적으로 |
대상 프로토콜 주소 (Target Protocol Address) | 가변 (PLen) | 목표 호스트의 IP 주소입니다. 이 주소의 MAC 주소를 알고자 할 때 사용합니다. |
이 구조는 이더넷과 IPv4 환경을 기준으로 합니다. 하드웨어 타입이나 프로토콜 타입이 다른 네트워크에서는 필드의 길이나 해석이 달라질 수 있습니다. 예를 들어, IPv6 환경에서는 ARP 대신 NDP 프로토콜을 사용하므로 이 구조가 적용되지 않습니다. 모든 필드는 네트워크 바이트 순서(빅 엔디안)로 전송됩니다.

ARP는 기본적인 주소 변환 기능 외에도 다양한 네트워크 환경과 요구사항을 지원하기 위해 여러 변형 프로토콜이 발전했다. 이들은 특정 상황에서 효율성을 높이거나 새로운 기능을 제공한다.
주요 변형으로는 Proxy ARP, Gratuitous ARP, Reverse ARP가 있다. Proxy ARP는 한 네트워크 세그먼트에 있는 호스트가 다른 세그먼트의 호스트를 대신하여 ARP 응답을 보내는 메커니즘이다. 이는 서로 다른 서브넷에 있는 호스트들이 마치 같은 네트워크에 있는 것처럼 통신할 수 있게 하며, 라우터가 중개 역할을 수행한다. Gratuitous ARP는 네트워크 상의 다른 호스트들에게 자신의 IP 주소와 MAC 주소 매핑을 알리기 위해 요청 없이 자발적으로 보내는 ARP 패킷이다. 주로 IP 주소 충돌 감지나 장애 조치 시 새로운 MAC 주소를 알리는 데 사용된다.
종류 | 주요 목적 | 동작 방식 |
|---|---|---|
다른 서브넷의 호스트를 대신해 응답 | 라우터가 로컬 네트워크의 호스트를 위해 원격 호스트의 MAC 주소로 응답 | |
주소 정보 알림 또는 충돌 감지 | 특정 대상 없이 브로드캐스트로 자신의 IP-MAC 매핑을 선언 | |
Reverse ARP (RARP) | MAC 주소를 알고 있을 때 IP 주소 요청 | 디스크 없는 워크스테이션이 자신의 IP 주소를 서버로부터 얻음 |
Reverse ARP는 기본 ARP의 반대 개념으로 작동한다. 이 프로토콜은 자신의 MAC 주소는 알지만 IP 주소를 모르는 호스트(예: 디스크 없는 워크스테이션)가 서버에게 자신의 IP 주소를 질의하는 데 사용된다. 그러나 RARP는 제한적이어서 이후 BOOTP와 DHCP 프로토콜로 대체되는 추세이다. 이러한 ARP 변형들은 네트워크의 유연성과 관리 효율성을 높이는 데 기여한다.
Proxy ARP는 네트워크 상의 한 장치가 다른 장치를 대신하여 ARP 응답을 수행하는 기능이다. 일반적으로 서로 다른 물리적 네트워크 세그먼트에 위치한 호스트들이 마치 같은 네트워크에 있는 것처럼 통신할 수 있도록 중재하는 역할을 한다. 이는 라우터나 특정 호스트가 자신의 MAC 주소를 사용하여 목표 IP 주소에 대한 ARP 응답을 보내는 방식으로 동작한다.
Proxy ARP가 사용되는 주요 시나리오는 서브넷 마스크를 인식하지 못하는 레거시 장치를 지원하거나, 네트워크를 물리적으로 분할했지만 논리적으로는 단일 네트워크를 유지하려는 경우이다. 예를 들어, 라우터는 한쪽 인터페이스에서 수신한 ARP 요청을 확인하고, 요청된 IP 주소가 라우터의 다른 인터페이스에 연결된 네트워크에 속해 있다면, 자신의 MAC 주소로 ARP 응답을 회신한다. 이후 해당 목적지로 가는 패킷을 라우터가 수신하면, 자신의 라우팅 테이블을 참조하여 올바른 인터페이스로 패킷을 포워딩한다.
이 기술의 장단점은 다음과 같다.
장점 | 단점 |
|---|---|
호스트의 라우팅 테이블 또는 게이트웨이 설정을 변경할 필요가 없음 | 불필요한 ARP 트래픽이 네트워크에 증가할 수 있음 |
네트워크 설계를 투명하게 유지할 수 있음 | ARP 스푸핑 공격에 취약해질 수 있음 |
서브넷 인식 불가 장치와의 호환성 제공 | 네트워크 문제 해결 및 디버깅을 복잡하게 만듦 |
Proxy ARP는 기본적으로 비활성화되어 있는 경우가 많으며, 네트워크 관리자가 특정 목적을 위해 명시적으로 구성한다. 현대 네트워크에서는 CIDR과 명시적인 라우팅 설정이 일반화되어 예전보다 사용 빈도가 줄었지만, 특정 호환성 유지나 네트워크 마이그레이션 과정에서 여전히 유용하게 활용된다.
Gratuitous ARP는 네트워크 상의 다른 호스트에게 정보를 요청하지 않고, 자발적으로 자신의 IP 주소와 MAC 주소 매핑을 알리는 ARP 패킷입니다. 이 패킷은 목적지 IP 주소 필드에 자신의 IP 주소를, 목적지 MAC 주소 필드는 일반적으로 브로드캐스트 주소(FF:FF:FF:FF:FF:FF)를 사용하여 전송됩니다. 네트워크 상의 모든 호스트는 이 패킷을 수신하여 자신의 ARP 캐시를 갱신하게 됩니다.
주요 목적은 IP 주소 충돌 탐지와 ARP 캐시 갱신입니다. 호스트가 네트워크에 연결되거나 IP 주소가 변경되었을 때 Gratuitous ARP를 전송하면, 동일한 네트워크에 같은 IP 주소를 사용하는 다른 호스트가 존재할 경우 그 호스트가 응답하여 충돌을 알릴 수 있습니다. 또한, 이 패킷을 수신한 다른 호스트들은 자신의 ARP 캐시에 해당 IP-MAC 매핑을 즉시 등록하거나 갱신함으로써, 향후 통신 시 ARP 요청 단계를 생략할 수 있어 효율성이 향상됩니다.
Gratuitous ARP는 고가용성 구성에서도 중요한 역할을 합니다. 예를 들어, 한 쌍의 서버가 VRRP나 HSRP 같은 프로토콜을 통해 하나의 가상 IP 주소를 공유하는 경우, 액티브 서버가 스탠바이 서버로 전환될 때 새로운 액티브 서버가 Gratuitous ARP를 전송합니다. 이는 네트워크의 스위치와 다른 호스트들이 해당 가상 IP에 대한 MAC 주소 매핑을 새로운 서버의 실제 MAC 주소로 빠르게 갱신하도록 하여, 서비스 중단 시간을 최소화하는 데 기여합니다.
Reverse ARP는 ARP의 반대 개념으로, 자신의 MAC 주소는 알지만 IP 주소를 모르는 호스트가 자신의 IP 주소를 질의하기 위해 사용하는 프로토콜이다. 이는 무디스크 워크스테이션과 같이 로컬 디스크가 없어 부팅 시 IP 주소를 저장할 장소가 없는 장치에서 주로 활용되었다. 이러한 장치는 부트스트랩 프로토콜이나 DHCP와 같은 더 진보된 프로토콜이 등장하기 전에 네트워크에 접속하기 위한 주소 정보를 얻는 방법으로 RARP를 사용했다.
RARP의 동작 방식은 ARP와 정반대이다. IP 주소를 알고 MAC 주소를 묻는 ARP와 달리, RARP는 클라이언트가 자신의 MAC 주소를 담은 RARP 요청 패킷을 브로드캐스트한다. 네트워크 상의 RARP 서버는 이 요청을 수신하고, 미리 구성된 매핑 테이블을 조회하여 해당 MAC 주소에 할당된 IP 주소를 찾는다. 그 후 서버는 RARP 응답 패킷을 유니캐스트로 클라이언트에게 보내 IP 주소를 알려준다.
프로토콜 | 질의 내용 | 응답 내용 | 주요 용도 |
|---|---|---|---|
특정 IP 주소의 MAC 주소? | 해당 IP의 MAC 주소 | 일반적인 IP-MAC 주소 변환 | |
특정 MAC 주소의 IP 주소? | 해당 MAC의 IP 주소 | 디스크리스 머신의 IP 주소 획득 |
RARP는 몇 가지 명확한 한계를 가지고 있어 현대 네트워크에서는 거의 사용되지 않는다. 가장 큰 문제는 RARP 서버가 클라이언트와 동일한 물리 네트워크 세그먼트에 존재해야 하며, 서버가 정적인 매핑 테이블을 수동으로 관리해야 한다는 점이다. 또한 IP 주소 이외의 서브넷 마스크, 기본 게이트웨이, DNS 서버 주소 등의 추가 구성 정보를 제공할 수 없다. 이러한 제약으로 인해 RARP는 기능이 더 풍부한 BOOTP와 그 후속인 DHCP에 의해 완전히 대체되었다.

ARP 스푸핑은 ARP 프로토콜의 신뢰 기반 동작 방식의 취약점을 악용한 공격 기법이다. ARP는 네트워크 상에서 IP 주소에 대응하는 MAC 주소를 찾기 위한 프로토콜로, 별도의 인증 절차 없이 수신된 ARP 응답을 신뢰한다는 특징을 가진다. 공격자는 이 점을 이용해 피해자에게 위조된 ARP 응답 패킷을 지속적으로 전송하여, 피해자의 ARP 캐시에 잘못된 IP-MAC 주소 매핑 정보를 주입한다. 결과적으로 피해자의 네트워크 트래픽은 의도된 목적지가 아닌 공격자의 장비로 우회되며, 이 과정에서 패킷 스니핑, 세션 하이재킹, 메인 인 더 미들 공격 등이 가능해진다.
주요 공격 기법으로는 대상 호스트의 ARP 캐시를 오염시키는 것이 일반적이다. 예를 들어, 공격자는 게이트웨이의 IP 주소에 자신의 MAC 주소를 매핑한 ARP 응답을 피해자에게 보내어, 피해자의 모든 외부 통신을 가로챈다. 반대로 피해자의 IP 주소에 자신의 MAC 주소를 매핑한 응답을 게이트웨이에 보내는 방식도 사용된다. 네트워크 스위치의 MAC 주소 테이블을 혼란시키는 MAC 플러딩 공격과 결합되면 효과가 더욱 증대된다.
이러한 보안 문제에 대한 방어 및 대응책은 여러 계층에서 적용된다. 가장 기본적인 방법은 정적 ARP 항목을 설정하는 것이지만, 대규모 네트워크에서는 관리가 어렵다. 따라서 동적 ARP 검사 같은 스위치 보안 기능을 활용하는 것이 일반적이다. DAI는 스위치 포트를 통해 전달되는 ARP 패킷의 유효성을 검사하여 위조 패킷을 차단한다. 또한 ARP 감시 소프트웨어를 설치하여 네트워크 상의 비정상적인 ARP 트래픽을 실시간으로 탐지하고 경고하는 방법도 있다. 네트워크 세그멘테이션을 통해 브로드캐스트 도메인의 범위를 줄이는 것도 ARP 스푸핑 공격의 영향을 제한하는 데 도움이 된다.
ARP 스푸핑은 ARP 프로토콜의 신뢰 기반 설계를 악용한 대표적인 공격 기법이다. 공격자는 네트워크 상에서 정상적인 호스트나 게이트웨이를 사칭하기 위해 악의적인 ARP 응답 패킷을 지속적으로 전송한다. 이 패킷은 자신의 MAC 주소가 특정 IP 주소에 매핑되어 있다고 거짓으로 알린다. 이 공격이 성공하면, 같은 브로드캐스트 도메인 내의 다른 호스트들의 ARP 캐시가 오염되어 공격자의 MAC 주소로 트래픽을 전송하게 된다.
주요 공격 유형은 중간자 공격과 서비스 거부 공격으로 나뉜다. 중간자 공격에서는 공격자가 자신을 두 호스트 사이의 중간 경로로 위장하여 모든 통신을 훔쳐보거나 변조할 수 있다. 예를 들어, 사용자와 라우터 사이에서 공격자가 양쪽의 ARP 캐시를 각각 오염시키면, 사용자의 모든 외부 인터넷 트래픽이 공격자를 거쳐 지나가게 된다. 서비스 거부 공격은 존재하지 않는 MAC 주소를 알리거나 네트워크를 과도한 ARP 트래픽으로 포화시켜 특정 호스트나 전체 네트워크의 통신을 마비시키는 데 사용된다.
다른 공격 기법으로는 ARP 캐시 포이즈닝이 있다. 이는 대상 호스트의 ARP 캐시에 지속적으로 잘못된 매핑 정보를 주입하여 원래의 정상적인 매핑을 덮어쓰게 만든다. 또한, Gratuitous ARP 패킷을 악용하는 방법도 있다. 이는 요청 없이도 자발적으로 보내지는 ARP 응답 패킷으로, 네트워크의 모든 호스트가 이를 수신하고 자신의 ARP 테이블을 갱신한다는 점을 이용한다. 공격자는 특정 IP에 대한 소유권을 주장하는 악성 Gratuitous ARP 패킷을 브로드캐스트하여 빠르게 ARP 캐시를 오염시킬 수 있다.
이러한 공격들은 스위치가 MAC 주소 학습을 기반으로 동작하는 2계층 네트워크에서 특히 효과적이다. 공격이 성공하면 네트워크 성능 저하, 연결 끊김, 또는 중요한 정보 유출 등의 심각한 결과를 초래할 수 있다.
ARP 스푸핑 공격을 방어하고 대응하기 위한 주요 방법은 정적 ARP 항목 설정, ARP 인스펙션, 포트 보안 기능 활용 등이 있다.
가장 기본적인 방어책은 중요한 호스트(예: 기본 게이트웨이 서버)에 대해 ARP 캐시에 정적(Static) ARP 항목을 수동으로 등록하는 것이다. 이렇게 하면 해당 IP 주소에 대한 ARP 응답을 동적으로 학습하지 않아, 공격자가 위조된 응답을 보내도 캐시가 갱신되지 않는다. 그러나 대규모 네트워크에서는 관리 부담이 크다는 단점이 있다. 네트워크 스위치에서 제공하는 ARP 인스펙션(ARP Inspection) 기능은 효과적인 동적 방어 수단이다. 이 기능은 스위치를 통과하는 ARP 패킷을 검사하여, 신뢰할 수 있는 소스(일반적으로 DHCP 서버)로부터 학습한 IP-MAC 매핑 정보와 일치하지 않는 위조된 패킷을 차단한다. 또한 많은 엔터프라이즈급 스위치는 포트에 특정 MAC 주소만 허용하는 포트 보안(Port Security) 기능을 제공하여, 공격자가 다른 MAC 주소로 스푸핑하는 것을 방지할 수 있다.
소프트웨어 기반의 탐지 및 방어 도구도 널리 사용된다. ARPWatch와 같은 도구는 네트워크에서 ARP 트래픽을 모니터링하고, IP-MAC 매핑의 갑작스러운 변경을 감지하면 관리자에게 알림을 보낸다. 최종 사용자 단에서는 호스트 기반 방화벽이나 안티-ARP 스푸핑 전용 소프트웨어를 설치하여 의심스러운 ARP 트래픽을 필터링할 수 있다. 네트워크 설계 측면에서는 VLAN(가상 LAN)을 이용해 브로드캐스트 도메인을 분리하면, ARP 스푸핑 공격의 영향을 특정 세그먼트로 제한하는 데 도움이 된다. 궁극적으로 IPv6로 전환하면 ARP 프로토콜 자체가 사용되지 않고, NDP(Neighbor Discovery Protocol)가 더 강력한 보안 메커니즘(IPsec 통합 등)을 제공하므로 관련 공격 위험을 근본적으로 줄일 수 있다.

ARP 캐시는 IP 주소와 MAC 주소의 매핑 정보를 일시적으로 저장하는 테이블이다. 네트워크 문제 해결 시 가장 먼저 확인해야 할 요소 중 하나이다. 대부분의 운영체제는 명령줄 도구를 제공하여 ARP 캐시를 확인하고 관리할 수 있다. 예를 들어, 윈도우에서는 arp -a 명령어를, 리눅스나 macOS에서는 arp -n 명령어를 사용하여 현재 캐시에 저장된 항목들을 조회할 수 있다. 캐시 항목은 정적(Static)과 동적(Dynamic)으로 구분되며, 동적 항목은 일정 시간(보통 2~20분)이 지나면 자동으로 삭제된다. 문제가 의심될 경우, 잘못된 항목을 arp -d 명령어로 수동 삭제하여 새롭게 학습되도록 할 수 있다.
일반적인 ARP 관련 네트워크 장애 증상은 특정 호스트로의 통신 불가 또는 간헐적인 연결 끊김이다. 이는 잘못된 MAC 주소가 캐시에 저장되어 패킷이 잘못된 물리적 장치로 전송되기 때문이다. 증상은 다음과 같다.
증상 | 가능한 원인 |
|---|---|
특정 IP로만 핑(ping)이 실패함 | 해당 IP의 ARP 캐시 항목이 잘못됨 또는 ARP 스푸핑 공격 |
네트워크 접속이 갑자기 느려지거나 끊김 | 브로드캐스트 스톰 또는 과도한 ARP 트래픽 |
동일 서브넷 내 특정 PC만 접속 불가 | 대상 PC의 ARP 캐시 오염 또는 네트워크 인터페이스 카드 오류 |
문제를 해결하기 위해선 먼저 ARP 캐시를 확인하고 오래되거나 의심스러운 항목을 삭제한다. 이후 ping 명령어를 통해 통신을 재시도하면 새로운 ARP 요청과 ARP 응답 과정을 통해 정상적인 매핑 정보를 획득할 수 있다. 지속적인 문제가 발생한다면 네트워크 스니퍼 도구를 사용하여 네트워크 상의 실제 ARP 패킷을 모니터링하는 것이 효과적이다. 이를 통해 정상적인 응답이 오는지, 또는 동일 IP에 대해 서로 다른 MAC 주소를 알리는 패킷(ARP 스푸핑 징후)이 있는지 확인할 수 있다. 또한, 스위치의 포트 보안 설정이나 ARP Inspection과 같은 네트워크 장비 차원의 보안 기능을 활성화하여 예방할 수 있다.
ARP 캐시는 IP 주소와 MAC 주소의 매핑 정보를 임시로 저장하는 테이블이다. 이 캐시는 네트워크 효율성을 높이기 위해 존재하지만, 잘못된 정보가 저장되면 통신 장애를 일으킬 수 있다. 따라서 네트워크 문제 해결 시 ARP 캐시의 상태를 확인하고 관리하는 것은 기본적인 절차이다.
주요 운영체제별 ARP 캐시 확인 및 관리 명령어는 다음과 같다.
운영체제 | 캐시 확인 명령어 | 캐시 삭제 명령어 | 특이사항 |
|---|---|---|---|
Windows |
|
| 관리자 권한 필요 |
Linux / macOS |
|
|
|
Cisco IOS |
|
|
최신 리눅스 시스템과 같은 많은 유닉스 계열 시스템에서는 전통적인 arp 명령어보다 ip neigh 명령어를 사용하는 것을 권장한다. ip neigh show로 캐시를 확인하고, ip neigh flush dev <인터페이스>와 같은 명령으로 특정 인터페이스의 캐시를 비울 수 있다.
캐시 관리는 정적 항목과 동적 항목을 구분하여 이해해야 한다. 대부분의 항목은 동적으로 학습되며, 일정 시간(보통 몇 분)이 지나면 자동으로 삭제된다. 반면, 네트워크 관리자는 중요한 장치에 대해 arp -s (Windows)나 ip neigh add ... permanent (Linux) 명령을 사용하여 정적 ARP 항목을 설정할 수 있다. 이는 ARP 스푸핑 공격을 부분적으로 방어하거나, 특정 장치와의 통신을 안정화하는 데 사용된다. 그러나 정적 항목은 IP 주소나 MAC 주소가 변경될 경우 통신 장애의 원인이 될 수 있으므로 신중하게 관리해야 한다.
ARP 관련 장애는 네트워크 연결 불안정, 특정 호스트로의 통신 실패, 또는 네트워크 성능 저하로 나타나는 경우가 많습니다. 가장 흔한 증상은 IP 주소를 알고 있는 특정 장치(예: 게이트웨이 또는 파일 서버)에 갑자기 연결할 수 없게 되는 것입니다. 이는 ARP 캐시에 잘못된 MAC 주소가 등록되어 있거나, ARP 요청에 대한 응답이 오지 않아 캐시 항목이 생성되지 않았기 때문일 수 있습니다. 사용자는 '요청한 주소에 연결할 수 없음' 또는 '네트워크 경로를 찾을 수 없음'과 같은 오류 메시지를 접할 수 있습니다.
간헐적인 연결 끊김과 높은 네트워크 지연 또한 ARP 문제를 시사합니다. 특히 ARP 스푸핑 공격이 발생하는 네트워크에서는 통신이 제3자의 장치를 거치게 되어 패킷 손실이나 지연이 발생할 수 있습니다. 네트워크 관리 도구에서 동일한 IP 주소에 대한 MAC 주소가 짧은 시간 내에 자주 변경되거나, 하나의 MAC 주소가 여러 IP 주소에 응답하는 비정상적인 ARP 트래픽이 관찰될 수 있습니다.
증상 | 가능한 원인 |
|---|---|
특정 IP로의 통신 실패 | 대상의 MAC 주소를 획득하지 못함, ARP 캐시 오염, 프록시 ARP 미설정 |
간헐적 연결 끊김 | ARP 캐시 항목의 타임아웃, 그래투이티스 ARP 충돌, ARP 스푸핑 공격 |
네트워크 성능 저하 | 과도한 ARP 브로드캐스트 트래픽, 잘못 구성된 ARP 캐시 |
IP 충돌 경고 | 동일 네트워크에서 중복 IP 사용으로 인한 그래투이티스 ARP 경쟁 |
이러한 증상들은 종종 스위치나 라우터의 물리적 포트 문제, VLAN 설정 오류, 또는 호스트의 네트워크 드라이버 결함과 혼동될 수 있습니다. 따라서 ARP 캐시를 확인하고 네트워크에서 발생하는 ARP 패킷을 분석하는 것이 정확한 원인 진단의 첫 단계입니다.

ARP 프로토콜은 IP 프로토콜과 밀접하게 연동되어 동작한다. ARP의 핵심 목적은 같은 LAN 세그먼트 내에서 호스트나 라우터가 알고 있는 IP 주소에 대응하는 MAC 주소를 찾는 것이다. 따라서 IP 패킷을 최종적으로 물리적 네트워크를 통해 전송하려면 반드시 ARP를 통해 목적지의 MAC 주소를 획득해야 한다. 이 과정은 TCP/IP 프로토콜 스위트의 네트워크 인터페이스 계층에서 이루어진다.
IPv6 환경에서는 ARP가 사용되지 않으며, 그 역할을 NDP가 대신한다. NDP는 ICMPv6 메시지를 활용하여 IP 주소와 MAC 주소의 매핑을 해결한다. 구체적으로, NDP의 이웃 탐색 기능 내에 포함된 이웃 요청과 이웃 광고 메시지가 ARP 요청과 응답에 해당하는 작업을 수행한다[2]. 또한 NDP는 주소 자동 구성, 라우터 탐색, 중복 주소 검출 등 ARP보다 더 광범위한 기능을 제공한다.
다른 관련 프로토콜로는 RARP가 있다. RARP는 ARP의 반대 과정으로, 자신의 MAC 주소는 알지만 IP 주소를 모를 때(예: 디스크리스 워크스테이션) RARP 서버에게 자신의 IP 주소를 질의하는 데 사용되었다. 그러나 RARP는 현재 대부분 BOOTP나 DHCP 프로토콜로 대체되었다.
프로토콜 | 주소 변환 방향 | 사용 환경 | 주요 대체 프로토콜 |
|---|---|---|---|
IP 주소 → MAC 주소 | IPv4 네트워크 | - | |
MAC 주소 → IP 주소 | IPv4 네트워크 (과거) | ||
NDP (이웃 탐색) | IP 주소 → MAC 주소 | IPv6 네트워크 | - |
ARP 프로토콜은 IP 프로토콜이 동작하기 위해 필수적인 보조 프로토콜이다. IP 프로토콜은 논리적인 IP 주소를 사용하여 네트워크 상의 호스트를 식별하고 데이터를 라우팅하지만, 실제 물리적인 네트워크 세그먼트 내에서 데이터 프레임을 전송하려면 목적지의 MAC 주소가 필요하다. ARP는 바로 이 IP 주소를 MAC 주소로 변환하는 역할을 담당하여, IP 통신이 최종적으로 물리적 링크를 통해 이루어질 수 있도록 한다.
IP 프로토콜 스택에서 데이터를 보내는 과정은 ARP의 동작과 밀접하게 연동된다. 송신 호스트가 특정 IP 주소로 데이터그램을 전송하려고 할 때, 먼저 자신의 ARP 캐시를 확인하여 해당 IP 주소에 대응하는 MAC 주소가 있는지 찾는다. 캐시에 정보가 없으면, ARP 요청(ARP Request) 브로드캐스트를 로컬 네트워크에 전송한다. 이 요청을 수신한 호스트 중 목표 IP 주소를 가진 호스트는 자신의 MAC 주소를 담은 ARP 응답(ARP Reply)을 유니캐스트로 회신한다. 이 과정을 통해 얻은 매핑 정보는 캐시에 저장되어 이후 통신에 재사용된다.
이 연동 관계는 OSI 모델의 계층 구조를 명확히 보여준다. IP 프로토콜은 네트워크 계층(3계층)에서 작동하며, 논리적 주소를 기반으로 패킷을 전달한다. 반면 ARP는 네트워크 계층과 데이터 링크 계층(2계층) 사이에서 브리징 역할을 하여, 상위 계층의 논리적 주소를 하위 계층의 물리적 주소로 해결한다. 따라서 ARP가 정상적으로 동작하지 않으면, IP 프로토콜을 통해 설정된 모든 연결이 실제로 프레임을 전송할 수 없게 되어 통신 자체가 불가능해진다.
IPv6 환경에서는 ARP 프로토콜이 사용되지 않는다. IPv6는 128비트의 긴 주소 체계를 가지며, 링크-로컬 주소를 기반으로 한 NDP가 MAC 주소와 IP 주소의 매핑을 담당한다. NDP는 ICMPv6 프로토콜을 기반으로 동작하며, ARP의 기능을 대체하고 라우터 발견, 주소 자동 구성, 중복 주소 검사 등 더 많은 기능을 통합한다.
NDP의 핵심 메시지 중 하나는 이웃 요청과 이웃 광고이다. 호스트가 특정 IPv6 주소의 링크 계층 주소를 알고 싶을 때, 해당 주소를 대상으로 한 멀티캐스트 이웃 요청 메시지를 보낸다. 이 요청을 받은 대상 호스트는 이웃 광고 메시지를 유니캐스트로 응답하여 자신의 MAC 주소를 알린다. 이 과정은 ARP의 요청/응답과 유사하지만, ICMPv6 패킷을 사용하며 별도의 프로토콜이 필요 없다는 차이가 있다.
NDP는 또한 라우터 요청과 라우터 광고 메시지를 통해 네트워크의 기본 게이트웨이를 자동으로 발견하는 기능을 제공한다. 호스트가 부팅되면 라우터를 찾기 위해 라우터 요청을 멀티캐스트하고, 라우터는 정기적으로 또는 요청에 응답하여 라우터 광고를 보낸다. 이 광고에는 네트워크 프리픽스, 기본 홉 제한, MTU 같은 중요한 구성 정보가 포함된다.
기능 | ARP (IPv4) | NDP (IPv6) |
|---|---|---|
주요 프로토콜 | 별도의 ARP 프로토콜 | ICMPv6의 일부 |
주소 확인 메시지 | ARP Request/Reply | Neighbor Solicitation/Advertisement |
라우터 발견 | 별도 프로토콜 (예: DHCP, 수동) | Router Solicitation/Advertisement (NDP 내장) |
주소 자동 구성 | 지원 안 함 (주로 DHCP) | SLAAC 지원 |
보안 메커니즘 | 기본적으로 없음 |
이러한 통합 설계로 인해 IPv6 네트워크는 ARP 브로드캐스트 스톰 문제를 피하고, 보다 효율적인 주소 해결과 네트워크 구성을 가능하게 한다.
