是否可以使用 ping 测量带宽?

Posted

技术标签:

【中文标题】是否可以使用 ping 测量带宽?【英文标题】:Is it possible to measure bandwidth using ping? 【发布时间】:2009-04-21 10:40:20 【问题描述】:

我们能否从 ping 服务器所需的时间中找到互联网带宽,如果是的话,如何完成

【问题讨论】:

***.com/questions/729146/… 的近似副本 重复***.com/questions/772113/bandwidth-from-latency 【参考方案1】:

不,ping 不会告诉您有关带宽的任何信息,它只是测量延迟。测量带宽最好通过专门的测试来完成,即传输一堆比特并测量需要多长时间。您可能需要考虑带宽会因许多因素而发生巨大变化,例如:

方向; A 到 B 可能比 B 到 A 快,反之亦然 一天中的时间;取决于所涉及链接的一般负载水平 所走的确切路线,而路线又会随机变化

【讨论】:

@publicENEMY,你说的是哪篇谷歌论文?【参考方案2】:

您可以通过创建不同大小的 ping 来进行非常粗略的测量

然后,您可以使用较小和较大 ping 之间的延迟差异来形成延迟计算的基础。

实际上,尽管使用宽带速度,这不会产生有意义的数据。在调制解调器速度或更慢的情况下,您可能能够获得带宽指示,但它不太可能是准确和可重复的。

但正如其他人已经指出的那样,ping 最好用作延迟的指示,并且有更好的方法来测量带宽。

【讨论】:

【参考方案3】:

几年前,我对延迟和通过电缆使用的​​带宽之间的关系进行了一些调查。

基本上,如果您从零带宽开始并增加带宽使用,延迟会非常缓慢地增加 - 直到您达到大约 90% 的带宽。然后等待时间越过屋顶,达到另一个高原,之后又缓慢增加。

【讨论】:

这也适用于我们(在使用 UDP 的多人游戏中使用)。更复杂变体的“科学”名称是数据包对探测。效果的解释是大多数中间节点使用缓冲区来存储待处理的打包器,一旦路径饱和,一些缓冲区就会开始填充。【参考方案4】:

不,但您或许可以估计延迟时间。

【讨论】:

【参考方案5】:

请看 top-5-unix-network-monitoring-utilities

【讨论】:

【参考方案6】:

如果您事先知道通道的延迟,则可以测量带宽。

您可以使用大 ping 包并估计了解频道类型和预期 RTT 的带宽。

【讨论】:

【参考方案7】:

我问过同样的问题,但每个人都说真正的 ping 不能很好地测量带宽。下面列出的这批是使用 ping 进行的带宽速度测试,但它的最大速度限制为 1000kb/s,这种简单的形式不会四舍五入,但您可以使用它并进行实验。

@echo off
:begin
color 0b
MODE CON:COLS=15 LINES=3
for /F "tokens=10 delims=ms=," %%a in ('ping -n 1 -w 1000 -l 1024 8.8.8.8^| find "Average"') do set "A1=%%a"
set /a T=%A1%
set /a varia=1000/%T%
set /a answer=%varia%
set /a varia2=%answer%
set /a answer2=%varia2%
echo.
echo  Speed %answer2% Kb/s
sleep 5
goto begin

【讨论】:

以上是关于是否可以使用 ping 测量带宽?的主要内容,如果未能解决你的问题,请参考以下文章

网络测试

带宽的 nvprof 选项

如何测量带宽使用情况

如何测量客户端和服务器之间使用的网络带宽?

如何计算理论上的最大 CPU-RAM 带宽?

使用 C 测量内存写入带宽