ping 命令用来测试主机之间网络的连通性。执行 ping 命令会使用 ICMP 传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。
在网络中 ping 是一个十分强大的 TCP/IP 工具。它的作用主要为:
1、用来检测网络的连通情况和分析网络速度
2、根据域名得到服务器IP
3、根据 ping 返回的 TTL 值来判断对方所使用的操作系统及数据包经过路由器数量
① ping目标主机的域名和IP(ping会自动将域名转换为IP)
② 不带包头的包大小和带包头的包大小(参考“-s”参数)
③ icmp_seq:ping序列,从1开始;
ttl: 剩余的 TTL;
time: 响应时间,数值越小,连通速度越快;
④ 发出去的包数,返回的包数,丢包率,耗费时间;
⑤ 最小/平均/最大响应时间和本机硬件耗费时间;
语法格式
ping (选项) (参数) 目标主机
ping [-aAbBdDfhLnOqrRUvV46] [-c count] [-F flowlabel] [-i interval] [-I interface] [-l preload] [-m mark] [-M pmtudisc_option] [-N
nodeinfo_option] [-w deadline] [-W timeout] [-p pattern] [-Q tos] [-s packetsize] [-S sndbuf] [-t ttl] [-T timestamp option] [hop ...]
destination
选项为零到多个,目标主机可以是 IP 或者 域名。
常用命令选项
-4 Use IPv4 only
-6 Use IPv6 only
-a 这消除了查看ping输出的需要
-b 允许ping广播地址
-B 不允许ping更改探测器的源地址。当ping开始时,该地址被绑定到一个选定的地址
-d 调试,在正在使用的套接字上设置SO_DEBUG选项
-l preload 如果指定了preload, ping会在进入正常行为模式之前以尽可能快的速度发送这么多包。只有超级用户可以选择大于3的预加载
-L 抑制组播报文环回。仅当ping目的是组播地址时适用
-c 完成次数 设置完成要求回应的次数
-i 间隔秒数 指定收发信息的间隔时间(默认=一秒钟。 只有超级用户可以将等待时间设置为小于0.2秒的值)
-I interface address 配置源地址为指定的interface_address。参数可以是数字IP地址或设备名称。ping IPv6链路本地地址时必选
-f 极限检测 快速连续 ping 一台主机 ,ping 的速度达到100次每秒
-F flow_label 分配并设置echo请求报文的20位流标签。(只有ping6)。如果value为零,则内核分配随机流标签
-t ttl 设置IP生存时间
-s 数据包大小 设置数据包的大小(发送的数据字节数。缺省值为56,加上8个字节的ICMP头数据,等于64个字节)
-S sndbuf 设置套接字sndbuf。如果未指定则选择只缓冲一个数据包
-t 存活数值 设置存活数值 TTL 的大小
-p pattern 指定最多16个“pad”字节来填充发送的数据包。这对于诊断网络中依赖数据的问题非常有用。例如,'-p ff'将用1填充所有发送的数据包
-T timestamp_option 设置特殊的IP时间戳选项,可以是'tsonly'(仅时间戳),'tsandaddr'(时间戳和地址)
-W timeout 等待响应的时间,以秒为单位。 此选项只影响在没有任何响应时的ICMP超时,否则ping将等待两个rtt
-U 打印完整的用户到用户延迟(旧行为),通常ping会打印网络往返时间,由于DNS故障,往返时间可能会有所不同
-n 仅数字输出。不会尝试查找符号主机地址的名称
-q 安静输出。仅在启动时和完成时显示摘要行
-v 详细输出。列出了收到的除ECHO_RESPONSE之外的ICMP数据包
-A 自适应ping。分组间间隔适应往返时间, 从而有效地不超过一个(或者多个,如果设置了预载)未应答的探针 存在于网络中。非超级用户的最小间隔为200毫秒。 在具有低rtt的网络上,该模式基本上等同于泛洪模式。
-Q tos 设置ICMP报文中与服务质量相关的位。Tos可以是十进制或十六进制数。不能同时设置多个TOS位。
-R 仅记录路线(IPv4)。在ECHO_REQUEST包中包含RECORD_ROUTE选项,显示返回报文的路由缓冲区。注意,IP头只足够容纳9条这样的路由。
-r 绕过正常的路由表,直接发送到附加网络上的主机。如果主机不在一个直接连接的网络上,则返回一个错误。该选项可用于通过没有路由的接口ping本地主机
-M hint 选择Path MTU发现策略。hint可以是'do'(禁止分片,甚至是本地的),'want'(执行PMTU发现,当包大小较大时在本地分片),或' not '(不设置DF标志)
-w deadline 不管发送或接收了多少数据包,ping退出前的超时时间(秒)。 在这种情况下,发送完count个数据包后,ping不会停止,它会等待最后期限到期 或者直到count探测被应答,或者对于来自网络的一些错误通知。
简单示例
每隔0.6秒 ping 一次,一共 ping 5 次
ping -c 5 -i 0.6 192.168.1.1
以最快的速度,使用最大的包进行 ping ,可用于测试目标主机的承压能力
ping -f -s 65507 192.168.200.111
注意:此用法非常危险,65535(包头+内容)*100个包每秒=6.25MB,每秒发送6.25MB的数据,相当于50Mbps 的带宽,完全可能导致目标主机拒绝服务。
怎样使用 ping 命令来测试网络连通(面试常问)
1.使用 ipconfig /all (Windows)ifconfig(Linux)观察本地网络设置是否正确
2.ping 127.0.0.1,ping 本地循环地址是为了检查本地的 TCP/IP 协议有没有设置好。
3.ping 本机 IP 地址,这样是为了检查本机的 IP 地址是否设置有误。
4.ping 局域网内其他 IP 地址,这个命令应该离开你的计算机,经过网卡及网络电缆到达其他计算机,再返回。收到回送应答表明本地网络中的网卡和载体运行正确,本机与本地网络连接。
5.ping 网关 IP,这个命令如果应答正确,表示局域网中的网关路由器正在运行并能够作出应答。
6.ping 远程 IP 地址,这主要是检查本网或本机与外部的连接是否正常。
7.ping localhost,localhost 是网络保留名,它是 127.0.0.1 的别名,每台计算机都应该能够将该名字转换成该地址。如果没有做到这一点,则表示主机文件(/Windows/host)中存在问题。
8.ping www.baidu.com,对这个域名执行 ping 命令,是通过 DNS 服务器。如果这里出现故障,则表示 DNS 服务器的 IP 地址配置不正确或 DNS 服务器有故障。
TTL 详情
IP数据包的生存时间(TTL)值表示该数据包在被丢弃之前可以经过的IP路由器的最大数目。在当前的实践中,您可以期望Internet上的每个路由器都将TTL字段精确地减少1。
TCP/IP规范规定TCP数据包的TTL字段应该设置为60,但许多系统使用更小的值(4.3 BSD使用30,4.2使用15)。
该字段的最大值为255,大多数Unix系统将 ICMP ECHO_REQUEST
报文的TTL字段设置为255。这就是为什么你会发现你可以“ping”一些主机,但不能通过telnet或ftp到达它们。
正常情况下,ping从它收到的数据包中打印ttl值。当远程系统收到ping数据包时,它可以对响应中的TTL字段做以下三件事中的一件:
· Not change it; this is what Berkeley Unix systems did before the 4.3BSD Tahoe release. In this case the TTL value in the received
packet will be 255 minus the number of routers in the round-trip path.
· Set it to 255; this is what current Berkeley Unix systems do. In this case the TTL value in the received packet will be 255 minus
the number of routers in the path from the remote system to the pinging host.
· Set it to some other value. Some machines use the same value for ICMP packets that they use for TCP packets, for example either 30
or 60. Others may use completely wild values.
The seed of dream has been sown, and sweat is its growing power.