ARP란 무엇인가
ARP(Address Resolution Protocol)는 TCP/IP 네트워크에서 IP 주소에 대응하는 MAC 주소(물리적 주소)를 동적으로 찾아내는 주소 변환 프로토콜이다. 1982년 IETF의 RFC 826 문서를 통해 공식적으로 표준화되었으며, OSI 7계층 모델로 보면 2계층(데이터 링크 계층)과 3계층(네트워크 계층) 사이의 경계에서 동작한다. 즉, 논리적 주소(IP)와 물리적 주소(MAC)를 연결하는 역할을 한다.
네트워크 통신에서 실제 데이터 전송은 MAC 주소를 기반으로 이루어진다. 하지만 상위 계층(네트워크 계층)에서는 보통 IP 주소만 알고 있으므로, 하위 계층(데이터 링크 계층)에서 패킷을 전송하려면 목적지의 MAC 주소를 먼저 알아야 한다. 이때 ARP가 IP 주소를 MAC 주소로 변환하는 과정을 담당한다. ARP는 브로드캐스트(broadcast) 방식으로 네트워크 내 모든 장치에게 질의를 보내고, 해당 IP를 가진 장치만 응답하는 구조로 동작한다. 이더넷(Ethernet)을 비롯한 대부분의 로컬 네트워크 환경에서 필수적으로 사용되는 이유가 여기에 있다.
ARP의 역할과 필요성
ARP는 TCP/IP 네트워크 스택에서 다음과 같은 핵심 역할을 수행하며, 이는 네트워크 통신이 정상적으로 이루어지기 위한 필수 요소다.
IP 주소를 MAC 주소로 변환
- 3계층(네트워크 계층)의 논리적 주소인 IP를 2계층(데이터 링크 계층)의 물리적 주소인 MAC으로 매핑
- 라우터, 스위치, 호스트 등 모든 네트워크 장치가 실제 통신을 위해 필요
네트워크 내에서 직접 통신 가능한 장치 식별
- 동일한 서브넷(브로드캐스트 도메인) 내의 장치들 간 직접 통신 지원
- 라우터를 거치지 않고 직접 연결된 장치들 사이의 효율적인 패킷 전송 가능
ARP 캐싱을 통한 성능 최적화
- 한 번 학습한 MAC 주소를 메모리(ARP 캐시)에 저장하여 반복적인 브로드캐스트 요청 방지
- 네트워크 트래픽 감소와 응답 시간 단축으로 전체 네트워크 성능 향상
중복된 IP 충돌 감지 (Gratuitous ARP 사용)
- 호스트가 네트워크에 참여할 때 자신의 IP 주소가 이미 사용 중인지 확인
- IP 주소 충돌 방지 및 네트워크 안정성 보장
라우터와 게이트웨이 발견
- 기본 게이트웨이(default gateway)의 MAC 주소 학습을 통해 외부 네트워크 통신 가능
- 서브넷 외부로 나가는 모든 패킷이 라우터의 MAC 주소로 전송되도록 지원
ARP의 OSI 계층 위치
ARP는 흔히 2.5계층 프로토콜로 분류된다. 2계층(데이터 링크 계층)의 이더넷 프레임에 캡슐화되지만, 3계층(네트워크 계층)의 IP 주소를 사용해 두 계층을 연결하기 때문이다.
계층별 역할:
- 3계층 (네트워크 계층): IP 패킷 생성, 논리적 주소 지정, 라우팅 결정
- ARP (2.5계층): IP 주소 → MAC 주소 변환
- 2계층 (데이터 링크 계층): 이더넷 프레임 생성, 물리적 주소 지정, 스위칭
ARP 패킷은 IP 패킷 내에 캡슐화되지 않고 직접 이더넷 프레임에 캡슐화되며, 이더넷 프레임의 EtherType 필드에 0x0806 값을 사용하여 ARP 프로토콜임을 명시한다.
ARP 패킷 구조

