Java套接字:TCP校验和不正确

时间:2009-03-20 20:27:04

标签: java sockets tcp

我正在尝试使用java套接字。我可以连接到套接字并发送/接收数据字节而不会出现问题。但是我也在使用wireshark嗅探流量,并注意到来自java套接字的每个数据包都被wireshark标记为“tcp校验和错误。”

任何人都有见解?

java版“1.6.0_12” Java(TM)SE运行时环境(版本1.6.0_12-b04) Java HotSpot(TM)客户端VM(版本11.2-b01,混合模式,共享)

Wireshark v1.0.6 w / WinPcap 4.0.2

2 个答案:

答案 0 :(得分:13)

我发现在很多情况下,使用像Wireshark这样的工具会在本地数据包上给你不正确的tcp校验和。

这是因为操作系统明智地不会浪费在发往本地主机的数据包上填充tcp校验和的努力(毕竟它们可能不正确)。

此外,在真实物理接口上传出的本地生成的数据包可能还有硬件生成的tcp校验和。这意味着发送数据包通常看起来像是错误的校验和(在线上,它们是正确的)。

在交换机上设置一个监控端口,在与其连接的单独机箱上运行Wireshark,您将看到真实的图片。

答案 1 :(得分:7)

这在Wireshark wiki here中有记录。