因此从根本上来说这是一个简单的问题,但答案却不容易。
我如何计算下载和上传速度以便在 C# 中编写程序?
我不确定如何考虑延迟。
我希望你们中的一些天才可以帮助我解决这个问题......:)
提前致谢。
答案1
简单来说,有三种情况。
1.物理接口限制吞吐量。
如果网络接口有限制,那么这就是限制(duh :p)并且正如@Ramhound所说,延迟并不重要。
2. 窗口受限
如果任一端配置的 TCP 最大窗口受到限制,则
T <= min(rwnd,cwnd)/RTT
3. 限制数据包丢失
数据包丢失也会限制吞吐量(通过限制发送窗口)。我们从TCP 拥塞避免算法的宏观行为我们可以得到吞吐量的上限
T <= (MSS / RTT) * C/sqrt(p),
其中 p 是数据包丢失率,C 是常数(请参阅文章了解解释)。这并不准确,有许多重要的假设,不同的 TCP 类型也会影响这一点 - 但我们发现数据包丢失会影响吞吐量。
我不太明白这如何帮助你用 C# 编写程序,但希望它能给你带来一些帮助:)