我有一个运行Ubuntu 14.0.4的客户端,我发现TCP连接到客户端的问题。 来自客户端的TCP ack被丢弃,服务器将数据包重新发送到客户端。 客户端在收到重新发送请求时,向服务器发送一个DUP ACK。 我的假设是, 只有当数据包被乱序接收时才发送DUP ACK,而不是如果您收到一个已经收到的数据包的传输
这是截图: 
有人会知道为什么TCP的行为是这样吗?
重复的ACK可以通过几种方式产生,通常是由于数据包丢失:
第一和第三个子弹是相关的。 如果发送者没有得到它的ACK的原因是因为这个ACK被gremlins吃掉了,那么基于定时器的重传将在重发时重发一个片段。 已经确认的接收机将再次进行双重确认并等待下一个段。 如果gremlins不吃那个Dup-ACK,发送者将继续发送。
在你的情况下,数据包的时间表明一个基于定时器的dup-ACK不在这里播放。 最大的RTT是14ms。 这意味着发送方的错误重传,触发Dup-ACK。 我已经看到了这种行为由于错误的networking驱动程序,甚至在TCP卸载引擎的情况下,甚至NIC固件。 虽然,不是最近。