CS Repo/네트워크 - Top-down Approach + @

ARP - 주소 결정 프로토콜

조금씩 차근차근 2025. 4. 16. 01:07

본 게시글은 그림으로 공부하는 TCP/IP 구조 도서를 참고하였습니다.
 
IP주소는 OS상에서 설정한 논리적인 주소인데, MAC는 NIC 자체에 내장되어 있는 물리적인 주소이다.
IP 주소는 DNS, 다른 전달 방식 등을 통해 공유할 수 있는데,
NIC에는 MAC 주소를 직접 요청할 기능같은게 없다.
MAC 주소를 공유하기 위한 프로토콜, ARP에 대해 알아보자.

ARP란?

  • Address Resolution Protocol - 주소 결정 프로토콜
  • 수신지 IPv4주소로부터, 수신지 MAC주소를 구하는 방법이다.
    • 참고) IPv6의 MAC 주소 결정은 ICMPv6에서 수행한다.
  • 2.5계층 느낌으로, 네트워크 계층과 데이터링크 계층 사이의 인터페이스 역할을 수행한다.
  • 라우터가 MAC 주소 요청을 받으면,
    • ARP를 이용해 로컬 이더넷 네트워크 내에서, 원하는 포트의 MAC 주소를 찾아온다.
  • 주소 결정
    • 수신지 IPv4주소를 가지고, Broadcast 방식으로 이더넷 네트워크 내 모두에게 물어봐서 수신지 MAC 주소를 구한다.
    • 이를 주소 결정(Address Resolution)이라고 한다.

ARP의 구조

  • MAC 주소 획득 요청 - ARP Request
    • 같은 이더넷 네트워크 안에 있는 모두에게 브로드캐스트로 전송된다.
  • MAC 주소 반환 - ARP Reply
    • 해당 IP를 가진 기기가 ARP 요청 송신자에게 1:1 유니캐스트로 응답한다.

ARP 프레임 포맷

  • RFC826에서 표준화되었다.
  • RFC5227, RFC5494로 확장되었다.

출처: https://en.wikipedia.org/wiki/Address_Resolution_Protocol

  • 하드웨어 타입(Hardware Type)
    • 사용하는 L2 프로토콜을 의미하는 16비트 필드이다.
    • 이더넷에서는 0x0001 이 들어간다.
  • 프로토콜 타입
    • 사용하는 L3 프로토콜을 의미하는 16비트 필드이다.
    • IPv4에서는 0x0800이 들어간다.
  • 하드웨어 주소 크기
    • MAC 주소의 길이를 바이트 단위로 나타내는 1바이트(8비트) 필드이다.
    • MAC주소는 6바이트이므로 0x06이 들어간다.
  • 프로토콜 주소 크기
    • 네트워크 계층에서 사용하는 주소의 길이를 바이트 단위로 나타내는 1바이트(8비트) 필드이다.
    • IPv4주소의 길이는 4바이트이므로 0x04가 들어간다.
  • 오퍼레이션 코드(Operation)
    • ARP 프레임의 종류를 나타내는 2바이트(16비트) 필드이다.
    • 주로 다음이 등장한다.
      • ARP Request를 나타내는 0x0001
      • ARP Reply 를 나타내는 0x0002
  • 송신지 MAC 주소
    • 말 그대로 송신지 MAC 주소이다.
  • 송신지 IPv4 주소
    • 말 그대로 송신지 IPv4 주소이다.
  • 목표 MAC 주소
    • 말 그대로 목표 MAC 주소이다.
    • 최초에는 MAC 주소를 모르므로, 더미 MAC 주소인 00-00-00-00-00-00으로 설정된다.
  • 목표 IPv4 주소
    • 말 그대로 목표 IPv4 주소이다.

ARP Cache

  • ARP의 단점 - 브로드캐스트를 전제로 한다.
    • 모두가 통신할 때 ARP를 송신한다면, 그 네트워크는 ARP 트래픽만 가득하게 될 것이다.
  • 따라서 ARP는 캐시 기능을 정의해두었다.
    • 운영체제, 또는 펌웨어가 ARP 테이블을 갖는다.
    • ARP에서 MAC 주소를 알았다면, ARP 테이블의 엔트리로 추가하고 저장해둔다.
    • 엔트리를 저장하고 있는 동안에는 ARP를 송신하지 않는다.
    • ARP 테이블의 타임아웃은 사용하는 기기나 OS에 따라 다르고, 임의로 변경 가능하다.
      • Windows 10 - 10분
      • Cisco 기기 - 4시간

GARP를 이용한 기능

  • GARP
    • Gratuitous ARP(쓸데없는 ARP)
    • ARP 필드의 목표 IPv4 주소에 자신의 IPv4를 설정한 특별한 ARP를 의미한다.
      • 당연히 응답이 오지 않아야 한다.
    • ARP를 이용해 특별한 기능을 구현하는 형태를 의미한다.
  • GARP를 이용한 IPv4 주소 감지
    • 자신이 바꿀 IP로 ARP를 보내본다.
    • 응답이 오면, 이미 사용중이라는 것이므로, IP 할당을 취소한다.
      • 동시성 문제가 발생할 수 있을 것 같아보인다.
      • 따라서, 낙관적 락과 같은 방식이 필요해보인다.
      • 주요 운영체제의 DHCP 클라이언트는 주소 할당 후 잠시 기다린 후 GARP를 보내 충돌 여부를 확인하고 있다.
        • DHCP로 함께 괸리한다.
  • 인접 기기의 ARP/MAC 테이블 업데이트
    • ARP/MAC 테이블은 수신 시, 송신자의 MAC 주소와 IP 주소를 테이블에 저장한다.
    • 따라서, '내 IPv4 주소와 MAC 주소는 이것입니다!' 하고 알림으로써, 인접 기기의 ARP 테이블과 MAC 주소 테이블의 정보 업데이트를 유도한다.