2025-09-22 22:13

  • ARP는 로컬 네트워크상에서 논리적인 주소인 IP 주소를 물리적인 MAC 주소로 변환하여 두 장치가 통신할 수 있도록 연결하는 ‘주소 번역가’ 역할을 수행한다.

  • 장치가 통신을 원할 때, 먼저 자신의 ARP 캐시(기억)를 확인하고, 정보가 없으면 네트워크 전체에 “이 IP 주소 가진 사람 누구야?”라고 방송(ARP Request)하여 상대방의 MAC 주소를 알아낸다.

  • ARP는 별도의 인증 절차가 없어 공격자가 자신의 MAC 주소를 다른 장치의 IP 주소와 연결하는 ‘ARP 스푸핑’ 공격에 취약하며, 이는 중간자 공격(MITM)이나 서비스 거부(DoS) 공격으로 이어질 수 있다.


ARP 완벽 정복 가이드 당신의 데이터는 어떻게 길을 찾는가

우리가 인터넷을 사용하며 매일같이 주고받는 데이터는 어떻게 정확한 목적지를 찾아갈까? 마치 편지를 보낼 때 주소를 적는 것처럼, 네트워크 세계에서도 데이터는 IP 주소라는 논리적 주소를 통해 목적지를 향한다. 하지만 최종적으로 데이터가 컴퓨터의 네트워크 카드에 도달하기 위해서는 아파트의 ‘동-호수’와 같은 MAC 주소라는 물리적 주소가 반드시 필요하다.

이 두 가지 다른 차원의 주소 체계를 연결해주는 보이지 않는 영웅이 바로 ARP(Address Resolution Protocol), 즉 ‘주소 결정 프로토콜’이다. ARP가 없다면 로컬 네트워크 안의 장치들은 서로의 실체를 확인하지 못해 아무런 통신도 할 수 없다. 이 핸드북에서는 네트워크 통신의 근간을 이루는 ARP의 탄생 배경부터 작동 원리, 구조, 그리고 보안 위협과 방어 전략까지 모든 것을 깊이 있게 파헤쳐 본다.


제1장 필요가 발명을 낳다 ARP는 왜 만들어졌을까?

네트워크 통신을 이해하기 위해 가장 기본이 되는 OSI 7계층 모델을 떠올려보자. ARP를 이해하는 데는 이 중 두 개의 계층이 핵심이다.

  • 네트워크 계층 (Layer 3): IP 주소를 사용하여 전체 네트워크에서 목적지까지의 경로를 설정한다. 라우팅이 일어나는 계층으로, 논리적이고 전체적인 주소 체계를 담당한다.

  • 데이터 링크 계층 (Layer 2): MAC 주소를 사용하여 같은 네트워크 구간(로컬 네트워크) 내에서 직접 연결된 장치 간에 데이터를 전송한다. 물리적인 하드웨어 주소를 기반으로 실제적인 데이터 프레임 전달을 책임진다.

여기서 중요한 간극이 발생한다. 당신의 컴퓨터(192.168.0.10)가 같은 공유기에 연결된 프린터(192.168.0.25)로 인쇄 명령을 보내려 한다. 당신의 컴퓨터는 프린터의 IP 주소는 알고 있지만, 이 IP 패킷을 담아 보낼 이더넷 프레임을 만들려면 프린터 네트워크 카드의 고유한 MAC 주소를 알아야만 한다.

바로 이 문제를 해결하기 위해 ARP가 탄생했다. ARP는 Layer 3의 IP 주소를 Layer 2의 MAC 주소로 변환해주는, 두 계층 사이의 필수적인 ‘통역사’ 역할을 수행한다.


제2장 작동 원리 파헤치기 ARP는 어떻게 길을 찾나?

