2011-03-30 118 views
1

在Wireshark中查看消息时,我注意到校验和验证始终处于禁用状态。这是否像过时的要求,还是仅适用于公司网络防火墙之外的互联网流量?Intranet与Internet应用程序中的校验和验证

此外,有人可以请指教它是如何设置(例如,无论是从一个应用程序或网络卡设置,等等。)

PS:这个问题可能不具有实际意义。我正在要求这填补我糟糕的网络编程技巧中遗漏的大量空白。我听说校验和验证是tcp通信的一个主要瓶颈,但我惊讶于它已禁用所有我见过的消息

回答

2

此问题已在Wireshark FAQ中回答。

结果是校验和通常由网卡计算,而Wireshark经常在数据包到达实际计算的硬件之前截取数据包。启用对这些数据包的验证会导致大量错误,因此他们默认禁用验证。更多信息可通过链接获得。

编辑:只是为了解决下述水果的评论,我screenshotted一对夫妇的TCP数据包进行比较。第一种是未经验证TCP数据包:

Validation disabled

你可以看到有一个非零校验那里,所以它可能出现的Wireshark的(或其他一些硬件预应用)已经做了校验和为你。然而,当我们打开这个相同的数据包验证..

enter image description here

现在我们可以看到,该校验和是不是在第一时间有效。我找不到这个信息的来源,但我认为这是Wireshark没有为我们填充该领域的有力证据。无论如何,这样做会违反Wireshark的本质。相反,我认为这只是数据包中未初始化的字段 - 将字段设置为零比省略设置字段需要更多的工作。

同样值得注意的是,随着时间的推移,越来越多的网络堆栈将会将校验和卸载到硬件上,所以来自本地机器的有效校验和的情况会越来越少。

+0

据我现在了解,wireshark中显示的校验和验证是由wireshark应用程序完成的验证。校验和验证可能仍然在用于tcp通信的网卡硬件上发生。如果我的理解不正确,请给出建议 – paseena 2011-03-30 17:55:14

+0

发送时,如果您的NIC支持校验和卸载,您的TCP/IP堆栈可能会决定不执行NIC以后可以执行的操作。 – ninjalj 2011-03-30 18:08:08

+0

@水果,这是正确的。校验和总是会在TCP数据包上发生,但由于它是在硬件中完成的,Wireshark并不总是能够看到它。 – Jeff 2011-03-30 18:09:06