【发布时间】:2014-02-06 10:23:01
【问题描述】:
我打算编写一个需要计算网络带宽以及延迟和丢包率的应用程序。限制之一是被动测量带宽(使用应用程序数据本身)。
我在网上阅读并从一些现有的应用程序中了解到,它们几乎都使用主动探测技术(即生成探测数据包流),并使用第一个和最后一个数据包到达之间的时间差来检测计算带宽。
这种技术的主要问题是它会用探测数据包淹没网络,这些数据包运行时间更长且不可扩展(因为我们需要在两端运行应用程序)。
其中一个建议是通过将数据包回显给发送者来计算数据包的 RTT,并使用以下公式计算带宽:
Bandwidth <= (Receive Buffer size)/RTT.
我不确定这可能有多准确,因为接收器可能并不总是按时回显数据包以获得正确的 RTT。单独使用 ICMP 可能并不总是有效,因为许多服务器禁用它。
我的主应用程序通过 TCP 连接运行,因此我有兴趣使用 TCP 连接来测量特定时间段内提供的实际带宽。如果有人能提出一种简单的技术(可靠的公式)来测量 TCP 连接的带宽,我将不胜感激。
【问题讨论】:
-
不要忘记接受您的问题的答案。您已经提出了 7 个问题,至今没有接受其中一个。
标签: bandwidth