△Linux系统上的ping.c
如今我们看到的各个系统中自带的ping工具,早已经不是最初那个ping.shar程序了,其功能和用法都要丰富得多。
那么,如今的ping放到计算机上来说,究竟是一个怎样的工具呢?
ping的基本原理许多计算机发烧友可能会说,自己ping用得贼6。
不过,大伙儿知道ping是如何工作的吗?
知其然,不妨也了解一下背后的所以然:
ping,是网络结构里应用层的一个网络管理命令,是判断两台主机或路由节点之间网络是否畅通的重要手段。
简单来说:如果两台主机“ping”得通,说明它们之间可以建立连接。
一个小知识:公网(因特网)IP地址具有唯一性。
这就像你在世界范围(公网)内的一栋楼(主机or路由节点等)里工作,这栋楼的地址(IP地址)相对世界来说是唯一的,不过楼里面的其他门牌号(内网IP地址)则不一定是唯一的。
利用这一特性,我们就能用ping测试两台主机或路由节点中的网络连通性。
具体来说,就是使用ping命令,先给目标IP地址发送一个遵循ICMP协议的数据包(echo request)。
然后可以根据返回数据包的情况(丢包、速度等),检查主机或路由节点之间的网络状态。
Emm…ICMP协议又是什么?
它的全称是:Internet Control Message Protocol,即因特网控制报文协议,ICMP报文封装在IP包里。
所谓“控制”,即在IP主机、路由节点之间传递控制消息,来反映数据包是否成功到达目标端,以及反映网络状况等。
在IP通信中,当IP包成功到达目标地址并返回时,会收到ping应答;而当IP包因为某原因,未能成功到达目标地址、或未能成功从目标地址返回时,ICMP返回的数据包中将含有具体原因,如:网络不可达、端口不可达等。
怎样ping起来下面介绍一下ping的基本操作。
ping命令在各个常见的操作系统中通用,这里以macOS为例:
从Finder中找到“终端”。
输入ping IP地址(网址或域名也可以),这里先以百度为例。
然后,即可查看每个数据包,从本电脑对百度的网络服务器发送数据,到接收到服务器反馈数据的延迟时间。
由于macOS发送的每个IP数据包默认大小是64个字节,所以返回的数据包大小也是64个字节。
而这里的延迟时间,就是ping值。
除了输入百度等网址,想要测两台主机之间的ping值也没问题,在一台上输入另一台的IP地址即可: