ping这一工具通常被用来查看网络端到端的联通性。但实际上由于它对应的时间是发送、传输、队列延时之和,我们可以通过这一特性来粗略计算网络带宽。
例如,对于本人电脑互联网上第一跳的地址222.126.248.193,我们做如下ping的命令,得到如下反馈。
C:\Users\Administrator>ping -l 100 222.126.248.193
正在 Ping 222.126.248.193 具有 100 字节的数据:
来自 222.126.248.193 的回复: 字节=100 时间=3ms TTL=253
来自 222.126.248.193 的回复: 字节=100 时间=1ms TTL=253
来自 222.126.248.193 的回复: 字节=100 时间=1ms TTL=253
来自 222.126.248.193 的回复: 字节=100 时间=3ms TTL=253
222.126.248.193 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 1ms,最长 = 3ms,平均 = 2ms
C:\Users\Administrator>ping -l 5100 222.126.248.193
正在 Ping 222.126.248.193 具有 5100 字节的数据:
来自 222.126.248.193 的回复: 字节=5100 时间=8ms TTL=253
来自 222.126.248.193 的回复: 字节=5100 时间=9ms TTL=253
来自 222.126.248.193 的回复: 字节=5100 时间=6ms TTL=253
来自 222.126.248.193 的回复: 字节=5100 时间=6ms TTL=253
222.126.248.193 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 6ms,最长 = 9ms,平均 = 7ms
假设ping 100字节平均耗费2ms而ping 5100字节平均耗费7ms,因此,往返额外花费5ms单程额外花费2.5ms,多发送5000字节即8000比特。吞吐量近似计算为(5100-100)*8 bit / 0.025s = 16Mbps。当然这一估算是非常粗略的,假设路径上其他数据流基本不变的情况,也没有考虑路径上所有链路的异常情况。