测量RoundTrip TCP延迟而不更改应用程序协议

时间:2014-03-24 17:35:54

标签: c# networking tcp latency tcp-ip

有没有办法(最好是在C#中)如何定期测量连接层延迟(往返)而不改变应用程序协议并且不创建单独的专用连接 - 例如使用类似{-3}}的类似SYN-ACK技巧,但没有关闭/打开连接?

我通过给定的基于ASCII的协议连接到服务器(并且始终使用TCP_NODELAY)。服务器向我发送了大量离散消息,我定期发送心跳'有效载荷(但心跳没有响应有效载荷)。 我无法更改协议,在许多情况下,我也无法创建多个到服务器的物理连接。

1 个答案:

答案 0 :(得分:2)

请记住TCP确实windowing,因此在尝试实现优雅的SEQ / ACK解决方案时可能会出现问题。 (你想要序列,而不是同步)

[编辑:剪掉一个非常复杂和令人困惑的解释。]

我必须说最好的方法是使用简单的秒表方法来启动计时器,进行非常精简的请求或轮询,并测量从中返回的时间。如果那个查询确实是最轻的你可以做到,那么这应该给你合理期望等待的最短时间,这有时比ping更有价值(这可能会产生误导)。

如果您真的只需要网络时间来加工和返回,只需使用ICMP ping