[패킷] 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 작동 단계
- A호스트가 B호스트와 통신하려는 경우 A호스트의 ARP 캐시를 확인합니다.(B호스트의 Mac주소 탐색)
- 캐시에 MAC주소가 없다면 ARP 패킷을 생성하여
Sender MAC Address에 A호스트 MAC주소를,
Sender IP Address는 A호스트 IP주소를,
Target IP Address에 B호스트의 IP주소를,
Target MAC Address는 공백으로 두고 LAN으로 브로드캐스팅을 합니다.- 이 패킷을 받은 다른 호스트들은 일치하지 않다면 그냥 패킷을 무시합니다.
- 2에서 보낸 패킷을 해당하는 호스트(B)가 받았을 경우 A호스트의 정보와 함께 ACK ARP 프로토콜을 생성합니다.
- 패킷을 받은 호스트(B)는 자신의 ARP 캐시를 업데이트 합니다.(보낸 호스트 정보)
- B호스트는 이 패킷을 브로드 캐스트가 아닌 유니캐스트로 보냅니다. B--->A 1:1전송
- A호스트는 5번에서 받은 정보를 ARP 캐시에 기록합니다.
MAC주소는 아는데 IP주소를 모르면?
RARP를 실행합니다.
과정은 ARP 패킷 생성 시 IP, MAC만 바꿔서 보시면됩니다.
GARP?
송 수신 IP가 동일한 ARP 패킷입니다.
자기 자신의 존재를 알리는 패킷일 뿐.. 아무것도 없어요.
그냥 IP충돌 감지, ARP 테이블 갱신 용도입니다.