[패킷] ARP 패킷 분석

2022. 3. 11. 17:00프로그래밍/Network

ARP 패킷


Address Resolution Protocol의 약자로 TCP/IP 주요 프로토콜 중 하나입니다.

ARP의 특징

  • IPv4(L3계층, 네트워크 계층) 주소를 물리 주소(Mac)로 해석해주는 프로트콜 입니다.
  • IPv4 주소를 사용해 같은 Lan에 있는 장비와 통신하여 얻은 Mac주소를 네트워크 카드에 저장합니다.
  • 저장된 주소들은 아래 명령어로 확인할 수 있습니다.
arp -a

 

 

패킷 구조


0                                             7 8                                           15 16                         23 24                                                        31
Hardware Type Protocol Type
Hardware Address Length Protocol Address Length OP Code
Sender Mac Address (6bytes, 옆에 이어짐!) Sender MAC Address (6 Bytes)
Sender IP Address ( 1 or 2 Bytes)
Sender IP Address (3 or 4 Bytes) Target Hardware Address (6 Bytes)
Target Hardware Address (6 Bytes, 옆에 이어짐!)
Target Protocol Address (4 Bytes)
  • Hardware Type : 네트워크 유형을 정의, Ethernet 일 경우 0x0001 으로 세팅 => 2바이트
  • Protocol Type : IP의 길이(IPv4)를 정의, 기본 0x0800 으로 세팅 => 2바이트
  • Hardware Length : MAC주소의 길이를 정의, Ethernet 환경의 경우 6 byte 세팅 => 6바이트
  • Protocol Length : 프로토콜의 길이를 정의, IPv4 의 경우 4 byte 세팅 => 4바이트
  • Operation : 패킷의 유형이며, ARP 요청(ARP Request)의 경우 1, ARP 응답 (ARP Reply)의 경우 2 세팅 => 2바이트
  • Sender MAC Address : 발신자의 MAC 주소 세팅 => 6바이트
  • Sender IP Address : 발신자 IP 주소 세팅 => 4바이트 (유동적?)
  • Target MAC Address : 목적지 MAC 주소, 그러나 ARP Request 의 경우 알 수 없음 => 6바이트
  • Target IP Address : 목적지 IP 주소 세팅 => 4바이트

 

ARP 작동 단계


  1. A호스트가 B호스트와 통신하려는 경우 A호스트의 ARP 캐시를 확인합니다.(B호스트의 Mac주소 탐색)
  2. 캐시에 MAC주소가 없다면 ARP 패킷을 생성하여
    Sender MAC Address에 A호스트 MAC주소를,
    Sender IP Address는 A호스트 IP주소를,
    Target IP Address에 B호스트의 IP주소를,
    Target MAC Address는 공백으로 두고 LAN으로 브로드캐스팅을 합니다. 
    1. 이 패킷을 받은 다른 호스트들은 일치하지 않다면 그냥 패킷을 무시합니다.
  3. 2에서 보낸 패킷을 해당하는 호스트(B)가 받았을 경우 A호스트의 정보와 함께 ACK ARP 프로토콜을 생성합니다.
  4. 패킷을 받은 호스트(B)는 자신의 ARP 캐시를 업데이트 합니다.(보낸 호스트 정보)
  5. B호스트는 이 패킷을 브로드 캐스트가 아닌 유니캐스트로 보냅니다. B--->A 1:1전송
  6. A호스트는 5번에서 받은 정보를 ARP 캐시에 기록합니다.

 

MAC주소는 아는데 IP주소를 모르면?


RARP를 실행합니다.

과정은 ARP 패킷 생성 시 IP, MAC만 바꿔서 보시면됩니다.

 

 

GARP?


송 수신 IP가 동일한 ARP 패킷입니다.

자기 자신의 존재를 알리는 패킷일 뿐.. 아무것도 없어요.

 

그냥 IP충돌 감지, ARP 테이블 갱신 용도입니다.