UDP 数据包前面的 14 个字节,它们的用途是什么?Linux

UDP 数据包前面的 14 个字节,它们的用途是什么?Linux

我正在分析从 MT4000 遥测设备发送的数据包。我在终端 (Linux) 中设置了一个侦听器,并设置为以十六进制显示接收到的数据包。

到目前为止,传入的数据包如下所示:

10:57:54.973363 IP 31.70.199.41.30000 > Dans-iPod.30000: UDP, length 37
0x0000:  0019 216b a7b2 0018 3f49 8ac1 0800 4568  ..!k....?I....Eh
0x0010:  0041 007a 0000 ed11 245c 1f46 c729 c0a8  .A.z....$\.F.)..
0x0020:  0156 7530 7530 002d c20f 000a 0200 2020  .Vu0u0.-........
0x0030:  2020 2020 2020 2031 2020 2020 2020 2030  .......1.......0
0x0040:  3132 3938 3130 3030 3239 3832 3133 20    12981000298213.

使用 MT4000 参考指南中的这张图表,我尝试将十六进制与正确的用途进行匹配。

*我无法发布图片,因为我的声誉还不到 10。您可以在 MT4000 API 参考指南中找到 UDP 数据包的细分,或者我认为只是标准的 UDP 数据包细分。

指南建议字节 0 应包含“用于表示版本和长度的 8 位字段。此 API 仅支持版本 4,IP 报头长度为 5*4=20 字节。此字段必须设置为 0x45.2”

使用这些信息,我可以看到版本字节数为 15,而不是 0。此后的所有内容都匹配,但我找不到前 14 个字节的解释:0019 216b a7b2 0018 3f49 8ac1 0800

任何帮助都将不胜感激,提前致谢,

埃德

答案1

IP头前面的14个字节是以太网头,其中最后两个字节(0800)表示高层协议(IP)。

相关内容