ARP 패킷은 28바이트의 고정된 크기를 가지며, 이더넷 프레임 내에 직접 캡슐화되어 전송된다.
이더넷 프레임 헤더 (14바이트):
- 목적지 MAC 주소 (6바이트): ARP 요청은 FF:FF:FF:FF:FF:FF (브로드캐스트), ARP 응답은 특정 MAC 주소
- 출발지 MAC 주소 (6바이트): 요청 또는 응답을 보내는 장치의 MAC 주소
- EtherType (2바이트): 0x0806 (ARP 프로토콜 식별자)
ARP 패킷 필드 (28바이트):
- Hardware Type (2바이트): 하드웨어 주소 타입, 0x0001 (이더넷)
- Protocol Type (2바이트): 프로토콜 주소 타입, 0x0800 (IPv4)
- Hardware Length (1바이트): MAC 주소 길이, 6바이트
- Protocol Length (1바이트): IP 주소 길이, 4바이트
- Operation (2바이트): 동작 코드, 1 (ARP 요청), 2 (ARP 응답)
- Sender Hardware Address (6바이트): 송신자의 MAC 주소
- Sender Protocol Address (4바이트): 송신자의 IP 주소
- Target Hardware Address (6바이트): 수신자의 MAC 주소, 요청 시 00:00:00:00:00:00
- Target Protocol Address (4바이트): 수신자의 IP 주소
이더넷 프레임은 최소 60바이트 크기를 요구한다. 따라서 ARP 패킷은 이더넷 헤더 14바이트와 ARP 본문 28바이트를 합쳐 42바이트이므로, 전송 시 18바이트의 패딩(padding)이 추가된다. 여기에 프레임 끝의 4바이트 FCS(Frame Check Sequence)까지 포함하면 총 64바이트 이더넷 프레임이 된다.
ARP 동작 과정

