小编Ibr*_*him的帖子

我的 UDP 校验和计算每次都给出错误的结果

我正在尝试手动计算各种 UDP 数据包的校验和,但与 Wireshark 中显示的结果相比,我总是得到错误的结果。下面是我如何做的一个例子:

Source Address: 192.168.0.103 (0xC0A8, 0x0067)
Destination Address: 192.168.0.1 (0xC0A8, 0x0001)

Source Port: 57090 (0xDF02)
Destination Port: 8000 (0x1F40)

Packet length: 19 (0x0013)
Data: hello world (0x6865, 0x6C6C, 0x6F20, 0x776F, 0x726C, 0x6400)

Expected checksum: 0xEDFD (from wireshark)
Run Code Online (Sandbox Code Playgroud)

我知道 UDP 校验和是使用以下变量计算的:

Source IP + Destination IP + 17 (0x0011 - protocol code) + 10 (0x000A - pseudoheader length) + Source Port + Destination Port + UDP Packet Length + Data
Run Code Online (Sandbox Code Playgroud)

所有这些都以 16 位为一组。

所以我的计算是(按相同顺序):

0xC0A8 + 0x0067 …
Run Code Online (Sandbox Code Playgroud)

checksum udp packet

2
推荐指数
1
解决办法
2164
查看次数

标签 统计

checksum ×1

packet ×1

udp ×1