1.什么是 ARP 协议?
ARP(Address Resolution Protocol)即地址解析协议,用于将网络层(IP 地址)地址转换为数据链路层(MAC 地址)地址的协议。
在局域网中,当设备需要发送数据时,ARP 协议会通过广播的方式询问目标 IP 地址对应的 MAC 地址,从而实现数据包的正确传输。
2. ARP 的工作过程
如图所示
假设PC1要向PC2发送信息,具体的地址解析过程如下:
1. 发送方设备:当PC1需要发送数据给PC2时,先检查本地 ARP 缓存表中是否有目标 IP 地址对应的 MAC 地址。如果没有,则发起 ARP 请求。
2. ARP 请求:发送方设备会发送一个广播的 ARP 请求数据包,其中包含发送方的 IP 地址和 MAC 地址,以及目标 IP 地址(请求获取其对应的 MAC 地址)。
3. 接收方响应:局域网内所有设备都会收到该 ARP 请求,但只有目标 IP 地址的设备即PC2会进行响应。响应设备PC2会发送一个包含自己的 MAC 地址的 ARP 响应的单播数据包给发送方即PC1。
4. 更新缓存:发送方收到 ARP 响应后,会将目标 IP 地址和对应的 MAC 地址存储在自己的 ARP 缓存表中,以便后续直接使用,而无需再次发起 ARP 请求。
3. ARP 抓包分析
3.1 ARP 请求报文
解释如下:
物理层-------------------------------------------------------------------------------------
Frame 1: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) on interface -, id 0
数据链路层----------------------------------------------------------------------------------
Ethernet II, Src: HuaweiTe_94:69:e0 (54:89:98:94:69:e0), Dst: Broadcast (ff:ff:ff:ff:ff:ff)
Destination: Broadcast (ff:ff:ff:ff:ff:ff) --> 目的广播MAC地址
Source: HuaweiTe_94:69:e0 (54:89:98:94:69:e0) --> 源MAC地址
Type: ARP (0x0806) --> 下个包类型
Padding: 000000000000000000000000000000000000 --> 补充
介于数据链路层与网络层之间-------------------------------------------------------------------
Address Resolution Protocol (request) --> 地址解析请求
Hardware type: Ethernet (1) --> 硬件类型:以太网(1)
Protocol type: IPv4 (0x0800) --> 协议类型:IPv4
Hardware size: 6
Protocol size: 4
Opcode: request (1) --> 请求(1)
Sender MAC address: HuaweiTe_94:69:e0 (54:89:98:94:69:e0) --> 源MAC地址
Sender IP address: 192.168.1.1 --> 源IP地址
Target MAC address: Broadcast (ff:ff:ff:ff:ff:ff) --> 目的MAC地址
Target IP address: 192.168.1.2 --> 目的IP地址
3.2 ARP 响应报文
解释如下
物理层-------------------------------------------------------------------------------------
Frame 2: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) on interface -, id 0
数据链路层----------------------------------------------------------------------------------
Ethernet II, Src: HuaweiTe_8b:40:51 (54:89:98:8b:40:51), Dst: HuaweiTe_94:69:e0 (54:89:98:94:69:e0)
Destination: HuaweiTe_94:69:e0 (54:89:98:94:69:e0) --> 目的MAC地址
Source: HuaweiTe_8b:40:51 (54:89:98:8b:40:51) --> 源MAC地址
Type: ARP (0x0806) --> 下个包的协议类型既ARP
Padding: 000000000000000000000000000000000000
介于网络层与数据链路层之间-------------------------------------------------------------------
Address Resolution Protocol (reply) --> 地址解析协议(回复)
Hardware type: Ethernet (1) --> 硬件类型:以太网(1)
Protocol type: IPv4 (0x0800) --> 协议类型:IPv4
Hardware size: 6
Protocol size: 4
Opcode: reply (2) --> 回复(2)
Sender MAC address: HuaweiTe_8b:40:51 (54:89:98:8b:40:51) --> 源MAC地址
Sender IP address: 192.168.1.2 --> 源IP地址
Target MAC address: HuaweiTe_94:69:e0 (54:89:98:94:69:e0) --> 目的MAC地址
Target IP address: 192.168.1.1 --> 目的IP地址
4.补充
1.ARP请求是广播报文,ARP应答是单播报文
2.静态ARP高于动态ARP
3.动态ARP表象老化时间:Windows默认120S,华为&华三产品默认1200S,锐捷产品3600S
4.关于ARP常用命令
华为&华三-----------------------------------------------------------------------------------
display arp all --> 查看所有ARP
reset arp all --> 清楚所有动态ARP
arp static <IP地址> <MAC地址> --> 静态ARP绑定
思科&锐捷-----------------------------------------------------------------------------------
show arp --> 查看所有ARP
clear arp-cache --> 清楚所有动态ARP
arp <IP地址> <MAC地址> arpa --> 静态ARP绑定