网络学习之ping指令

和同学聊天的时候被问到这样一个问题:在虚拟环境路由中主机A ping主机B的时间 加上主机B ping主机C的时间 为什么比主机A ping主机C的时间长?

我们经常使用ping指令探测主机间是否通信,然而细究起来还是一知半解,所以这个问题也引起了我的兴趣。

1.ping指令

windows系统下打开cmd命令行工具就可以使用ping网络诊断工具。

我们ping一个网站的效果:

我们再ping本机的效果:

ping 使用的是ICMP协议,它发送icmp回送请求消息给目的主机。ICMP协议规定:目的主机必须返回ICMP回送应答消息给源主机。如果源主机在一定时间内收到应答,则认为主机可达。
PING命令是属于ICMP协议规定的,而ICMP是内嵌于IP层的,IP协议是一种无连接的,不可靠的数据包协议。因此,可以说, PING是网络层的命令。按照缺省设置,Windows上运行的Ping命令发送4个ICMP(网间控制报文协议)回送请求,每个32字节数据,如果一切 正常,我们应能得到4个回送应答。 Ping能够以毫秒为单位显示发送回送请求到返回回送应答之间的时间量。如果应答时间短,表示数据报不必通过太多的路由器或网络连接速度比较快。

关于TTL(存活时间)我们可以推算下数据包经过了多少个路由器:源地点TTL起始值(一个2的乘方数)-返回时的TTL

例如第一个ping amazon的时候就是256-235=21跳;第二个ping本机就是128-128=0跳

2. ICMP协议


ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个面向无连接子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

ICMP的应用:ping ,traceroute

3. ping工作流程

主机A构建一个固定格式的ICMP请求数据包加ip地址->IP层协议,构建IP数据包->在ARP映射表中查找出IP地址对应的MAC地址->路由传输->主机B收到数据帧验证接收->提取IP数据包交给IP层协议->提取信息交给ICMP协议,构建ICMP应答包->发送给主机A

4.回到问题

由于ping指令基于非面向连接的协议,所以其消耗时间主要基于路由路径和网络传输速度。所以具体原因很可能是两次的路由算法算出的路径不一样导致时间差异,或者是网络传输途中发生的网络延迟等问题。

猜你喜欢

转载自blog.csdn.net/wannuoge4766/article/details/83860215