在重传时包的长度变小说明,由于之前大包无法传递,传递的包的大小被自动调小了。继续查看17,18,19和20会发现这几个包的长度都是1460。很明显,这是一个大包发不过去导致重传的问题。 那么现在问题来了,为什么第一次大包发不过去,之后以小包重传也不成功呢? 查看server端Netmon后会发现,这是由于传输4096的包被切成1460+1460+1172后,server端只收到了最后一个包。接下来,由于sequence断了,server端会认为这是一个不合法的包,因为中间的信息缺失了。之后这个连接就在server端直接被block了(所以我们收到的错误信息是“connection forcibly close by the remote server”),因此后续re-transmit的1460的包server再也没有接收过(后续重传全都失败了)。 最终问题的解决办法是关闭网卡上的两个选项:Jumbo Packet和Large Send Offload(LSO)。