ARP의 작동 과정은 매우 논리적이며 직관적이다. ‘PC A’가 ‘PC B’에게 데이터를 보내려는 상황을 가정하여 단계별로 살펴보자.

  1. ARP 캐시 확인 (기억 더듬기):

    ‘PC A’는 데이터를 보내기 전, 가장 먼저 자신의 ARP 캐시(Cache) 테이블을 확인한다. ARP 캐시는 최근에 통신했던 장치들의 IP 주소와 MAC 주소 매핑 정보를 저장해둔 임시 기억 공간이다. 만약 여기에 ‘PC B’의 정보가 있다면, 즉시 해당 MAC 주소를 사용하여 데이터를 전송하고 과정은 종료된다.

  2. ARP 요청 방송 (주변에 물어보기):

    ARP 캐시에 ‘PC B’의 정보가 없다면, ‘PC A’는 네트워크에 연결된 모든 장치에게 질문을 던진다. 이 질문이 바로 ARP 요청(Request) 패킷이다.

    • “IP 주소가 192.168.0.50인 장치는 누구인가요? 당신의 MAC 주소를 알려주세요.”

    이 요청은 목적지 MAC 주소가 FF:FF:FF:FF:FF:FF브로드캐스트(Broadcast) 형태로 전송된다. 이는 “이 네트워크에 있는 모두에게!”라는 의미로, 스위치에 연결된 모든 장치가 이 메시지를 수신하게 된다.

  3. ARP 응답 (직접 대답하기):

    ARP 요청을 받은 네트워크 내 모든 장치는 패킷의 목적지 IP 주소가 자신의 IP 주소와 일치하는지 확인한다.

    • ‘PC B’를 제외한 다른 모든 장치들은 IP 주소가 다르므로 이 요청을 조용히 무시한다.

    • ‘PC B’는 자신의 IP 주소가 호출된 것을 확인하고 ARP 응답(Reply) 패킷을 만들어 ‘PC A’에게 유니캐스트(Unicast) 방식으로 직접 전송한다. 유니캐스트는 1:1 통신을 의미한다.

    • “네, 192.168.0.50은 저입니다. 제 MAC 주소는 BB:BB:BB:BB:BB:BB 입니다.”

  4. ARP 캐시 업데이트 및 통신 시작 (기억하고 연결하기):

    ‘PC A’는 ‘PC B’로부터 ARP 응답을 받으면, ‘PC B’의 IP-MAC 주소 매핑 정보를 자신의 ARP 캐시에 기록한다. 이제 ‘PC B’의 물리적 주소를 알게 되었으므로, 원래 보내려던 데이터 패킷을 이더넷 프레임에 담아 성공적으로 전송할 수 있다.


제3장 메시지 해부 ARP 패킷의 구조

ARP가 주고받는 메시지는 정해진 형식에 따라 구성된다. 이 구조를 이해하면 ARP의 동작을 더 깊이 파악할 수 있다.

필드 (Field)크기설명예시 (IPv4 over Ethernet)
Hardware Type2 Bytes네트워크 유형을 정의한다.1 (이더넷)
Protocol Type2 Bytes프로토콜 유형을 정의한다.0x0800 (IPv4)
Hardware Address Length1 Byte하드웨어 주소(MAC)의 길이를 바이트 단위로 나타낸다.6 (6 Bytes)
Protocol Address Length1 Byte프로토콜 주소(IP)의 길이를 바이트 단위로 나타낸다.4 (4 Bytes)
Opcode2 Bytes패킷의 종류를 나타낸다.1 (Request), 2 (Reply)
Sender Hardware Address6 Bytes송신자의 MAC 주소AA:AA:AA:AA:AA:AA
Sender Protocol Address4 Bytes송신자의 IP 주소192.168.0.10
Target Hardware Address6 Bytes수신자의 MAC 주소 (요청 시에는 00:00:00:00:00:00으로 채워짐)00:00:00:00:00:00 (요청) / BB:BB:BB:BB:BB:BB (응답)
Target Protocol Address4 Bytes수신자의 IP 주소192.168.0.50

제4장 ARP의 두뇌 ARP 캐시 테이블

