ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
ping的工作原理很简单,一台网络设备发送请求等待另一台网络设备的回复,并记录下发送时间。接收到回复之后,就可以计算报文的传输时间了。只要就收到回复就表示连接是正常的,耗时时间喻示的路径的长度,重复请求收到回复的耗时的一致性也反应了连接的质量。所以,ping至少回答两个问题:一个是是否有连接?连接质量如何?
正常的ping操作主要是两个特定的ICMP消息,ECHO_REQUEST和ECHO_REPLY。理论上,所有的网络设备都应该返回报文来响应ECHO_REQUEST,但实际上并不是总是如此。
ping的解析:大多数操作系统不会一直发送ECHO_REQUEST直到中断(如果会的话使用Ctrl + C 进行中断)为止。例如:
正在 Ping www.a.shifen.com [14.215.177.39] 具有 32 字节的数据:
来自 14.215.177.39 的回复: 字节=32 时间=6ms TTL=56
来自 14.215.177.39 的回复: 字节=32 时间=17ms TTL=56
来自 14.215.177.39 的回复: 字节=32 时间=7ms TTL=56
来自 14.215.177.39 的回复: 字节=32 时间=6ms TTL=56
14.215.177.39 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 6ms,最长 = 17ms,平均 = 9ms
从打印出来的汇总统计中可以看出,上述结果中针对每一个报文回复给出的报文来源,大小,耗时,TTL 通过统计信息我们可以大致平均连接的状况。
当发送一个ECHO_REQUEST时,将发送时间记录在报文里面,并复制到远端主机相应的ECHO_REPLY报文中去,当接收到ECHO_REPLY时,通过比较当前时间和报文时间来计算出耗时时间,如果没有收到对应的sequence number报文,则认为报文丢失,耗时的大小取决于中间链路的多少,速度,链路拥塞情况。
耗时的大小多少才合理?这取决与网络以及网络质量,通常情况下如果是LAN下的话响应只要十几毫秒,但是如果对于远程的外网的话,这个值就会显著增加。
网友评论