ARP는 2단계 프로세스(요청-응답)로 동작하며, 브로드캐스트 요청과 유니캐스트 응답의 조합으로 이루어진다.
1. ARP 요청 (ARP Request)
호스트 A(192.168.1.10)가 호스트 B(192.168.1.20)와 통신하고자 하는데 MAC 주소를 모르는 상황에서 ARP 요청이 시작된다.
ARP 요청 패킷 구성:
[이더넷 헤더]
목적지 MAC: FF:FF:FF:FF:FF:FF (브로드캐스트)
출발지 MAC: AA:AA:AA:AA:AA:AA (호스트 A의 MAC)
EtherType: 0x0806 (ARP)
[ARP 패킷]
Hardware Type: 0x0001 (이더넷)
Protocol Type: 0x0800 (IPv4)
Hardware Length: 6
Protocol Length: 4
Operation: 1 (요청)
Sender MAC: AA:AA:AA:AA:AA:AA
Sender IP: 192.168.1.10
Target MAC: 00:00:00:00:00:00 (알 수 없음)
Target IP: 192.168.1.20
브로드캐스트 전송:
- 스위치는 목적지 MAC이 브로드캐스트(FF:FF:FF:FF:FF:FF)임을 인식하고 동일한 브로드캐스트 도메인(VLAN)의 모든 포트로 프레임을 전송한다
- 동일 서브넷의 모든 호스트가 ARP 요청 패킷을 수신하여 네트워크 카드(NIC)까지 전달된다
- 각 호스트는 Target IP 필드를 확인하여 자신의 IP와 일치하는지 검사한다
2. ARP 응답 (ARP Reply)
호스트 B(192.168.1.20)는 Target IP가 자신의 IP와 일치함을 확인하고 유니캐스트 ARP 응답을 보낸다.
ARP 응답 패킷 구성:
[이더넷 헤더]
목적지 MAC: AA:AA:AA:AA:AA:AA (호스트 A의 MAC)
출발지 MAC: BB:BB:BB:BB:BB:BB (호스트 B의 MAC)
EtherType: 0x0806 (ARP)
[ARP 패킷]
Hardware Type: 0x0001 (이더넷)
Protocol Type: 0x0800 (IPv4)
Hardware Length: 6
Protocol Length: 4
Operation: 2 (응답)
Sender MAC: BB:BB:BB:BB:BB:BB
Sender IP: 192.168.1.20
Target MAC: AA:AA:AA:AA:AA:AA
Target IP: 192.168.1.10
유니캐스트 전송:
- 목적지 MAC 주소가 특정 호스트(호스트 A)로 지정되어 스위치는 MAC 주소 테이블을 참조하여 해당 포트로만 전송한다
- 호스트 A는 ARP 응답을 수신하고 192.168.1.20의 MAC 주소가 BB:BB:BB:BB:BB:BB임을 학습한다
- 학습한 정보는 ARP 캐시(ARP 테이블)에 저장되어 일정 시간 동안 재사용된다
3. ARP 캐시 저장 및 데이터 전송
호스트 A는 학습한 MAC 주소를 ARP 캐시에 저장한다. 이후 호스트 B로 전송할 패킷의 목적지 MAC 주소를 BB:BB:BB:BB:BB:BB로 설정해 직접 전송할 수 있다. ARP 캐시 엔트리는 TTL(Time To Live)에 따라 일정 시간(보통 2-20분) 후 만료되어 삭제되며, 필요하면 다시 ARP 요청을 통해 갱신된다.
ARP 캐시와 TTL
ARP는 네트워크 성능 최적화를 위해 학습한 MAC 주소 정보를 메모리에 캐싱하며, 이를 ARP 캐시(ARP Table) 또는 ARP 테이블이라고 부른다.
ARP 캐시의 종류:
동적 ARP 캐시 (Dynamic ARP Cache)
- ARP 요청-응답 과정을 통해 자동으로 학습된 MAC 주소 정보
- TTL(Time To Live) 타이머가 설정되어 일정 시간 후 자동 삭제됨
- Windows: 기본 2분, 최대 10분 (사용 시 갱신)
- Linux: 기본 60초 (사용 시 갱신), 최대 30분
- 네트워크 변경 사항(IP 또는 MAC 변경)에 자동으로 적응
정적 ARP 캐시 (Static ARP Cache)
- 네트워크 관리자가 수동으로 설정한 MAC 주소 정보
- TTL이 없어 시스템 재부팅 전까지 영구적으로 유지됨
- 중요한 서버, 게이트웨이 등에 사용하여 ARP 스푸핑 공격 방지
- 설정 예시 (Linux):
sudo arp -s 192.168.1.1 aa:bb:cc:dd:ee:ff - 설정 예시 (Windows):
arp -s 192.168.1.1 aa-bb-cc-dd-ee-ff
ARP 캐시 조회 명령어:
- Linux:
arp -n또는ip neigh show - Windows:
arp -a - macOS:
arp -a
ARP 캐시 삭제 명령어:
- Linux:
sudo ip neigh flush all(모든 엔트리 삭제) - Windows:
arp -d *(모든 엔트리 삭제) - macOS:
sudo arp -d -a(모든 엔트리 삭제)
특수한 ARP 유형
ARP 프로토콜은 기본적인 요청-응답 외에도 여러 특수한 용도로 활용되며, 각각 특정한 네트워크 시나리오를 해결하기 위해 설계되었다.
Gratuitous ARP (무상 ARP)
Gratuitous ARP는 별도의 요청 없이 호스트가 스스로 보내는 ARP 패킷이다. 송신자와 수신자 IP 주소가 모두 자기 자신의 IP 주소로 설정되며, 브로드캐스트 방식으로 전송되어 네트워크의 모든 장치가 송신자의 MAC 주소를 학습하거나 갱신하도록 한다.
주요 용도:
IP 주소 충돌 감지 (Duplicate IP Detection)
- 호스트가 부팅 시 또는 IP 설정 시 자신의 IP 주소를 브로드캐스트하여 중복 사용 여부 확인
- 동일한 IP를 사용하는 다른 장치가 있으면 응답이 오므로 충돌 감지 가능
ARP 캐시 업데이트 알림
- 네트워크 카드(NIC) 교체 시 MAC 주소 변경을 모든 호스트에게 알림
- 장애 조치(failover) 시 가상 IP(VIP)의 MAC 주소가 변경되었음을 알림
- 네트워크 재구성 시 신속한 MAC 주소 정보 동기화
고가용성 클러스터 (High Availability Cluster)
- VRRP, HSRP 등의 프로토콜에서 마스터 노드가 변경될 때 새로운 MAC 주소 전파
- 로드 밸런서에서 가상 서버의 MAC 주소 변경 알림
Proxy ARP
Proxy ARP는 라우터가 다른 서브넷에 속한 호스트를 대신해 ARP 요청에 응답하는 기술이다. 이를 이용하면 클라이언트는 라우터의 존재를 명시적으로 인식하지 않아도, 상대가 같은 서브넷에 있는 것처럼 통신할 수 있다.
동작 원리:
- 호스트 A(192.168.1.10/24)가 호스트 B(192.168.2.20/24)에게 패킷을 보내려 하지만 게이트웨이 설정이 없어 같은 서브넷으로 착각한다
- 호스트 A는 192.168.2.20에 대한 ARP 요청을 브로드캐스트한다
- 라우터는 192.168.2.20이 자신이 연결된 다른 서브넷에 있음을 알고 자신의 MAC 주소로 ARP 응답을 보낸다
- 호스트 A는 라우터의 MAC 주소로 패킷을 전송하고 라우터는 이를 실제 목적지로 포워딩한다
사용 사례:
- 레거시 시스템에서 게이트웨이 설정이 불가능한 경우
- 서브넷 분할 후 일시적인 호환성 유지
- 단순화된 네트워크 구성 (현대 네트워크에서는 권장되지 않음)
Reverse ARP (RARP)
Reverse ARP는 RFC 903(1984)에 정의된 프로토콜로, ARP의 반대 기능을 수행하며, 자신의 MAC 주소는 알지만 IP 주소를 모르는 장치가 네트워크에서 IP 주소를 얻기 위해 사용한다.
동작 원리:
- 클라이언트는 자신의 MAC 주소를 포함한 RARP 요청을 브로드캐스트한다
- RARP 서버는 MAC 주소와 IP 주소의 매핑 테이블을 참조하여 해당 MAC에 할당된 IP를 찾는다
- RARP 서버는 IP 주소를 포함한 RARP 응답을 클라이언트에게 전송한다
역사적 의의:
- 1980년대 디스크리스(diskless) 워크스테이션이 부팅 시 IP 주소를 얻기 위해 사용되었다
- 현재는 BOOTP(1985)와 DHCP(1993)로 대체되어 거의 사용되지 않는다
- RARP는 브로드캐스트 도메인 내에서만 작동하지만 DHCP는 DHCP Relay를 통해 다른 서브넷에서도 작동 가능하다
ARP의 보안 문제점
ARP는 1982년 설계 당시 보안을 충분히 고려하지 않았다. 그 결과 인증(authentication) 메커니즘이 없고, 여러 보안 취약점에 노출될 수 있다.
1. ARP 스푸핑 (ARP Spoofing)
ARP 스푸핑은 공격자가 위조된 ARP 응답 패킷을 전송하여 희생자의 ARP 캐시를 오염시키는 공격 기법으로, 네트워크 내에서 중간자 공격(MITM)을 수행하는 가장 일반적인 방법이다.
공격 메커니즘:
- 공격자는 희생자 A에게 “게이트웨이(192.168.1.1)의 MAC 주소는 공격자의 MAC"이라는 위조 ARP 응답을 지속적으로 전송한다
- 공격자는 게이트웨이에게 “희생자 A(192.168.1.10)의 MAC 주소는 공격자의 MAC"이라는 위조 ARP 응답을 전송한다
- 희생자 A는 외부로 나가는 모든 패킷을 공격자에게 전송하고, 게이트웨이는 희생자 A로 향하는 모든 패킷을 공격자에게 전송한다
- 공격자는 패킷을 가로채어 내용을 읽거나 수정한 후 원래 목적지로 포워딩하여 통신이 정상적으로 이루어지는 것처럼 위장한다
공격 도구: Ettercap, Cain & Abel, Arpspoof, Bettercap 등
2. ARP 캐시 포이즈닝 (ARP Cache Poisoning)
ARP 캐시 포이즈닝은 ARP 스푸핑과 유사하지만 더 광범위한 개념으로, 네트워크의 여러 호스트의 ARP 캐시에 잘못된 MAC 주소 정보를 주입하여 네트워크 통신 장애를 유발하거나 트래픽을 가로채는 공격이다.
피해 유형:
- 서비스 거부(DoS): 존재하지 않는 MAC 주소로 매핑하여 통신 차단
- 중간자 공격(MITM): 공격자의 MAC 주소로 매핑하여 트래픽 가로채기
- 세션 하이재킹(Session Hijacking): 인증 정보나 세션 쿠키 탈취
3. MITM (Man-in-the-Middle) 공격
ARP 스푸핑을 기반으로 한 중간자 공격으로, 공격자가 두 통신 당사자 사이에 위치하여 모든 트래픽을 가로채고 감청하거나 조작할 수 있다.
공격 시나리오:
- 비밀번호 탈취: HTTP 로그인 폼을 통해 전송되는 평문 비밀번호 가로채기
- 세션 쿠키 탈취: HTTPS가 아닌 HTTP 세션 쿠키를 가로채어 세션 하이재킹
- SSL 스트리핑(SSL Stripping): HTTPS 연결을 HTTP로 다운그레이드하여 암호화 우회
- DNS 스푸핑: DNS 응답을 조작하여 사용자를 악성 웹사이트로 유도
- 패킷 조작: 전송되는 데이터를 실시간으로 수정하여 악성 코드 삽입
ARP 보안 강화 방법
ARP의 구조적 한계를 완전히 없앨 수는 없지만, 다음과 같은 방어 기법으로 공격 위험을 크게 낮출 수 있다.
1. 정적 ARP 테이블 사용
중요한 서버, 게이트웨이, 네트워크 장비에 대해 수동으로 MAC 주소를 등록하여 ARP 스푸핑 공격을 원천 차단한다.
장점:
- ARP 스푸핑 공격에 완전히 면역
- 중요한 통신 경로(예: 서버 ↔ 게이트웨이) 보호에 효과적
단점:
- 네트워크 규모가 클수록 관리 부담 증가
- MAC 주소 변경 시(NIC 교체 등) 수동 업데이트 필요
- 동적 네트워크 환경(DHCP 등)에서는 실용성 낮음
설정 예시:
# Linux
sudo arp -s 192.168.1.1 aa:bb:cc:dd:ee:ff
# Windows
arp -s 192.168.1.1 aa-bb-cc-dd-ee-ff
2. Dynamic ARP Inspection (DAI)
관리형 스위치에서 제공하는 보안 기능으로, DHCP 스누핑(DHCP Snooping) 테이블을 기반으로 ARP 패킷의 유효성을 검증하여 위조된 ARP 패킷을 차단한다.
동작 원리:
- DHCP 스누핑을 통해 각 포트에 연결된 호스트의 IP-MAC 매핑 정보를 학습하여 바인딩 테이블 구축
- ARP 패킷이 스위치를 통과할 때 송신자 IP와 송신자 MAC을 바인딩 테이블과 비교
- 테이블에 없거나 일치하지 않는 ARP 패킷은 드롭(drop)하여 차단
- 신뢰할 수 있는 포트(uplink, 라우터 연결 포트)는 검증 없이 통과 허용
설정 예시 (Cisco 스위치):
! DHCP 스누핑 활성화
ip dhcp snooping
ip dhcp snooping vlan 10
! DAI 활성화
ip arp inspection vlan 10
! 신뢰 포트 설정 (라우터 연결 포트)
interface GigabitEthernet0/1
ip dhcp snooping trust
ip arp inspection trust
3. ARP 감시 및 탐지 시스템
네트워크 트래픽을 모니터링하여 비정상적인 ARP 활동을 탐지하고 알림을 제공하는 소프트웨어 또는 하드웨어 솔루션이다.
주요 탐지 기법:
- 동일한 IP에 대해 서로 다른 MAC 주소가 짧은 시간 내에 반복적으로 나타나는 패턴 감지
- 비정상적으로 많은 ARP 응답 패킷을 전송하는 호스트 식별
- Gratuitous ARP의 과도한 사용 감지
- ARP 요청 없이 전송되는 ARP 응답(unsolicited ARP reply) 탐지
도구 및 솔루션:
- ArpWatch (Linux): ARP 테이블 변경 사항을 로그로 기록하고 이메일 알림 전송
- XArp (Windows): 실시간 ARP 모니터링 및 스푸핑 탐지, 알림 제공
- Snort (IDS/IPS): ARP 스푸핑 탐지 룰 적용 가능
- Wireshark: 네트워크 트래픽 캡처 및 ARP 패킷 분석
4. VPN 및 암호화 프로토콜 사용
ARP 스푸핑 공격은 로컬 네트워크(동일 브로드캐스트 도메인)에서만 가능하므로, 신뢰할 수 없는 네트워크(공용 Wi-Fi 등)에서는 VPN을 사용하여 암호화된 터널을 구축하면 공격자가 트래픽을 가로채더라도 내용을 읽을 수 없다.
보호 메커니즘:
- VPN 터널 내의 모든 트래픽은 암호화되어 ARP 스푸핑으로 가로채도 해독 불가능
- HTTPS, SSH, TLS 등 애플리케이션 계층 암호화 프로토콜 사용
- IPsec을 통한 네트워크 계층 암호화
5. 네트워크 분할 (Network Segmentation)
VLAN(Virtual LAN)을 통해 네트워크를 논리적으로 분할하여 브로드캐스트 도메인을 제한하면 ARP 스푸핑 공격의 영향 범위를 최소화할 수 있다.
장점:
- 공격자가 접근할 수 있는 호스트 수 제한
- 중요한 서버와 일반 사용자를 다른 VLAN으로 분리하여 보호
- 각 VLAN마다 별도의 보안 정책 적용 가능
마치며
ARP(Address Resolution Protocol)는 1982년 RFC 826을 통해 표준화된 이후 40년 넘게 TCP/IP 네트워크의 핵심 프로토콜로 사용되어 왔다. 이 프로토콜은 IP 주소를 MAC 주소로 변환해 이더넷 네트워크에서 실제 데이터 전송이 가능하도록 만든다. 브로드캐스트 기반의 요청-응답 메커니즘과 캐싱 덕분에 효율적으로 동작하지만, 설계 초기에 보안이 충분히 고려되지 않아 ARP 스푸핑, 캐시 포이즈닝, 중간자 공격 같은 취약점도 함께 안고 있다. 따라서 네트워크 관리자는 정적 ARP 테이블, Dynamic ARP Inspection, ARP 감시 시스템, VPN 암호화, 네트워크 분할 같은 방어 기법을 상황에 맞게 조합해야 한다. 오늘날 IPv6 환경에서는 NDP(Neighbor Discovery Protocol)가 ARP를 대체하지만, IPv4 네트워크가 여전히 널리 쓰이는 만큼 ARP의 동작 원리와 보안 이슈를 이해하는 일은 네트워크 엔지니어와 보안 전문가에게 여전히 중요하다.