Linux ping命令详解
PING(Packet Internet Groper), 因特网包探索器,用于测试网络连接量的程序。Ping是工作在TCP/IP网络体系结构中应用层的一个服务命令, 主要是向特定的目的主机发送ICMP(Internet Control Message Protocol 因特网报文控制协议) Echo 请求报文,测试目的站是否可达及了解其有关状态。在网络中ping是一个十分强大的TCP/IP工具。
一、简介
PING
(Packet Internet Groper), 因特网包探索器,用于测试网络连接量的程序 。Ping是工作在 TCP/IP
网络体系结构中应用层的一个服务命令, 主要是向特定的目的主机发送 ICMP
(Internet Control Message Protocol 因特网报文控制协议) Echo 请求报文,测试目的站是否可达及了解其有关状态 。
在网络中ping是一个十分强大的TCP/IP工具。它的作用主要为:
- 用来检测网络的连通情况和分析网络速度;
- 根据域名得到服务器IP;
- 根据ping返回的TTL值来判断对方所使用的操作系统及数据包经过路由器数量。
二、ping命令
ping命令在不同操作系统间的操作和可选字段略有不同,以下是Linux系统ping命令:
> ping
Usage: ping [-aAbBdDfhLnOqrRUvV64] [-c count] [-i interval] [-I interface]
[-m mark] [-M pmtudisc_option] [-l preload] [-p pattern] [-Q tos]
[-s packetsize] [-S sndbuf] [-t ttl] [-T timestamp_option]
[-w deadline] [-W timeout] [hop1 ...] destination
Usage: ping -6 [-aAbBdDfhLnOqrRUvV] [-c count] [-i interval] [-I interface]
[-l preload] [-m mark] [-M pmtudisc_option]
[-N nodeinfo_option] [-p pattern] [-Q tclass] [-s packetsize]
[-S sndbuf] [-t ttl] [-T timestamp_option] [-w deadline]
[-W timeout] destination
参数说明:
参数 | 说明 |
---|---|
-a | Audible ping |
-A | 自适应ping,根据ping包往返时间确定ping的速度; |
-b | 允许ping一个广播地址; |
-B | 不允许ping改变包头的源地址; |
-c count | ping指定次数后停止ping; |
-d | 使用Socket的SO_DEBUG功能; |
-F flow_label | 为ping回显请求分配一个20位的“flow label”,如果未设置,内核会为ping随机分配; |
-f | 极限检测,快速连续ping一台主机,ping的速度达到100次每秒; |
-i interval | 设定间隔几秒发送一个ping包,默认一秒ping一次; |
-I interface | 指定网卡接口、或指定的本机地址送出数据包; |
-l preload | 设置在送出要求信息之前,先行发出的数据包; |
-L | 抑制组播报文回送,只适用于ping的目标为一个组播地址 |
-n | 不要将ip地址转换成主机名; |
-p pattern | 指定填充ping数据包的十六进制内容,在诊断与数据有关的网络错误时这个选项就非常有用,如:“-p ff”; |
-q | 不显示任何传送封包的信息,只显示最后的结果 |
-Q tos | 设置Qos(Quality of Service),它是ICMP数据报相关位;可以是十进制或十六进制数,详见rfc1349和rfc2474文档; |
-R | 记录ping的路由过程(IPv4 only); 注意:由于IP头的限制,最多只能记录9个路由,其他会被忽略; |
-r | 忽略正常的路由表,直接将数据包送到远端主机上,通常是查看本机的网络接口是否有问题;如果主机不直接连接的网络上,则返回一个错误。 |
-S sndbuf | Set socket sndbuf. If not specified, it is selected to buffer not more than one packet |
-s packetsize | 指定每次ping发送的数据字节数,默认为“56字节”+“28字节”的ICMP头,一共是84字节; 包头+内容不能大于65535,所以最大值为65507(linux:65507, windows:65500); |
-t ttl | 设置TTL(Time To Live)为指定的值。该字段指定IP包被路由器丢弃之前允许通过的最大网段数; |
-T timestamp_option | 设置IP timestamp选项,可以是下面的任何一个: - ‘tsonly’ (only timestamps) - ‘tsandaddr’ (timestamps and addresses) - ‘tsprespec host1 [host2 [host3]]’ (timestamp prespecified hops) |
-M hint | 设置MTU(最大传输单元)分片策略。 可设置为: - ‘do’:禁止分片,即使包被丢弃; - ‘want’:当包过大时分片; - ‘dont’:不设置分片标志(DF flag); |
-m mark | 设置mark; |
-v | 使ping处于verbose方式,它要ping命令除了打印ECHO-RESPONSE数据包之外,还打印其它所有返回的ICMP数据包; |
-U | Print full user-to-user latency (the old behaviour) Normally ping prints network round trip time, which can be different f.e. due to DNS failures. |
-W timeout | 以毫秒为单位设置ping的超时时间; |
-w deadline | deadline; |
我们通常会用它来直接 ping ip
或 ping 域名
,来测试网络的连通情况。
命令如下:
> ping 10.0.7.229
> ping www.baidu.com
输出结果:
# ping 10.0.7.229
PING 10.0.7.229 (10.0.7.229) 56(84) bytes of data.
64 bytes from 10.0.7.229: icmp_seq=1 ttl=64 time=3.75 ms
64 bytes from 10.0.7.229: icmp_seq=2 ttl=64 time=16.2 ms
64 bytes from 10.0.7.229: icmp_seq=3 ttl=64 time=1.53 ms
64 bytes from 10.0.7.229: icmp_seq=4 ttl=64 time=0.898 ms
--- 10.0.7.229 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3019ms
rtt min/avg/max/mdev = 0.898/5.608/16.248/6.233 ms
# ping www.baidu.com
PING www.a.shifen.com (39.156.66.14) 56(84) bytes of data.
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=1 ttl=50 time=54.7 ms
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=2 ttl=50 time=8.19 ms
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=3 ttl=50 time=12.7 ms
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=4 ttl=50 time=14.2 ms
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=5 ttl=50 time=8.48 ms
--- www.a.shifen.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4644ms
rtt min/avg/max/mdev = 8.197/19.680/54.708/17.672 ms
输出格式说明:
PING 10.0.7.229 (10.0.7.229) 56(84) bytes of data.
PING www.a.shifen.com (39.156.66.14) 56(84) bytes of data.
字段 | 说明 |
---|---|
www.a.shifen.com | 表示正在对主机名为 www.a.shifen.com 的主机进行 ping 操作。ping 命令会尝试向目标主机发送 ICMP Echo 请求并等待回复; |
(39.156.66.14) | 表示 www.a.shifen.com 的 IP 地址是 39.156.66.14。实际的 IP 地址会显示在括号中; |
56(84) bytes of data | 表示发送的 ICMP Echo 请求的数据包大小为 56 字节。括号中的 84 表示实际发送的数据包大小,包括 ICMP 头部和其他附加信息(参考 “-s” 参数); |
这些信息提供了关于 ping 命令正在操作的 目标主机的主机名
、IP 地址
以及 ICMP Echo 请求的数据包大小
。
ping 域名
,第一行域名显示的不是ping的域名,其实www.a.shifen.com
是CDN
域名,39.156.66.14
是CDN域名的ip。
64 bytes from 10.0.7.229: icmp_seq=1 ttl=64 time=3.75 ms
字段 | 说明 |
---|---|
64 bytes from 10.0.7.229 | 表示从 IP 地址为 10.0.7.229 的主机接收到一个 ICMP Echo 回复。其中,64 bytes 表示回复的数据包大小; |
icmp_seq=1 | 表示这个 ICMP Echo 回复的序列号是 1。序列号是用来标识 ICMP Echo 请求和回复之间的关联性,以便确定是否有丢包; |
ttl=64 | ttl表示生存时间(Time to Live),表示DNS记录在DNS服务器上存在的时间,它是IP协议包的一个值,告诉路由器该数据包何时需要被丢弃。可以通过Ping返回的TTL值大小,粗略地判断目标系统类型是Windows系列还是UNIX/Linux系列,默认情况下,Linux系统的TTL值为64或255,Windows NT/2000/XP系统的TTL值为128,Windows 98系统的TTL值为32,UNIX主机的TTL值为255。 |
time=3.75ms | 表示往返时间(Round Trip Time,RTT),即发送 ICMP Echo 请求到接收到回复的时间。在这个例子中,往返时间为 3.75 毫秒,数值越小,连通速度越快; |
这些信息提供了有关 ICMP Echo 请求
和 回复
的详细信息,包括 数据包大小
、序列号
、TTL 值
和 往返时间
等。
--- 10.0.7.229 ping statistics ---
这一行是 ping
命令输出中的一个分隔行,用于标识关于 ICMP Echo
请求的统计信息。它通常出现在 ping
命令的输出的末尾,用于总结 ICMP Echo
请求的发送和接收情况。
5 packets transmitted, 5 received, 0% packet loss, time 4644ms
字段 | 说明 |
---|---|
5 packets transmitted | 表示发送的 ICMP Echo 请求的总数量。在这个例子中,发送了 5 个请求。 |
5 received | 表示成功接收到的 ICMP Echo 回复的数量。在这个例子中,成功接收到了 6 个回复; |
0% packet loss | 表示丢包率(Packet Loss Rate),即发送的 ICMP Echo 请求中丢失的比例。在这个例子中,没有丢失任何请求,丢包率为 0%; |
time 4644ms | 表示整个 ping 命令的执行时间,以毫秒(ms)为单位。在这个例子中,ping 命令的执行时间为 4644 毫秒,即 4.644 秒; |
这些信息可以帮助你评估 与目标主机之间的网络连接质量
。如果丢包率为 0%,表示网络连接稳定,所有的 ICMP Echo 请求都成功到达目标主机并得到回复。而较高的丢包率可能意味着网络连接存在问题或不稳定。
rtt min/avg/max/mdev = 8.197/19.680/54.708/17.672 ms
字段 | 说明 |
---|---|
min | 表示最小延迟(Round-Trip Time,RTT),即从发送 ICMP Echo 请求到接收到 ICMP Echo 回复的最短时间。它表示了网络的最佳情况下的延迟; |
avg | 表示平均延迟(RTT),即从发送 ICMP Echo 请求到接收到 ICMP Echo 回复的平均时间。它表示了网络的平均延迟情况; |
max | 表示最大延迟(RTT),即从发送 ICMP Echo 请求到接收到 ICMP Echo 回复的最长时间。它表示了网络的最差情况下的延迟; |
mdev | 表示延迟的平均偏差(Mean Deviation),即平均延迟与每个延迟样本的平均值之间的差异。它用于衡量延迟的波动性或不稳定性。较小的 mdev 值表示网络延迟的稳定性较高; |
这些值以 毫秒(ms)
为单位给出。
通过观察 ping
命令的输出,你可以了解到与目标主机之间的网络延迟情况
。这些值可以帮助你评估网络连接的质量和稳定性
。
三、简单示例
3.1 ping -c 3 www.baidu.com
说明:ping 3次www.baidu.com之后退出。
输出结果:
PING www.a.shifen.com (39.156.66.18) 56(84) bytes of data.
64 bytes from 39.156.66.18 (39.156.66.18): icmp_seq=1 ttl=50 time=11.9 ms
64 bytes from 39.156.66.18 (39.156.66.18): icmp_seq=2 ttl=50 time=8.41 ms
64 bytes from 39.156.66.18 (39.156.66.18): icmp_seq=3 ttl=50 time=8.45 ms
--- www.a.shifen.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 8.411/9.594/11.913/1.641 ms
3.2 ping -c 3 -i 2 www.baidu.com
说明:每隔2秒ping一次,ping 3次之后退出。
输出结果:
PING www.a.shifen.com (39.156.66.14) 56(84) bytes of data.
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=1 ttl=50 time=10.3 ms
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=2 ttl=50 time=7.94 ms
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=3 ttl=50 time=12.5 ms
--- www.a.shifen.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 4004ms
rtt min/avg/max/mdev = 7.949/10.285/12.525/1.871 ms
更多推荐
所有评论(0)