TCP checksum offload开启后网卡会对所有的TCP包进行checksum的计算吗?

weichangkun 2014-07-16 04:49:44
这两天在项目实践中遇到了将网卡的TCP checksum offload 开启后在client侧无法正确接收sever侧的ACK消息的情况,关闭后问题解决了,但是有一点一直搞不懂,就是为什么TCP在建立连接的时候的SYN+ACK能够正确的加上校验和,而server回复给client的普通的ACK则不能正确的加上校验和,按理说如果硬件校验开启后不是所有的SERVER发送的包都需要经过网卡进行校验和的计算后才发送出去的吗?难道SYN+ACK这个包是TCP/IP协议栈自己进行checksum的计算的?求高手解答啊~wireshark截图如下:(我让wireshark开启了校验和的检验,默认是关闭的)上面第2个包显示校验和正确,而第6个包显示校验和错误
...全文
3246 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
weichangkun 2014-11-07
  • 打赏
  • 举报
回复
引用 2 楼 my3439955 的回复:
始终也没看明白你是在client端还是server端offload的 offload 后,本机外发的包的校验和会由硬件计算并填充,本机收到的包自然不会重算校验和并填充,如果是那样的话,天下就没有错包了。 收到的包的处理流程是算校验和,然后和包中的校验和对比,不匹配则抛弃。 offload只影响本机外发的包
这个是在Server端的offload,现在的问题是从现象上看是Server端的网卡对SYN+ACK包进行了TCP校验和的计算,而对ACK包没有进行计算,导致client侧一直接受不到正确的ACK,我想知道的是为什么同是由Server往外发的包,一个校验正确一个错误,这个是我的疑惑,不过还是感谢回复啦~
weichangkun 2014-11-07
  • 打赏
  • 举报
回复
引用 1 楼 jerry_dqh 的回复:
1 在实际使用过程中,看到过wireshark抓包中tcp checksum错误的情况,但是实际是正确的。 2 你使用的什么网卡,只有一些特别的网卡很识tcp 计算tcpchecksum,照理应该由协议栈计算tcpchecksum。 看了一下你的两个报文的截图,也有可能是你的第二个报文的帧长度小于60导致的。正常情况,如果报文长度不足60(带链路层的长度),要补上一些字节到60.而你的syn ack报文有60, 没有具体的报文,你可以将报文发给我看一下。
1.针对这种情况,应该是关闭了wireshark中的TCP校验功能,所以可能显示校验错误,而实际是正确的,因为他可能本来就没有进行相关计算 2.按照实际项目中的情况,网卡确实应该是计算了,因为后来关闭此功能后问题修复了 3.对于你说的SYN+ACK包的长度有60,而普通的ACK包没有达到60,这个对TCP协议栈是否进行校验和有影响么?这方面有没有具体的协议说明啥的,麻烦分享下,谢谢啦~
  • 打赏
  • 举报
回复
始终也没看明白你是在client端还是server端offload的 offload 后,本机外发的包的校验和会由硬件计算并填充,本机收到的包自然不会重算校验和并填充,如果是那样的话,天下就没有错包了。 收到的包的处理流程是算校验和,然后和包中的校验和对比,不匹配则抛弃。 offload只影响本机外发的包
碼上道 2014-07-19
  • 打赏
  • 举报
回复
1 在实际使用过程中,看到过wireshark抓包中tcp checksum错误的情况,但是实际是正确的。 2 你使用的什么网卡,只有一些特别的网卡很识tcp 计算tcpchecksum,照理应该由协议栈计算tcpchecksum。 看了一下你的两个报文的截图,也有可能是你的第二个报文的帧长度小于60导致的。正常情况,如果报文长度不足60(带链路层的长度),要补上一些字节到60.而你的syn ack报文有60, 没有具体的报文,你可以将报文发给我看一下。
无盘专用网卡驱动网卡高级设置_网吧专用! 各类网卡高级设置 1。8168/8111c网卡高级设置 在网卡高级选项里 JUMBO FRAME 改成无 802.1Q/1P VLAN Tagging 改成关闭 Flow Control 改成关闭 Jumbo Frame 改成关闭 Offload Checksum 改成关闭 Offload TCP_LargeSemnd 改成关闭 2。8169/8167网卡高级设置 820.1Q/1p VLAN Tagging=Disable Flow Control=Disable Junbo Frame=Disable Offload Checksum=Disable Offload TCP_LargeSend=Disable 3。NF网卡高级设置 Checksum Offload 数据校验 建议关闭 Flow Control 流量控制 一定要关闭 IEEE802.1P Support IEEE802.1P支持 建议关闭 Jumbo Frame Payload Size 默认是1500 这个是千兆网络一个新的设置,在下文详细叙述。 Low Power State Link Speed 网卡节能 建议关闭 Network Address MAC的修改 默认为不存在 一般不必改动 Optimize For CPU/Throughput 为CPU占用优化或为吞吐量进行优化,设置为CPU的话,网卡的速度被限制,但CPU占用很低,假如改为Throughput的话,网卡的性能才能完全发挥,但CPU的占用也上升不少。 Segmentation Offload 建议关闭 Speed/Duplex Settings Full Autonegotiation(全自适应,一般不用修改) VLAN Id 默认是1 不用改 VLAN Support VLAN支持 一般关闭 Wake on Magic packet 魔术数据唤醒 建议关闭 Wake on pattern 建议关闭 WakeOnLAN From PowerOff 建议关闭 复制一部分,下面的内容太多了。感觉有用就买下。

18,357

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