一、简介
ping命令一般用于检测网络通与不通,也叫时延,其值越大,速度越慢PING(PacketInternet Grope),因特网包探索器,用于测试网络连接量的程序。
ping发送一个ICMP回声请求消息给目的地并报告是否收到所希望的ICMP回声应答。它是用来检查网络是否通畅或者网络连接速度的命令。
原理:网络上的机器都有唯一确定的IP地址,我们给目标IP地址发送一个数据包,对方就要返回一个同样大小的数据包,根据返回的数据包我们可以确定目标主机的存在,可以初步判断目标主机的操作系统等。
二、ping输出分析
[root@localhost sbc]# ping 10.228.90.70 -c 4
PING 10.228.90.70 (10.228.90.70) 56(84) bytes of data.
64 bytes from 10.228.90.70: icmp_seq=1 ttl=59 time=0.285 ms
64 bytes from 10.228.90.70: icmp_seq=2 ttl=59 time=0.329 ms
64 bytes from 10.228.90.70: icmp_seq=3 ttl=59 time=0.294 ms
64 bytes from 10.228.90.70: icmp_seq=4 ttl=59 time=0.303 ms
--- 10.228.90.70 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3009ms
rtt min/avg/max/mdev = 0.285/0.302/0.329/0.026 ms
1.ping的主机对应的IP地址(进行了DNS解析),向该主机发送的数据包的大小(56字节)。
PING 10.228.90.70 (10.228.90.70) 56(84) bytes of data.
实际测试ICMP包加起来也是64个字节啊。
2.主机的响应信息
64 bytes from 10.228.90.70: icmp_seq=1 ttl=59 time=0.285 ms
64 bytes from 10.228.90.70: icmp_seq=2 ttl=59 time=0.329 ms
64 bytes from 10.228.90.70: icmp_seq=3 ttl=59 time=0.294 ms
64 bytes from 10.228.90.70: icmp_seq=4 ttl=59 time=0.303 ms
icmp_seq:序列号,表示第几个个响应包(递增的数字)。
time:请求往返耗时。
ttl:IP数据报的ttl设置。
64 bytes:响应的数据包大小是64字节。
3.ping整体请求/响应概览。
--- 10.228.90.70 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3009ms
rtt min/avg/max/mdev = 0.285/0.302/0.329/0.026 ms
三、原理
ping命令主要基于ICMP(Internet Control Message Protocol)实现,它包含了两部分:客户端、服务器。
客户端:向服务端发送ICMP回显请求报文(echo message)。
服务端:向客户端返回ICMP回西显响应报文(echo reply message)。
ICMP报文通用格式如下:
类型:1个字节。8表示回显请求报文,0表示回显响应报文。
代码:1个字节。回显请求报文、回显响应报文 时均为0。
校验和:2个字节。非重点,略过。
标识符:2个字节。发送ICMP报文的客户端进程的id,服务端会回传给客户端。因为同一个客户端可能同时运行多个ping程序,这样客户端收到回西显报文,可以知道是响应给哪个客户端进程的。
序列号:2个字节。从0开始,客户端每次发送新的回显请求时+1。服务端原样会传。
数据:6个字节。客户端记录回显请求的发送时间,服务端记录回西显响应的发送时间
四、实战
看请求:
看响应: