我使用此命令在两台相同的Linux计算机上运行tcpdump
:
tcpdump -i enp0s8 -nn -XX -vvv
在发件人计算机的ARP请求中,我看到:
20:03:29.113813 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.0.0.1 tell 10.0.0.2, length 28
0x0000: 0800 27bb f251 0800 27cf ce8e 0806 0001 ..'..Q..'.......
0x0010: 0800 0604 0001 0800 27cf ce8e 0a00 0002 ........'.......
0x0020: 0000 0000 0000 0a00 0001 ..........
但在目标机器中:
20:03:29.114928 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.0.0.1 tell 10.0.0.2, length 46
0x0000: 0800 27bb f251 0800 27cf ce8e 0806 0001 ..'..Q..'.......
0x0010: 0800 0604 0001 0800 27cf ce8e 0a00 0002 ........'.......
0x0020: 0000 0000 0000 0a00 0001 0000 0000 0000 ................
0x0030: 0000 0000 0000 0000 0000 0000 ............
为什么数据包被零填充到达46的长度?
答案 0 :(得分:0)
ARP消息本身长度为28个字节,与您指示的完全相同。现在,通过正确的以太网实现,输出帧必须填充为至少64字节长。然而,有一些关于此的怪癖 - 发起此ARP消息的设备本身可能能够在未标记的帧或802.1Q标记的帧中发送它。标签大小始终与总帧大小相对应,从而产生不同的填充: