Linux ping 命令

Linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。本文主要介绍Linux ping 命令。

1、命令简介

ping:用于测试网络连接和诊断网络问题的常用工具。它发送 ICMP 回显请求到目标主机,并等待目标主机发送回 ICMP 回显应答。

2、命令语法

ping 
[-aAbBdDfhLnOqrRUvV] [-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

3、命令描述

ping 使用 ICMP 协议的强制性 ECHO_REQUEST 数据报来引发主机或网关发送 ICMP ECHO_RESPONSEECHO_REQUEST 数据报包括 IP 头和 ICMP 头,然后是一个 struct timeval,接着是一些用于填充数据包的任意数量的 "pad" 字节。

ping 命令可以帮助执行多种操作。它允许测试您的互联网连接。它可以检查远程机器是否在线。它还可以分析是否存在网络问题,比如丢包或高延迟。

4、命令选项

选项

描述

-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

设置套接字sndbuf。

如果未指定,

则缓冲不超过一个数据包。

-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 

打印完整的用户到用户延迟。

默认情况下,ping打印网络往返时间。

-W timeout

以毫秒为单位设置ping的超时时间;

-w deadline

deadline;

5、使用示例

1)可以运行ping命令检查目标主机

也可以使用IP地址代替域名

ping www.baidu.com

2)要强制ping命令使用IPv4地址,我们可以使用-4选项,或使用其别名ping4。此选项在较旧的版本上不受支持

ping -4 baidu.com

3)要定义要发送的Echo请求的数量,ping将退出,我们可以使用-c选项

ping -c 5 baidu.com

4)默认情况下,每个ping请求之间的间隔为一秒。我们可以使用-i选项增加或减少该时间

ping -i .5 baidu.com

5)可以使用-s选项定义负载的数据包大小,以字节为单位,这将导致总数据包大小为所提供的值加上ICMP头的8个额外字节

ping -s 60 baidu.com

6)可以使用-q选项抑制输出显示(称为静默选项)

只在结束时先打印带有常规ping信息的一行,然后提供摘要。

ping -q google.com

7)要为ping命令输出指定一个最后期限

可以使用-w选项指定一个最后期限。此选项指定一个超时时间,以秒为单位。

ping -i 0.5 -w 3 baidu.com

8)ping命令的默认行为是通过默认路由发送ICMP包

如果我们的机器上有多个接口,我们可以使用-I选项指定源接口。

ping -I enp0s25 baidu.com

推荐阅读
cjavapy编程之路首页