实验环境准备
- 测试设备:笔记本电脑(Windows 11,IP
192.168.2.162) - 对端设备:手机(Android/iOS,IP
192.168.2.215) - 测试工具:Wireshark、CMD 终端
实验一:局域网初始状态通信(双向互通)
操作步骤
- 打开 PC 命令行,执行
arp -d清空本地 ARP 缓存表。 - 打开 Wireshark 并选择当前使用的网卡开始抓包。
- 在 PC 上执行连续 PING 测试:
ping 192.168.2.215 -t。
Wireshark 报文分析
在两端设备首次建立连接时,捕获到完整的 ARP 与 ICMP 报文交互:
| |
ARP 请求(No. 13):由于二层封装缺少目的 MAC 地址,PC 发起二层广播(Broadcast),询问谁拥有该 IP。
ARP 应答(No. 22):手机收到广播后,以单播形式回应自己的 MAC 地址(bee7945506be)。
ICMP 交互(No. 23\32):获取 MAC 地址并写入本地 ARP 缓存表后,三层 ICMP 报文成功封装二层帧头并发送,Ping 成功。

实验二:突发链路故障下的协议栈行为分析
操作步骤
- 在上述
ping -t过程中,突然断开手机的 Wi-Fi 连接(模拟对端物理断开关机)。 - 观察 PC 终端提示并持续记录 Wireshark 抓包。
报文分析与行为规律
在对端断开后,实验现象呈现明显的两个阶段:
ARP 缓存存活期(有表状态)
对端刚断开时,终端立刻提示"请求超时",但 Wireshark 中依然能看到 ICMP Request 发出:
| |
原理:Windows 协议栈在封装数据时优先读取本地 ARP 缓存。只要缓存未老化,即使对端不回应,PC 依然会根据表项中的 MAC 强行完成二层封装并送入网线。

ARP 缓存老化失效期(无表状态)
持续一会超时后,终端提示由"请求超时"转变为"目标主机不可达"或直接停止发送 ICMP,抓包中 ICMP 报文完全消失,只剩下 ARP 广播。

原理:当本地 ARP 表项老化删除,或者操作系统触发探测机制后,协议栈在二层封装时无法获取"目的 MAC"。由于二层帧头残缺,三层数据包(ICMP)无法向下传递,导致报文无法发出,PC 只能持续发送 ARP 广播尝试修复连接。
结论
- 网络通信,二层先行:三层协议(IP/ICMP等)能够发出的物理前提,是二层以太网帧必须具备合法的目的 MAC 地址。
- ARP 表决定封装行为:只要 ARP 表项存在,设备就会执行封装并发包(即使对方已挂);ARP 表项缺失,数据包在本地即被阻断,转化为 ARP 寻址行为。