ARP 캐시는 ARP의 효율성을 극대화하는 핵심 요소다. 매번 통신할 때마다 브로드캐스트를 발생시키는 것은 네트워크에 큰 부담을 주기 때문에, 한번 확인된 정보는 일정 시간 동안 캐시에 저장하여 재사용한다.

  • 동적 항목(Dynamic Entry): 일반적인 ARP 요청/응답 과정을 통해 자동으로 학습되고 저장된 항목이다. 이 항목들은 타임아웃(Timeout) 값을 가지며, 일정 시간(OS마다 다르지만 보통 몇 분) 동안 사용되지 않으면 캐시에서 삭제된다. 이는 장치의 IP가 바뀌거나 네트워크에서 사라졌을 때 오래된 정보가 남는 것을 방지한다.

  • 정적 항목(Static Entry): 사용자가 수동으로 직접 입력한 항목이다. 이 항목들은 타임아웃 없이 영구적으로 유지되며, 주로 보안이 중요한 게이트웨이 등의 장비에 대해 설정한다.

대부분의 운영체제에서 터미널이나 명령 프롬프트에 arp -a 명령어를 입력하면 현재 시스템의 ARP 캐시 테이블을 확인할 수 있다.


제5장 심화 과정 다양한 ARP의 얼굴들

기본적인 ARP 외에도 특수한 목적을 가진 여러 변형 기술이 존재한다.

1. Gratuitous ARP (GARP)

‘관대한 ARP’라는 뜻으로, ARP 요청을 받지 않았음에도 불구하고 장치가 스스로 자신의 IP와 MAC 정보를 네트워크에 알리는 것을 말한다.

  • IP 주소 충돌 감지: 장치가 네트워크에 처음 연결되거나 IP 주소를 할당받았을 때, 해당 IP 주소에 대한 ARP 요청을 보낸다. 만약 다른 장치로부터 응답이 온다면, 이는 해당 IP가 이미 사용 중임을 의미하므로 충돌을 방지할 수 있다. DHCP 과정에서 중요한 역할을 한다.

  • MAC 주소 변경 알림: 장비의 네트워크 카드를 교체하는 등 MAC 주소가 변경되었을 때, GARP를 통해 네트워크의 다른 장치들이 가지고 있는 ARP 캐시 정보를 신속하게 업데이트하도록 한다.

  • 고가용성(High-Availability) 확보: 서버 클러스터링 환경에서 메인 서버에 장애가 발생하여 백업 서버가 IP 주소를 이어받았을 때, GARP를 브로드캐스트하여 네트워크 스위치와 다른 장치들이 새로운 MAC 주소로 트래픽을 보내도록 즉시 경로를 변경시킨다.

2. Proxy ARP

프록시(대리인) 역할을 하는 ARP. 라우터가 다른 네트워크 대역에 있는 장치를 대신하여 ARP 요청에 응답하는 기술이다. 라우터는 요청된 IP 주소로 가는 경로를 알고 있을 때, 자신의 MAC 주소를 응답으로 보내준다. 그러면 해당 장치는 목적지가 마치 같은 로컬 네트워크에 있는 것처럼 데이터를 라우터로 보내고, 라우터가 이를 실제 목적지로 전달(라우팅)해준다.

3. ARP의 후계자 NDP (IPv6)

중요한 점은, ARP는 IPv4 환경에서만 사용된다는 것이다. IPv6 환경에서는 ARP의 기능이 **NDP(Neighbor Discovery Protocol)**라는 프로토콜로 대체되었다. NDP는 ICMPv6 메시지를 기반으로 동작하며, 주소 결정뿐만 아니라 중복 주소 감지, 라우터 탐색 등 훨씬 더 다양한 기능을 통합하여 효율성과 보안성을 높였다.


제6장 어두운 이면 ARP의 보안 취약점

ARP는 설계 당시 ‘신뢰’를 기반으로 만들어졌기 때문에 치명적인 보안 약점을 가지고 있다. ARP는 응답 메시지의 발신자가 정말로 해당 IP 주소의 소유자인지 확인하는 인증 과정이 전혀 없다. 이 허점을 파고드는 공격이 바로 ARP 스푸핑(Spoofing) 또는 **ARP 캐시 포이즈닝(Poisoning)**이다.

