我正在做一个研究项目,需要拆分 tcp 连接。所以我有一些特殊的问题,可能会在我的发展中发生。问题在于对 TCP SACK 允许协商的理解。我阅读了 RFC,但在那里找不到答案。
对于两个 tcp 程序之间的 3 次 tcp 握手:A 和 B。如果 A 向 B 发送 TCP SYN 并允许 SACK,B 肯定会响应允许 SACK 的 SYN/ACK 数据包吗?如果 B 回复 TCP SYN/ACK 而没有 SACK 允许,这是否意味着
1) SACK-permited 仅在 A 上启用。A 可以选择性地确认来自 A 的 tcp 数据包,但 A 不能选择性地确认来自 B 的 tcp 数据包。
或者
2) A 和 B 均未启用 SACK-permited
如果 A 在没有允许 SACK 的情况下向 B 发送 TCP SYN,B 是否可以在允许 SACK 的情况下响应 SYN/ACK 数据包?
此外,为什么允许或不允许 SACK-permitted?它取决于操作系统或内核设置或其他什么?有可能控制它吗?谢谢!