ARP(Address Resolution Protocol)는 IPv4 주소 같은 프로토콜 주소를 이더넷 주소 같은 링크 계층 주소로 바꾸는 프로토콜이며, RFC 826이 정한다.[1] 이더넷에서 ARP 패킷은 EtherType 0x0806으로 실린다.[2]

요청과 응답

호스트가 같은 링크의 IPv4 주소로 보낼 때 대응하는 링크 계층 주소가 ARP 캐시에 없으면 ARP 요청을 브로드캐스트한다. 요청에는 보내는 쪽의 주소 쌍과 찾는 IPv4 주소가 들어 있다. 요청을 받은 호스트는 찾는 주소가 자기 주소이면, 자기 링크 계층 주소를 담은 ARP 응답을 브로드캐스트하지 않고 요청한 호스트에 직접 보낸다.[1]

요청을 받은 호스트 가운데 찾는 주소의 주인은 요청한 호스트의 주소 쌍을 자기 캐시에 넣는다. 캐시에 이미 그 호스트의 항목이 있는 호스트는 그 항목을 새 링크 계층 주소로 고친다. 그래서 응답하는 쪽도 따로 묻지 않고 요청한 쪽의 주소를 안다.[1]

호스트는 알아낸 주소 쌍을 캐시에 두고 다시 쓴다.[1][3] RFC 1122는 ARP 구현이 낡은 캐시 항목을 지우는 방법을 두도록 요구한다.[3]

목적 호스트가 다른 네트워크에 있으면 IP(Internet Protocol) 데이터그램은 연결된 네트워크의 라우터로 보내고, ARP는 목적 호스트가 아니라 이 다음 홉의 링크 계층 주소를 찾는다.[1][3]

ARP에는 보안 취약점이 있다. 악의적인 호스트는 거짓 ARP 패킷을 보내 다른 호스트의 동작을 방해할 수 있다. 예를 들어 모든 ARP 요청에 자기 하드웨어 주소를 담아 응답하면 네트워크의 모든 주소를 제 것이라고 주장할 수 있다.[4]

패킷

ARP 패킷의 필드는 아래와 같다.[1]

필드뜻
Hardware type링크 계층(하드웨어 주소 공간)의 종류. 이더넷은 1
Protocol type찾는 프로토콜 주소의 종류. 이더넷에서는 그 프로토콜의 EtherType 값
Hardware address length링크 계층 주소의 길이. 바이트 단위
Protocol address length프로토콜 주소의 길이. 바이트 단위
Opcode요청은 1, 응답은 2
Sender hardware address보내는 쪽의 링크 계층 주소
Sender protocol address보내는 쪽의 프로토콜 주소
Target hardware address받는 쪽의 링크 계층 주소. 요청에서는 이 값을 알아내려는 것이라 뜻이 없다.
Target protocol address받는 쪽의 프로토콜 주소

IPv4의 Protocol type은 IP의 EtherType인 0x0800이다.[1][5]

Neighbor Discovery와의 차이

IPv6 노드는 IPv4에서 ARP가 하던 일, 곧 같은 링크에 있는 이웃의 링크 계층 주소를 알아내는 일을 Neighbor Discovery 프로토콜로 한다.[6]

[1]
IETF, “RFC 826 An Ethernet Address Resolution Protocol: Or Converting Network Protocol Addresses to 48.bit Ethernet Address for Transmission on Ethernet Hardware.” 1982. Accessed: Sep. 29, 2026. [Online]. Available: https://www.rfc-editor.org/rfc/rfc826
[2]
IEEE Registration Authority, “EtherType Public Listing.” 2024. Accessed: Sep. 29, 2026. [Online]. Available: https://web.archive.org/web/20240112103605/https://standards-oui.ieee.org/ethertype/eth.txt
[3]
IETF, “RFC 1122 Requirements for Internet Hosts — Communication Layers.” 1989. Accessed: Sep. 26, 2026. [Online]. Available: https://www.rfc-editor.org/rfc/rfc1122
[4]
IETF, “RFC 5227 IPv4 Address Conflict Detection.” 2008. Accessed: Sep. 29, 2026. [Online]. Available: https://www.rfc-editor.org/rfc/rfc5227
[5]
IETF, “RFC 894 A Standard for the Transmission of IP Datagrams over Ethernet Networks.” 1984. Accessed: Sep. 29, 2026. [Online]. Available: https://www.rfc-editor.org/rfc/rfc894
[6]
IETF, “RFC 4861 Neighbor Discovery for IP version 6 (IPv6).” 2007. Accessed: Sep. 29, 2026. [Online]. Available: https://www.rfc-editor.org/rfc/rfc4861