网站开发中英文版如何写,网站友情链接与排名,丽江网站建设c3sales,怎么在自己做的网站上发视频ping命令持续发送少量互联网流量到远程地址并报告收到回应的总时间。如果流量因为网络故障或者错误配置而被丢弃#xff0c;它也会报告。ping命令是最基本和初级的诊断网络问题的工具之一。ping常被用来测试网络延迟#xff0c;但是有时ping的延迟并不是网络引起的#xff0…ping命令持续发送少量互联网流量到远程地址并报告收到回应的总时间。如果流量因为网络故障或者错误配置而被丢弃它也会报告。ping命令是最基本和初级的诊断网络问题的工具之一。ping常被用来测试网络延迟但是有时ping的延迟并不是网络引起的所以为了正确理解ping的结果有必要了解影响ping延迟的几个因素。ping的原理是通过发送ICMP echo request包在收到ICMP echo reply包之后计算发送时间与接收时间之间的差值得出延迟的时间。ping的输出举例如下ping缺省每秒发一个echo request发包的时候不会输出任何信息直至收到echo reply的时候才输出一条信息格式如上最后一列是延迟时间ms表示毫秒。影响ping延迟的因素主要有ping延迟包含了进程调度的延迟由于ping本身是用户态的程序它首先会受到进程调度的影响比方说高优先级的进程与ping争抢CPU的话ping的执行就会遭到拖延这个调度延迟如果是发生在发包之后、收包之前就会被计入ping的延迟之中。多个同时运行的ping进程之间会互相干扰导致延迟ping通过raw socket发送和接收ICMP包而raw socket不仅会收到给自己的包也会收到给别人的包假如有多个ping进程同时在运行你的ping就有可能会收到别人的ping的echo reply当然ping程序可以从中挑出给自己的包因为包里嵌入了对应的ping进程号但是每个包都打开看看、并判断是不是给自己的——这都要消耗时间的所以说多个ping进程之间会互相干扰导致延迟加大。不同的UNIX版本由于实现方式的差异受这个因素的影响程度也不一样比如HP-UX受影响较大而Linux受影响相对较小因为Linux采用了一种过滤机制Linux Socket Filtering亦即Berkeley Packet Filter (BPF)ping程序利用BPF给raw socket加上一个过滤器这样内核会只把对应的echo reply传递给ping程序给其他ping进程的echo reply不会再传给这个ping避免了CPU和buffer资源的浪费也减少了ping延迟。其他类型的ICMP包也会对ping造成干扰ICMP包有好几种类型ping希望收到的是ICMP_ECHOREPLY但是其他类型的包也都会传递给ping我们上面说过这是因为ping使用raw socket的缘故raw socket会看到所有的ICMP包。ping需要消耗额外的时间和资源去查看这些本来不相干的包故而有可能会产生延迟。以下列出各种ICMP包的类型供参考ICMP_ECHOICMP_ECHOREPLYICMP_SOURCE_QUENCHICMP_REDIRECTICMP_DEST_UNREACHICMP_TIME_EXCEEDEDICMP_PARAMETERPROB注1在Linux上虽然ping采用了BPF过滤机制但是只过滤掉了发给其他ping进程的ICMP_ECHOREPLY包其他类型的包是不过滤的所以仍然会受到影响。注2在HP-UX上ICMP_SOURCE_QUENCH是最常见的影响ping延迟的因素。Source Quench是一种简陋的流控机制当接收端有缓冲区满的时候通过向发送端返回Source Quench告知发送端降低发送速度而满溢的缓冲区不一定与ICMP有关更常见的事UDP的缓冲区。由于这种机制存在种种问题有许多反对使用Source Quench的声音比如RFC6633。Linux从2.2起就不再支持ICMP Source Quench了。还有些其它因素比如网卡驱动防火墙软件什么的但比较少见就不深入探讨了。怎样判断ping延迟是网络延迟还是其它因素导致的呢如果有1秒以上的延迟的话观察一下icmp_seq它表示包的顺序在下例中第3个包的延迟是2.068秒而第4个包的延迟只有0.183秒如果发包的频率严格保持每秒一次的话第4个包应该比第3个包先收到才对而下例中包的顺序并未颠倒这说明第4个包的发送也被延迟了。发送延迟那就不是网络延迟了肯定有其它原因。还有一个简单的方法可以一试ping一下127.0.0.1或者ping本机的IP地址它们不用通过网络甚至不用进入网卡驱动程序所以延迟应该非常小可以作为一个基准值如果它们的延迟比较大那最大的可能是存在调度延迟或者ICMP包干扰之类的问题。