Java Socket:TCP 校验和不正确

6

我正在尝试使用Java套接字进行实验。我可以连接到套接字并发送/接收字节数据而没有问题。然而,我还在使用Wireshark嗅探流量,并注意到每个来自Java套接字的数据包都被Wireshark标记为“TCP校验和不正确”。

有人有什么见解吗?

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

Wireshark v1.0.6 w/WinPcap 4.0.2

2个回答

13

我发现在许多情况下,使用类似Wireshark的工具会在本地数据包上给出不正确的TCP校验和。

这是因为操作系统明智地不会浪费精力在针对本地主机的数据包上填充TCP校验和(毕竟它们不可能是错误的)。

此外,生成并发送到物理接口的本地数据包很可能已经具有硬件生成的TCP校验和。 这意味着发送数据包通常看起来像具有不正确的校验和(在传输中,它们将是正确的)。

在交换机上设置一个监视器端口,在连接到该端口的另一台计算机上运行Wireshark,就可以看到真实情况。


7

这在Wireshark维基这里有详细说明。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接