做一些从 Web 服务器到浏览器的基本 HTTP 传输。通常可以正常工作,但很少有网页资源(如 javascript 文件)无法加载。调查显示,在数据的 TCP 流传输过程中,Len
随机变化,一切都变得松散(问题发生时 100% 一致)。我不知道Len
变化是否是问题,但它总是先于问题。真正的问题似乎是直接丢失数据,但我的 TCP 知识太低了。我在 seq/ack/len 和弄清楚谁在确认什么等之间感到困惑。我附上了一个说明问题的屏幕截图,并想知道是否有人可以提供一些见解。
我的网络朋友说浏览器在这里搞砸了(Firefox),但我不知道..
如果您继续进行此捕获,大约还有 30 多个 DUP ACK,而 Web 服务器继续将文件的其余部分发送回正常镜头。但是浏览器似乎不再接收数据了。
这与数据包长度无关。根据您显示的数据包捕获的一小部分,只是丢失了数据包。收到的最后一个序列是 65793,然后捕获中的下一个数据包以 67956 开头。这就是它反复确认序列 65793 的原因。服务器应该在一段时间后意识到这一点并重新发送丢失的数据包。