1

我正在尝试测量 tcp 连接的 rtt,但遇到了一些问题。rtt 是通过getsockopt找到服务器套接字的 tcp_info 来测量的。遗憾的是,如果客户端使用延迟的 acks,这个指标会受到很大的影响,因为这会增加从服务器发送的数据包到测量的 rtt 之间的延迟。

如果我可以确保客户端使用延迟的确认(即标准的 Windows TCPAckFrequency 为 2),我可以通过编程方式找出“真实的”rtt。但是,这并不现实,因为该应用程序是在 Web 浏览器 (Javascript/WebSocket) 中运行的演示(tcp 功能),我不想让用户弄乱他们的注册表以使网页正常工作.

我可以看到获得良好测量的唯一真正可能性是1:在客户端的套接字上设置tcp ack频率(当前是WebSocket,这不是必需的),或者2:以某种方式找出客户端是否使用延迟的ack与否,并相应地调整测量值。

第一个解决方案可以通过设置 TCP_QUICKACK 来实现,但我在任何基于 javascript 的 tcp 解决方案(本机 WebSocket 或 Socket.io)中都没有发现这种可能性。同样,我也没有找到任何检查客户端设置的好方法。有任何想法吗?

4

0 回答 0