[네트워크] ARP / GARP / RARP

yjkim97·2022년 1월 30일
0

네트워크

목록 보기
8/10
post-thumbnail

OSI 7계층의 Network Layer에는 주소를 알아내기 위한 ARP, GARP, RARP 프로토콜이 존재한다.


⭐️ ARP

ARP는 Address Resolution Protocol의 약자로 네트워크 계층의 주소 결정 프로토콜이다.
네트워크 상에서 IP주소를 MAC주소로 대응 시키기 위해 사용된다.

IP주소 체계는 MAC 주소와 전혀 연관성이 없으므로 두개의 주소를 연계시켜 주어야한다.

이때 연계시키는 방식이 IP 주소를 통해 MAC 주소를 알아내 대응시키기 때문에 'IP로 MAC을 알아내는 프로토콜이다~' 라고도 할 수 있다.

예를 들어 host A가 host B에게 데이터를 전송하고자 하는데 host B의 MAC 주소를 모른다면, ARP 프로토콜을 사용하여 host B의 MAC 주소를 알아낸 후 데이터를 전송한다.

1. ARP 헤더

  • Hardware type(HTYPE) : 네트워크 유형을 뜻하지만 일반적으로 사용되는 Ethernet 환경은 0x0001 으로 세팅
  • Protocol type(PTYPE) : 프로토콜을 정의한다. IPv4의 경우 0x0800 으로 세팅되며, 아직 IPv6는 거의 사용되지 않기 때문에 보통 0x0800 으로 세팅
  • Hardware address length : MAC 주소(물리적 주소) 길이를 정의하며 Ethernet 환경의 경우 0x06 세팅
  • Protocol address length : 프로토콜의 길이를 정의하며 IPv4는 0x04 세팅. Protocol type 에서 설명한 것과 같이 아직 IPv6는 거의 사용되지 않기 때문에 보통 IPv4인 0x04 세팅이 고정적임
  • Opcode : ARP 패킷이 요청(Request) 또는 응답(Reply)에 따라 값이 바뀌게 되고 요청의 경우 1, 응답의 경우 2가 세팅
  • Source hardware address : 출발지 MAC 주소
  • Source protocol address : 출발지 IP 주소
  • Destination hardware address : 목적지 MAC 주소, 요청(Request)의 경우 목적지 MAC 주소를 모르기 때문에 0으로 세팅
  • Destination protocol address : 목적지 IP 주소

2. ARP 동작 방식

  • ARP는 브로드캐스트로 동작한다.
  • CPU에서 직접 수행한다.
    (짧은 시간안에 ARP 요청이 들어오면 네트워크 장비에서 큰 부하가 작용한다.)

ARP의 대략적인 동작 방식은 네트워크망 내의 모든 host에게 브로드캐스트 로 패킷을 보내면 목적지가 해당 패킷에 자신의 MAC 주소를 실어서 유니캐스트 로 응답하고 ARP는 이 정보를 테이블에 저장한다. (목적지가 아닌 다른 호스트는 패킷을 버린다.)

ARP 테이블
arp -a 명령어를 통해 해당 PC의 ARP 테이블 정보를 확인 할 수 있다.

  • 패킷을 보낼 때마다 ARP 브로드캐스트를 수행하면 네트워크 통신의 효율성이 크게 저하될 수 있다. 이로 인해 메모리에 이 정보를 저장해두고 재사용하는 것이다.
  • ARP 성능을 위해서는 테이블 정보를 오래 유지하는 것이 좋지만 IP주소는 언제든지 변경될 수 있으므로 일정 시간 동안 통신이 없으면 이 테이블은 삭제된다.

ARP Request (브로드캐스트)

  1. 송신자는 목적지 IP를 지정해 패킷을 송신한다.
  2. IP 프로토콜이 ARP 프로토콜에게 ARP Request 메시지를 생성하도록 요청한다.

    ARP Request 메시지 : 송신자 MAC(자신), 송신자 IP(자신), 수신 MAC(00-00-00-00-00), 수신자 IP 정보

  3. 메시지는 DataLink Layer에게 전송되고 이더넷 프레임으로 인캡슐레이션 된다.
  4. 모든 호스트와 라우터는 프레임을 수신하고 자신의 ARP 프로토콜에게 전달한다. (브로드캐스트)

ARP Response (유니캐스트)


1. 목적지 IP 주소가 일치하는 시스템은 자신의 MAC 주소를 프레임에 담아 ARP Reply 메시지를 보낸다. (유니캐스트)
1. 송신측의 ARP 프로토콜은 Reply 메시지를 수신하여 수신자의 MAC 주소를 테이블에 저장한다.


ARP 외에도 ARP 프로토콜의 필드를 그대로 사용하지만 내용을 변경해 원래 ARP의 목적과 다른 용도로 사용하는 프로토콜이 있다.

GARP와 RARP가 대표적이다.

⭐️ GARP

GARP는 Gratuitous Address Resolution Protocol의 약자로 자신의 IP와 MAC주소를 알리는 목적으로 사용된다.

GARP 패킷을 살펴보면

  • 송신자 MAC : 자신의 MAC 주소
  • 송신자 IP : 자신의 IP
  • 대상자 MAC : 00-00-00-00-00-00
  • 대상자 IP : 자신의 IP
    (출발지와 목적지의 IP가 모두 자신의 IP로 동일하다.)

정보를 넣어 네트워크에 브로드캐스트한다.

사용 이유

GARP를 사용하는 이유는 아래의 3가지이다.

  1. IP 주소 출동 감지
  2. 상대방 ARP 테이블 갱신
  3. HA 용도의 클러스터링, VRRP, HSRP

IP 주소 충돌 감지

같은 네트워크 망 안에서 IP 주소 충돌을 방지하기 위해서 이미 사용되고 있는지 GARP를 통해 확인할 수 있다.
만약 GARP에 대한 응답이 오면 'IP 주소 충돌'과 관련된 에러메시지를 사용자에게 알려준다.

상대방 ARP 테이블 갱신

GARP의 두 번째 사용 목적은 같은 네트워크 망 내부에 존재하는 단말들의 ARP 테이블을 갱신하는 것이다.

HA 용도의 클러스터링, VRRP, HSRP

가상 MAC을 사용하는 클러스터링, VRRP, HSRP와 같은 FHRP (Fisrt Hop Redundancy)에도 GARP가 사용된다.
'상대방 ARP 테이블 갱신'은 단말의 ARP 테이블을 갱신하는 것이 목적이였던 반명, 이것은 네트워크에 있는 스위치 장비의 MAC 테이블 갱신이 목적이다.

⭐️ RARP

RARP는 Reverse Address Resolution Protocol의 약자이다.
ARP의 반대로 동작하는 것인데 ARP 프로토콜 구조는 같지만 필드의 내용이 다르고 원래 목적과 반대로 사용된다.

  • IP 주소가 정해져 있지 않은 단말이 IP 할당을 요청할 때 사용한다.
  • 자신의 MAC 주소는 알지만 IP가 할당되지 않아 IP를 할당해주는 서버에게 어떤 IP주소를 사용해야 하는지 물어볼 때 사용된다.

❓ RARP는 과거에 네트워크 호스트의 주소 할당에 사용되었지만 제한된 기능으로 인해 BOOTP와 DHCP로 대체되었다고 한다.
💡 BOOTP와 DHCP 차이점

profile
어제는 🐸두꺼비 오늘은 😄YJ

0개의 댓글