TCP / UDP校验和如何工作?

用户138126

我使用原始套接字创建了一些UDP数据包,然后将它们发送到UDP服务器

我注意到当我输入错误的UDP校验和数字时,UDP服务器不会接受它,但是如果我将全0放在校验和中,则UDP服务器会接受它吗?

为什么?

另外,我注意到了一个肺炎:校验和卸载我检查了我的机器:

[root@kit temp]# ethtool --show-offload  eth0
Offload parameters for eth0:
rx-checksumming: on
tx-checksumming: on
scatter-gather: on
tcp-segmentation-offload: off
udp-fragmentation-offload: off
generic-segmentation-offload: on
generic-receive-offload: on
large-receive-offload: off
rx-vlan-offload: on
tx-vlan-offload: on
ntuple-filters: off
receive-hashing: on

看来我的机器上有校验和卸载。如果我随机设置了TCP校验和值,如果启用了校验和卸载,NIC可以将其修改为正确的值吗?

最后,例如,数据包在传输时可能会被修改,例如TTL会减少跳数NAT可能还会修改源IP地址,那么校验和就会过时,在这种情况下,校验和如何工作?路由器会相应地修改校验和吗?还是目标计算机可以智能地检测到这些并相应地计算校验和?

韦恩·约翰斯顿

UDP校验和对于IPv4是可选的。将校验和设置为0表示未使用它。有关详细信息,请参见Wikipedia文章

可以将TCP,UDP和IP校验和计算卸载到NIC。NIC将在硬件中计算校验和。这比用软件来做要快得多。维基百科再次知道一切

路由器递减TTL或以其他方式更改数据包后(对于所有更新数据包的协议),路由器将重新计算校验和。这必须在路由器上完成。目标计算机无法使用具有无效校验和的数据包,并以某种方式确定它是在源计算机上启动时是正确的。目标只能拒绝校验和无效的数据包。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

检查TCP校验和

来自分类Dev

重新计算 TCP 校验和

来自分类Dev

TCP / UDP和NAT

来自分类Dev

如何监视TCP和UDP端口更改

来自分类Dev

在python中计算TCP校验和

来自分类Dev

lwip tcp / ip校验和错误

来自分类Dev

tcp校验和机制会一直正常工作吗?

来自分类Dev

基本的UDP和TCP程序

来自分类Dev

TCP和UDP之间的区别

来自分类Dev

如何对 TCP 和 UDP 连接使用 select() 函数?

来自分类Dev

禁用内存缓存的TCP和UDP?

来自分类Dev

使用Java的TCP或UDP

来自分类Dev

UDP优于TCP的优势?

来自分类Dev

使用Java的TCP或UDP

来自分类Dev

Scapy计算错误的TCP校验和

来自分类Dev

TCP校验和C代码返回错误结果

来自分类Dev

有关TCP校验和计算的问题

来自分类Dev

IP和TCP标头校验和在C中计算

来自分类Dev

发送带有错误校验和的TCP

来自分类Dev

FireWall如何知道传输是UDP还是TCP?

来自分类Dev

UDP校验和如何更改IP片段?

来自分类Dev

获取仅UDP的VPN才能在TCP上工作

来自分类Dev

如何编辑TCP协议(tcp.cc)

来自分类Dev

如何监听所有端口(UDP和TCP)或使它们在Debian中看起来都是打开的

来自分类Dev

如何使用nftables在一行中匹配给定端口的UDP和TCP

来自分类Dev

如何通过src / dst(以及UDP和TCP的端口)记录IP流量的数量?

来自分类Dev

如何使用nmap一次扫描tcp和udp端口的范围?

来自分类Dev

如何估计在 UDP 和 TCP(分布式系统)中完成请求的总时间

来自分类Dev

如何使用 boost::asio 序列化 UDP 发现和 TCP 连接的类