통신하기 전 반드시 필요한 ARP 프로토콜

castlemin·2022년 5월 13일
0

ARP 프로토콜


ARP가 하는 일

  • 같은 네트워크 대역에서 통신을 하기 위해 필요한 MAC 주소를 IP 주소를 이용해서 알아오는 프로토콜
  • 같은 네트워크 대역에서 통신을 한다고 하더라도 데이터를 보내기 위해서는 7계층부터 캡슐화를 하기 때문에 IP주소와 MAC주소가 모두 필요하다. 이 때 IP주소는 알고 MAC주소는 모르더라도 ARP를 통해 통신이 가능하다.
  • 3계층 프로토콜이나 같은 네트워크 대역(LAN)에서 통신할때만 사용한다. (3계층 장비가 Broadcast 통신이 오면 이를 외부로 전송하지 않기 때문이다.)

ARP 프로토콜의 구조

(*자료출처: 유튜브 [따라하면서 배우는 IT], https://youtu.be/LDsp-Xb168E)

  • 총 28 Byte
  • Hardware Type (2Byte) : 2계층에서 사용하는 Protocol의 타입. Ethernet의 경우 0001이 들어감.
  • Protocol Type (2Byte) : Protocol Address에 상응하는 Protocol의 타입. IPv4의 경우 0800이 들어감
  • Hardware Address Length (1Byte) : MAC 주소일 경우 6Byte이므로 06이 들어감
  • Protocol ADdress Length (1Byte) : IPv4 주소일 경우 4Byte이므로 04가 들어감
  • Opcode (2Byte) : Operation Code로 어떻게 동작하는지를 나타내는 코드. 두가지 값이 존재하며, 이는 상대 호스트에게 IPv4주소로 MAC주소를 물어보는 ARP 프로토콜의 과정에서 요청(질문)하고 응답(대답)하는 각 경우에 상응한다. 요청할 때는 1이 들어가고 응답할 때는 2가 들어간다.
  • Source Harware Address (6Byte) : 출발지의 MAC 주소
  • Source Protocol Address (4Byte) : 출발지의 IP 주소
  • Destination Hardware Address (6Byte) : 목적지의 MAC 주소
  • Destination Protocol Address (4Byte) : 목적지의 IP 주소

ARP 프로토콜의 통신 과정

호스트 A가 같은 네트워크 대역에 있는 호스트 B에게 ARP 요청을 보내는 상황을 가정한다.

  1. A 호스트가 스위치(2계층 장비)에게 ARP 요청을 보낸다.

    • 3계층 ARP protocol의 OPcode는 1이며, B 호스트의 IP address는 알고 있으나 MAC address를 모르는 상황이기 때문에 Destination Hardware Address를 00 00 00 00 00 00 으로 보낸다.
    • 2계층 Ethernet protocol의 Destination MAC address를 FF FF FF FF FF FF 로 보낸다. 이때 FF FF FF FF FF FF 의 경우 Broadcast 주소가 된다. 즉 같은 내트워크 대역에 모든 호스트에게 요청을 전송함을 의미한다.
  2. 스위치는 해당 요청을 네트워크 대역 내 모든 호스트에게 전송한다.

    • 이 때 스위치는 2계층 장비이므로 decapsulation을 2계층 프로토콜인 ethernet 까지만 진행한다. (3계층은 ARP는 X)
    • ethernet 프로토콜의 destination MAC address가 broadcast 주소이므로 모든 호스트에게 전송한다.
  3. 각 호스트가 스위치로부터 받은 패킷이 본인에게 보내는 요청인지 확인한다.

    • 각 호스트는 스위치로부터 전송받은 패킷은 3계층까지 decapsulation하며 각 프로토콜을 확인한다.
    • Ethernet 프로토콜은 destination이 broadcast이므로 문제가 없지만, ARP 프로토콜은 destination Protocol Address가 본인이 아닐 수 있다. 이때 본인이 아닌 호스트는 해당 패킷을 버리게 된다.
  4. ARP 프로토콜의 destination protocol address에 해당하는 호스트가 ARP 응답을 준비한다.

    • opcode가 2가 된다.
    • 출발지(source) mac주소와 protocol주소가 본인이 된다.
    • ARP 요청의 source mac주소와 protocol주소를 ARP 응답의 각각 도착지(destination) mac주소와 protocol주소로 한다.
  5. 호스트 A가 호스트 B로부터 ARP 응답을 받으면 ARP 캐시 테이블에 응답 내용을 등록하고 이후 통신을 시작한다.

    • 두 호스트가 통신을 하기 위해서는 최초에 위 과정을 거쳐야만 한다.

ARP 테이블

  • 통신했던 호스트들의 인터넷주소(IP주소)와 물리적주소(MAC주소)를 기록하는 테이블
  • 수동 등록을 하지 않는다면 일정시간이 지나면 기록이 휘발되는 특성을 갖는다.


(* 유튜브 [따라하면서 배우는 IT] 채널의 "05. 통신하기 전 반드시 필요한 ARP 프로토콜" 강의를 요약한 내용입니다. )

profile
우보천리

0개의 댓글