建立的TCP连接未收到ACK

时间:2018-07-06 01:49:28

标签: networking tcp

此问题已发布在StackExchange-NetworkEngineering上。人们建议我在这里发布。这是我的原始帖子。

我正在尝试编写一个启动TCP连接并发送一些数据的客户端。在服务器端,我正在使用nc来侦听某个端口。现在,我可以完成三向握手。 netstats显示已建立连接。但是,在我的客户端开始发送数据之后,它再也不会收到ACK。

客户端在DPDK之上实现,因此绕过了内核堆栈。服务器绑定到其他NIC。两个网卡直接连接。 TCP部分由我自己的代码处理。由于缺乏知识,从某种意义上说,我将许多字段设置为固定的数字(例如窗口大小),从而大大简化了实现。

作为网络的新手,我不知道可能出什么问题,因此不确定应该提供哪些信息来帮助您确定问题。这是wireshark的屏幕截图。我的客户在192.168.0.10:12345,服务器在192.168.0.42:3456监听。数据包6之后,没有从服务器端发送任何ACK。

Screenshot from <code>wireshark</code> after 3-way handshaking

此外,错误的FCS的原因是我必须将零填充到SYN和第一个ACK数据包,以便它们至少为64个字节,这是客户端NIC的要求。

我对来自客户端的数据包和来自nc客户端的数据包进行了比较。似乎对于第一个数据包,唯一真正的区别是我的没有任何TCP选项,而nc带有时间戳。这可能是问题吗?

如果发现任何可能导致此no-ACK问题的信息,请告诉我。

0 个答案:

没有答案