我不知怎么地确信 TCP 校验和是标题校验和(类似于 IP 校验和),但我现在对阅读有疑问维基百科文章:
校验和字段是报头和正文中所有 16 位字的二进制补码和的 16 位二进制补码。
在我看来,TCP 校验和位于报头(而不是报尾)中,取决于报头之后发送的字节数,这有点疯狂。这对硬件优化的 TCP 来说是一个障碍。从本质上讲,这会使“直通”架构失效,因为直通架构会在知道 TCP 数据包的文本之前开始发送 TCP 报头。
为什么 TCP 校验和要放在标头中,而它又依赖于文本?对于“直通式”架构,是否可以缓解此问题?
答案1
是的,校验和位于 TCP 标头中。您可以参考以下参考资料,而无需查阅 wiki:RFC 793 具体阅读第3节第1段。
当您提到直通时,我假设指的是交换。交换机不会更改数据包有效负载中的任何内容,因此无需重新计算校验和。
答案2
我认为你可以从斯卡皮实时进行数据包操作。