我的公司正在为低延迟目的开发自己的 TCP 堆栈,其中一个测试涉及在 Linux 4.11 上运行 128 个 ncat 实例以侦听端口 55000 到 55127,并通过我们自己的 TCP 堆栈将数据发送到另一台计算机上的 128 个线程中。在 128 个 ncat 服务器中。
显然,我们没有实现 TCP 协议的一部分。如下面的 pcap 所示,ncat 服务器立即发送“TCP 窗口更新”;该段的相对序列号和确认号均为“1”。
我们的软件似乎没有正确处理这种情况,因为它继续发送越来越多的数据并最终阻塞,认为它已经发送了所有这些“未确认”的段,从而达到了拥塞窗口限制。
这些奇怪而奇妙的(seq=1 ack=1)数据包是什么??他们在 RFC 中的何处被提及,在这种情况下正确的行为是什么?