我正在通过 HTTP 从远程服务器流式传输视频。我在客户端使用 Wireshark 捕获数据包,我注意到连接的客户端不时停止发送数据包,每次暂停几秒钟。RTT 介于 170ms 和 200ms 之间,带宽为 20Mbps,连接丢包率高达 5.8%,我可以看到服务器的广告窗口大小从 14KB 缓慢启动到接近 64KB(窗口值大小=501,[计算的窗口大小值=64128],窗口大小缩放因子=128)。
我的困惑是为什么客户端不时停止发送数据包,而服务器的连接接收缓冲区根本没有填满?
在这种情况下丢包会影响什么(浏览器流视频)?
我正在考虑这种可能的情况:
浏览器使用单个连接流式传输视频(HTTP 重用相同的 TCP 连接),在服务器向客户端发送响应时未及时收到客户端 ACK,因此服务器停止并继续等待 ACK 重传,同时,客户端正在等待服务器响应数据包,当然还有来自服务器的 ACK。一段时间后,客户端开始重新传输 ACK,一切都恢复正常,我从捕获的数据中注意到暂停后的即时数据包是从客户端到服务器的。
这种理解是否正确,是否有意义?