在重傳時包的長度變小說明,由于之前大包無法傳遞,傳遞的包的大小被自動調小了。繼續查看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)。