본문 바로가기
프로그래밍/네트워크

[네트워크] OSI 모델 3계층_ARP 프로토콜

by 준보틱스 2024. 6. 24.

ARP 프로토콜

ARP 프로토콜은 같은 네트워크 대역에서 통신을 하기 위해 필요한 MAC 주소를 IP 주소를 이용해서 알아오는 프로토콜이다. 같은 네트워크 대역에서 통신을 한다고 하더라도 데이터를 보내기 위해서는 7계층부터 캡슐화를 통해 데이터를 보내기 때문에 IP 주소와 MAC 주소가 모두 필요하다. 이 때 IP 주소는 알고 MAC 주소는 모르더라도 ARP를 통해 통신이 가능하다.

쉽게 말해서, 같은 네트워크 대역에서 통신할 때 필요한 것은 MAC 주소(물리적인 주소)이다. 하지만 우리는 IP 주소를 입력하는데 컴퓨터들끼리 상대방의 MAC 주소를 알아보는데 이용하는게 ARP 프로토콜이다. ARP 프로토콜을 이용해서 컴퓨터가 상대방의 컴퓨터의 MAC 주소를 알아와서 통신을 하는 개념이다.

ARP 프로토콜 구조

ARP 프로토콜은 총 28바이트이다. Source Hardware Address, Source Protocol Address, Destination Hardware Address, Destination Protocol Address, Hardware type, Protocol type, Hardware Address Length, Protocol Address Length, Opcode로 구성되어 있다.

  • Source Hardware Address : 6바이트, 출발지의 MAC 주소
  • Source Protocol Address : 4바이트, 출발지의 IPv4 주소
  • Destination Hardware Address : 6바이트, 목적지의 MAC 주소
  • Destination Protocol Address : 4바이트, 목적의 IPv4 주소
  • Hardware type : 2바이트, 2계층에서 사용하는 프로토콜 타입(대부분 이더넷 프로토콜), 16진수로 "0 0 0 1"
  • Protocol type : 2바이트, 프로토콜 오드레스의 타입(대부분 IPv4), 16진수로 "0 8 0 0"
  • Hardware Address Length : 1바이트, MAC 주소의 길이, 16진수로 "0 6"
  • Protocol Address Length : 1바이트, IPv4 주소의 길이, 16진수로 "0 4"
  • Opcode : 2바이트, Operation code로 현재 요청하고 있는지(1), 요청에 대한 응답을 하고 있는지(2)를 알려주는 값, "0 0 0 [1or2]"

즉, ARP 프로토콜의 구조를 보면 달라지는 값은 MAC 주소를 요청하는지 응답하는지에 따라 값이 1 또는 2로 바뀌는 Opcode 밖에 없다.

ARP 프로토콜 통신 과정

같은 네트워크(LAN) 대역에서 ARP 프로토콜로 상대방의 MAC 주소를 알아오는 과정은 다음과 같다. 예를 들어, 같은 네트워크 대역에 있는 A 컴퓨터에서 C 컴퓨터와 통신을 하려는데, A 컴퓨터가 C 컴퓨터의 IP 주소만 알고 MAC 주소는 모르는 경우 ARP 프로토콜을 사용해서 통신한다.

(1) A 컴퓨터가 ARP 요청 프로토콜을 만들고 2계층 프로토콜인 이더넷을 붙혀서 인캡슐레이션해서 C 컴퓨터로 전송한다. ARP 프로토콜을 만들 때 목적지 MAC 주소는 아직 모르기 때문에 일단 "00 00 00 00 00 00" 으로 비워둔다. 이더넷 프로토콜은 목적지 MAC 주소를 "FF FF FF FF FF FF"로 작성한다. 이건 브로드캐스트 주소가 되는데 이걸 네트워크 대역 모두에게 전송한다.

(2) 2계층 장비인 스위치가 2계층 프로토콜까지만 확인하는데, 목적지 MAC 주소가 브로드캐스트 주소이기 때문에 같은 대역에 있는 모두에게 이더넷 프로토콜을 보내준다. 그럼 나머지 이더넷 프로토콜을 받은 컴퓨터들은 디캡슐레이션 과정을 거쳐 이더넷 프로토콜을 확인한다. 브로드캐스트 주소이기 때문에 확인 후 3계층인 ARP 프로토콜도 확인한다. 여기서 본인의 IP 주소와 목적지 IP 주소가 일치하지 않은 컴퓨터는 그 패킷을 버린다. 그런데 C는 본인의 IP 주소와 목적지 IP 주소가 같기에 버리지 않고 ARP 응답 프로토콜을 만든다.

(3) C는 본인의 IP 주소와 목적지 IP 주소가 같기에 버리지 않고 ARP 응답 프로토콜을 만든다. 여기에 C 컴퓨터의 MAC 주소를 작성해서 보낸다. C는 A가 보낸 것을 알기 때문에 브로드캐스트 주소로 작성할 필요 없이 A에게 전달한다. 그럼 또 A는 이것을 디캡슐레이션을 해서 C의 MAC주소를 알게 된다. 이 주소를 ARP 캐시 테이블에다가 이 주소를 저장한다. 이 과정을 거친 후에 통신이 시작된다.

ARP 테이블

cmd에 arp -a 명령어를 이용해서 ARP 캐시 테이블을 확인할 수 있는데 나와 통신을 했던 것들의 IP 주소와 MAC주소를 맵핑한 것을 확인할 수 있다.