一、ping概述
ping (Packet Internet Groper):因特网包探索器,用于测试网络连通性的程序。
ping是用来检查网络是否通畅或者网络连接速度的命令。 如果ping一个地址是通的,那么基本可以排除物理层和数据链路层的故障。ping命令可以对一个网络地址发送测试数据包,看该网络地址是否有响应并统计响应时间,以此测试网络。ping命令用到的是ICMP协议。
ping的原理就是向指定的网络地址发送一定长度的数据包,按照约定,若指定网络地址存在的话,会返回同样大小的数据包,当然,若在特定时间内没有返回,就是“超时”,会被认为指定的网络地址不存在。
二、ping案例
ping这个命令除了可以检查网络的连通和检测故障以外,还可以利用它的一些返回数据,来估算你跟某台主机之间的速度是多少字节每秒。
比如我们ping百度,会有如下信息:
来自180.101.50.188 的回复:表示百度的IP地址是180.101.50.188;
字节 = 32:表示ICMP报文中有32个字节的测试数据;
时间 = 58ms:表示数据包的往返时间;
TTL = 51:表示数据包在被丢弃前最多能够经过的路由器个数还剩51个(每经过一跳路由器此值减一);TTL值也侧面代表数据包的生存时间,TTL值越大,说明应答时间越快经过的路由器数量越少。
已发送 = 4:表示共发送4个秒包;
已接收 = 4:表示收到4个回应包;
丢失 = 0:表示丢弃了多少个包;
最短、最长、平均:表示数据包往返的时间分别是多少;
在图上来看,数据包来回平均只用了36毫秒时间,lost丢失 =0 即丢包数为0,网络状态良好;
三、ping一般步骤
连通问题是由许多原因引起的,如本地配置错误、远程主机配置错误、硬件故障等。
使用ping检查连通性有五个步骤:
步骤1、观察本地IP配置:使用 ipconfig /all 观察本地网络设置是否正确。
步骤2、Ping 127.0.0.1:127.0.0.1是回送地址,Ping回送地址的目的是为了检查本地的TCP/IP协议有没有设置好。
步骤3、Ping本机IP地址:这样是为了检查本机的IP地址是否设置有误。
步骤4、Ping本网的网关或本局域网内的IP地址:这样的是为了检查硬件设备是否有问题,也可以检查本机与本地网络连接是否正常。
步骤5、 Ping远程IP地址:这主要是检查本网或本机与外部的连接是否正常。
四、ping格式
ping 命令格式通常下面三种:
ping 127.0.0.1//ping + IP地址 ping www.baidu.com //ping + 域名 ping DESKTOP-A1HNO2Q//ping + 主机名 |
但是在使用的时候经常会带有一些参数,例如:
ping -n 7 -a -l 300 -f 127.0.0.1 //注意:先写参数后写IP。 // 意思是ping 127.0.0.1也就是本机,参数-n 7是一共发7个包,-a 是分析主机名称,-l 300 是规定每个包大小为300字节,-f 是每个包不拆分。
|
五、ping参数
ping的参数有很多,下面就分为常用和不常用两类。
ping [-t] [-a] [-n count] [-l size] [-f] [-S srcaddr] [-w timeout] [-4]//常用参数 [-i TTL] [-v TOS] [-r count] [-s count] [[-j host-list] | [-k host-list]] [-R] [-6] target_name //不常用参数 //注意:上面的[]中括号起到分隔参数的作用。 |
常用参数
-t :ping 指定的主机直到停止。若要停止,请键入 Ctrl+C;若要查看统计信息并继续操作,请键入 Ctrl+Break(pause)。
-a :将IP地址解析为主机名。通过这个方法可以通过IP地址知道对方计算机的名称。
有时候无法ping通,但是可以得知对方主机名称,这样就知道是对方防火墙设置了ICMP过滤。这个方法也是通过IP找主机名的方法。
-n count :要发送的回显请求数。通过此命令可以增加或减少发送数据包的数量。
发送 count 指定的 ECHO 数据包数。默认值为 4,也就是正常ping的时候都是发送四个数据包,返回对应四个数据包。
-l size :发送缓冲区大小。通过此参数调整每个数据包的大小。
发送包含由 size 指定的数据量的 ECHO 数据包。默认每个数据包大小为 32 字节,最大值为 65527字节。
-f :在数据包中设置“不分段”标记(仅适用于 IPv4)。可以在数据包中发送"不要分段"标志。数据包就不会被路由上的网关分段。
因为数据包过大就会被分成多个小的数据包发送,这样就无法测试出网络的最佳性能。
-S srcaddr:要使用的源地址。注意,这里是大写的S,这个参数可以指定用电脑中的哪个IP地址ping目标IP地址,因为我们电脑中一般有多个网卡,每个网卡又有自己的IP地址。
-w timeout :等待每次回复的超时时间(毫秒)。指定超时时间。单位为毫秒。默认值为4000毫秒。
-4:强制使用 IPv4。在ping主机名的时候默认显示的是IPV6的地址,可以用这个参数来显示IPV4的地址。
不常用参数
-i TTL :生存时间(Time To Live)。
将"生存时间"字段设置为 ttl 指定的值。有效范围从 1 到 255。也就是还剩多少路由器跳跃数。
-v TOS :服务类型(仅适用于 IPv4。该设置已被弃用,对 IP 标头中的服务类型字段没有任何影响)。
将"服务类型"字段设置为 tos 指定的值。
-r count :记录计数跃点的路由(仅适用于 IPv4)。
在"记录路由"字段中记录传出和返回数据包的路由。count取值范围1-9。 即可以指定最少 1 台,最多 9 台计算机。
-s count :计数跃点的时间戳(仅适用于 IPv4)。
要使用的源地址。count取值范围1-4。
-j host-list :与主机列表一起使用的松散源路由(仅适用于 IPv4)。
利用 host-list 指定的计算机列表路由数据包。连续计算机可以被中间网关分隔(路由稀疏源)IP 允许的最大数量为 9。
-k host-list :与主机列表一起使用的严格源路由(仅适用于 IPv4)。
利用 host-list 指定的计算机列表路由数据包。连续计算机不能被中间网关分隔(路由严格源)IP 允许的最大数量为 9。
-R :同样使用路由标头测试反向路由(仅适用于 IPv6)。根据 RFC 5095,已弃用此路由标头。如果使用此标头,某些系统可能丢弃回显请求。
-c compartment:路由隔离舱标识符。
-p:Ping Hyper-V 网络虚拟化提供程序地址。
-6:强制使用 IPv6。
六、Ping返回的错误信息
6.1、请求超时(Request timed out)
这是经常会碰到的提示信息,有下面几种情况:
对方主机不存在或关机。
与对方不在同一网段内(路由除外):在不通过路由的情况下,无法ping通不同网段的主机。通过路由能找到对方的情况下也能够ping通。
对方存在,但设置了ICMP数据包过滤(比如防火墙设置):怎样知道对方是存在,还是不存在呢,可以用带参数 -a 的Ping命令探测对方,如果能得到对方的计算机名称,则说明对方是存在的,是有防火墙设置,如果得不到,多半是对方不存在或关机,或不在同一网段内。
本机多张网卡设置冲突:如果一台主机有两个网卡,两个网卡的IP处于一个网段,在IP层协议看来,这台主机就有两个不同的接口处于同一网段内。当从这台主机ping其他的机器时,会存在这样的问题:本机不知道数据包要从哪个接口发出,因为两个网络接口都连接在同一网段。从其他主机ping这台主机时,请求包从特定的网卡来,ICMP只须简单地将目的、源地址互换,并更改一些标志即可,ICMP应答包能顺利发出,其他主机也就能成功ping通这台机器了。
6.2、目标主机不可达(Destination host Unreachable)
对方与自己不在同一网段内,而自己又未设置默认的路由,就会出现“目标主机不可达”。或者网线出了故障。
6.3、“目标主机不可达”和 “请求超时”的区别
如果所经过的路由器的路由表中具有到达目标的路由,而目标因为其他原因不可到达,这时候会出现“请求超时”,如果路由表中连到达目标的路由都没有,那就会出现“目标主机不可达”。
6.4、错误的IP地址(Bad IP address)
这个信息表示您可能没有连接到DNS服务器,所以无法解析这个IP地址,也可能是IP地址不存在。
6.5、Source quench received
这个信息比较特殊,它出现的机率很少。它表示对方或途中的服务器繁忙无法回应。
6.6、不知名主机(Unknown host)
这种出错信息的意思是,该远程主机的名字不能被域名服务器(DNS)转换成IP地址。故障原因可能是域名服务器有故障,或者其名字不正确,或者网络管理员的系统与远程主机之间的通信线路有故障。
6.7、无响应(No answer)
这种故障说明本地系统有一条通向中心主机的路由,但却接收不到它发给该中心主机的任何信息。故障原因可能是下列之一:
中心主机没有工作;
本地或中心主机网络配置不正确;
本地或中心的路由器没有工作;
通信线路有故障;
中心主机存在路由选择问题。
6.8、no rout to host
网卡工作不正常。
6.9、transmit failed,error code
网卡驱动不正常。
6.10、unknown host name
DNS配置不正确。