![UDP 数据包前面的 14 个字节,它们的用途是什么?Linux](https://linux22.com/image/1416515/UDP%20%E6%95%B0%E6%8D%AE%E5%8C%85%E5%89%8D%E9%9D%A2%E7%9A%84%2014%20%E4%B8%AA%E5%AD%97%E8%8A%82%EF%BC%8C%E5%AE%83%E4%BB%AC%E7%9A%84%E7%94%A8%E9%80%94%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9FLinux.png)
我正在分析从 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)。