ARP 스푸핑의 작동 원리:

  1. 공격자(Attacker C)가 피해자(Victim A)에게 **“나는 게이트웨이(Gateway B)이고, 내 MAC 주소는 C의 MAC 주소야”**라는 위조된 ARP 응답을 계속해서 보낸다.

  2. 피해자(A)의 ARP 캐시는 게이트웨이 IP에 대한 MAC 주소가 공격자(C)의 MAC 주소로 오염(Poisoning)된다.

  3. 동시에 공격자(C)는 게이트웨이(B)에게 **“나는 피해자(A)이고, 내 MAC 주소는 C의 MAC 주소야”**라는 위조된 ARP 응답을 보낸다.

  4. 게이트웨이(B)의 ARP 캐시 역시 피해자(A)의 IP에 대한 MAC 주소가 공격자(C)의 MAC 주소로 오염된다.

결과적으로 피해자(A)와 게이트웨이(B) 사이의 모든 통신은 공격자(C)를 거쳐가게 된다.

  • 중간자 공격 (Man-in-the-Middle, MITM): 공격자는 두 장치 간의 모든 트래픽을 엿보거나(Sniffing), 내용을 변조하거나, 악성 코드를 삽입할 수 있다. 금융 정보, 로그인 자격 증명 등이 탈취될 수 있는 매우 위험한 공격이다.

  • 서비스 거부 공격 (Denial of Service, DoS): 공격자가 특정 IP 주소(예: 게이트웨이)를 존재하지 않는 MAC 주소와 매핑시키면, 피해자는 외부 네트워크와 통신이 완전히 두절된다.


제7장 방어 전략 ARP 보안 강화하기

ARP의 취약점을 보완하기 위한 여러 방어 기술이 존재한다.

  • 정적 ARP 항목 사용: 네트워크 관리자가 게이트웨이와 같이 중요한 장비의 IP-MAC 매핑 정보를 ARP 캐시에 수동으로 고정(Static)하는 방법이다. 위조된 ARP 응답을 받더라도 캐시가 업데이트되지 않으므로 가장 확실한 방법 중 하나지만, 관리가 번거로워 대규모 네트워크에는 적용하기 어렵다.

  • 동적 ARP 검사 (Dynamic ARP Inspection, DAI): 최신 매니지드 스위치에서 제공하는 고급 보안 기능이다. DAI는 DHCP 스누핑(Snooping) 테이블을 참조하여 신뢰할 수 있는 IP-MAC 바인딩 데이터베이스를 유지한다. 그리고 스위치로 들어오는 모든 ARP 패킷을 검사하여 이 데이터베이스의 정보와 일치하지 않는 비정상적인 ARP 패킷을 차단한다. 대규모 네트워크에서 ARP 스푸핑을 방어하는 가장 효과적이고 확장 가능한 방법이다.

  • 보안 솔루션 및 모니터링 도구 활용: arpwatch와 같은 도구를 사용하여 네트워크의 ARP 트래픽을 지속적으로 모니터링하고, 비정상적인 IP-MAC 변경이 감지되면 관리자에게 경고를 보낼 수 있다.


결론 보이지 않지만 필수적인 프로토콜

ARP는 오늘날 우리가 사용하는 네트워크의 가장 기본적인 통신을 가능하게 하는, 작지만 강력한 프로토콜이다. 비록 탄생한 지 오래되어 보안에 취약한 면모를 보이지만, 그 작동 원리를 이해하는 것은 네트워크 엔지니어링과 사이버 보안의 첫걸음이라 할 수 있다.

로컬 네트워크에서 데이터가 어떻게 정확한 길을 찾아가는지에 대한 해답은 바로 이 ‘주소 결정 프로토콜’에 있다. IPv6 환경에서는 NDP에게 자리를 내주었지만, ARP가 해결하고자 했던 근본적인 문제와 그 해결 방식의 유산은 네트워크 기술의 발전에 계속해서 영향을 미치고 있다.

이 핸드북을 통해 ARP에 대한 깊이 있는 이해를 얻고, 보이지 않는 곳에서 묵묵히 제 역할을 다하는 이 프로토콜의 중요성을 다시 한번 생각하는 계기가 되었기를 바란다.

ARP의 IPv6 버전인 Neighbor Discovery Protocol의 작동 방식에 대한 자세한 설명은 이 비디오에서 확인할 수 있습니다.

IPv6 Neighbor Discovery Protocol