欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ping命令详解

程序员文章站 2022-03-04 22:17:40
...

 

功能

测试目标主机可达性,简单测量RTT

命令格式

ping [参数] [主机名或IP地址]

ping命令运行在命令提示符终端,用法为:“ping 参数 目标主机”。其中参数为零到多个,目标主机可以是IP或者域名。

Usage: 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

命令参数

 

-a Audible ping, 即每ping一次都会有声音提示。

-A 自适应ping,根据ping包往返时间确定ping的速度。

-b 允许ping一个广播地址。

-B 不允许ping改变包头的源地址。

-c count ping指定次数后停止ping。

-d 设置socket中的SO_DEBUG选项,使能调试跟踪。实质上Linux内核中没有使用这个套接字选项。

-F flow_label 为ping回显请求分配一个20位的“flow label”,如果未设置,内核会为ping随机分配。这个选项只有ping6才有。

-f 洪泛模式。极限检测,快速连续ping一台主机,ping的速度达到100次每秒。对每一个ECHO_REQUEST报文的发送,打印一个“.”,当接受到ECHO_REPLY报文时,打印一个backspace字符。这样能够快速地表明网络丢失了多少个报文。如果interval没有设置,则设置interval为0,并按照报文接受的速度和一百次每秒的速度来发送报文(看哪个速度快)。只有超级用户能够和-i 0选项一起使用这个选项。

-i interval 设定间隔几秒发送一个ping包,默认一秒ping一次。

-I interface 指定网卡接口、或指定的本机地址送出数据包。

-l preload 是在没有接受到回复报文之前能发送的最多报文。非超级用户最多只能设置为3。如果不赋值preload默认为1。

-L 抑制组播报文回送,只适用于ping的目标为一个组播地址。

-n 只有数字形式ip地址值的输出,不通过查询DNS获知IP地址对应的主机名,以节省时间。

-p pattern 允许为传输的回显报文中包含的内容指定字节模式。这对于诊断与传输数据有关的网络问题可能很有用。数据采用16进制,例如“-p ff”可将传输的报文填充为全1。

-q 静默模式。这种模式下,出了开始的提示和结束的数据统计,不会输出任何东西。

 

-Q tos 用来设置服务质量(Quality of Service ),例如最小开销、 可靠性、吞吐量、低延迟。

IP协议有一个8bit的DS区分服务(以前叫服务类型)。前三位是优先(precedence)字段(在目前,优先字段并未被大家使用),接着4bit是TOS位,最后1bit没有使用,但必须置0。

4比特TOS位的意义分别为D(最小时延)、T(最大吞吐量)、R(最高可靠性)、C(最小代价)。要设置TOS位为对应意义,可以设置-Q <tos>分别为0x10,0x08,0x04,0x02。TOS的各个位不能同时置1。

-R 记录路由信息。在发送的IP报文首部选项中放入记录路由选项,在接到到报文回复之后,打印出回复报文的路由信息。

注意:IP报文的选项中最多只能计算9个路由信息,计算方式如下:

首部长度HLEN。这4bit字段用来定义首部的长度,以4字节为单位。由于首部长度可变,默认长度是20字节,此时4bit字段值为5。4bit的字段最大可以表示的数为15,故此首部长度最大为15*4byte,即60byte。首部的可变字节数为60-20=40byte,RR选项用去3byte(参见记录路由选项的一般格式),只剩下37byte,最多只能放下9个IP地址。

注意:很多的主机会略过IP报文的路由选项,因此有可能在回复报文中没有路由信息。

注意:不能和-T选项一起使用。

-r 绕过一般的路由表而直接向一个连接着的主机发送报文。如果主机不是通过直接连接的网络相连,则会出现错误。这个选项可以用来ping一个没有通过路由相连而是通过一个接口相连(假设也使用了-I选项)的本地主机。

-S 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时间戳选项。时间戳选项可以是以下三种:

(a) -T tsonly 只记录时间戳。

(b) -T tsandaddr 收集时间戳和IP地址。

(c) -T tsprespec [host1 [host2 [host3[host4]]]] 收集来自预定的网络段的时间戳和地址,发送端对选项列表进行初始化,存放了4个IP地址和四个取值为0的时间戳。只有在列表中的下一个地址和当前路由地址相匹配时,才记录它的时间戳。

与-R选项的分析类似,首部的可变字节数为60-20=40byte,选项用去4byte(参见时间戳选项的一般格式),只剩下36byte,最多只能放下9个时间戳。

注意:由于IP首部的空间限制,程序限制-R选项与-T不能同时使用。

-M hint  设定Path MTU查找选下项,可设置成下列三种:

(a) -M do 不允许分段,甚至不允许在本地分段。

(b) -M want 找出PMTU,在如果包太大就在本地分段。

(c) -M dont 不要设置IP首部中的DF位,即允许分段。

-m mark 设置mark。

-v 使ping处于verbose方式,它要ping命令除了打印ECHO-RESPONSE数据包之外,还打印其它所有返回的ICMP数据包。

-W timeout 等待回复的时间,单位是毫秒。这个选项只在没有接到任何的回复的情况下有效,只要接到了一个回复,就将等待时间设置为两倍的RTT。如果没有设置,则等待时间设置为一个最大值。

-w deadline 设定时间期限为<deadline>秒,不管已经发送和接到了多少包,只要达到时间期限就结束ping的过程。
 

相关标签: TCP/IP