有关ping:命令详解、过程、结果分析

文章目录
[隐藏]

ping的作用:通过ICMP回显数据包发送到远端设备并侦听回显数据包来验证与一台或多台远端设备的连接性。该命令只在安装了TCP/IP协议后才可以使用。

关于ping的协议:ping包属于ICMP协议,ICMP协议是没有端口号的,所以在防火墙设置的时候不像其他的程序或协议有对应的端口号可以设置。

在哪里使用ping:Windows系统的话,开始-运行-cmd,在命令行窗口中就可以使用。Linux系统中我不知道怎么用,请Google。

ping命令详解

用法:

ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS] [-r count] [-s count] [[-j host-list] | [-k host-list]] [-w timeout] target_name

在CMD窗口输入ping /?,回车,也可看到ping命令帮助,如上。

参数详解:

-t:ping 指定的计算机直到手动中断。ctrl+c中断ping。中断普通的ping过程也是ctrl+c.

-a:将地址解析为计算机名。例:c:\>ping -a 127.0.0.1

pinging china-hacker [127.0.0.1] with 32 bytes of data:(china-hacker就是他的计算机名)

reply from 127.0.0.1: bytes=32 time<10ms ttl=128
reply from 127.0.0.1: bytes=32 time<10ms ttl=128
reply from 127.0.0.1: bytes=32 time<10ms ttl=128
reply from 127.0.0.1: bytes=32 time<10ms ttl=128

ping statistics for 127.0.0.1:packets: sent = 4, received = 4, lost = 0 (0% loss),approximate round trip times in milli-seconds:minimum = 0ms, maximum = 0ms, average = 0ms

-n count:发送 count 指定的 echo 数据包数。默认值为 4。

-l size:发送包含由 size 指定的数据量的 echo 数据包。默认为 32 字节;最大值是 65,527。

-f:在数据包中发送“不要分段”标志。数据包就不会被路由上的网关分段。

-i TTL:将“生存时间”字段设置为 ttl 指定的值。

-v TOS:将“服务类型”字段设置为 tos 指定的值。

-r count:在“记录路由”字段中记录传出和返回数据包的路由。count 可以指定最少 1 台,最多 9 台计算机。

-s count:指定 count 指定的跃点数的时间戳。

-j host-list:利用 host-list 指定的计算机列表路由数据包。连续计算机可以被中间网关分隔(路由稀疏源)ip 允许的最大数量为 9。

-k host-list:利用 host-list 指定的计算机列表路由数据包。连续计算机不能被中间网关分隔(路由严格源)ip 允许的最大数量为 9。

-w timeout:指定超时间隔,单位为毫秒。

target-name:指定要 ping 的远程计算机。

ping的后台执行过程

就以这样一个网络作为例子:假设有A、B、C、D四台机器,一台路由RA,子网掩码均为255.255.255.0,默认网关是192.168.0.1。

1.同一网段
我们来看一下在A主机上执行“Ping 192.168.0.5”后,都发生了些什么。首先,Ping会通知系统建立一个固定格式的ICMP请求数据包,然后由ICMP协议打包这个数据包和地址“192.168.0.5”转交给IP层协议(一组后台运行的进程,与ICMP类似),IP层协议将以地址“192.168.0.5”作为目的地址,本机IP地址作为源地址,加上一些其他的控制信息,构建一个IP数据包,并想办法得到192.168.0.5的MAC地址(物理地址,这是数据链路层协议构建数据链路层的传输单元——帧所必需的),以便交给数据链路层构建一个数据帧。关键就在这里,IP层协议通过机器B的IP地址和自己的子网掩码,发现它跟自己属同一网络,就直接在本网络内查找这台机器的MAC,如果以前两机有过通信,在A机的ARP缓存表应该有B机IP与其MAC的映射关系,如果没有,就发一个ARP请求广播,得到B机的MAC,一并交给数据链路层。后者构建一个数据帧,目的地址是IP层传过来的物理地址,源地址则是本机的物理地址,还要附加上一些控制信息,依据以太网的介质访问规则,将它们传送出去。
主机B收到这个数据帧后,先检查它的目的地址,并和本机的物理地址对比,如符合,则接收;否则丢弃。接收后检查该数据帧,将IP数据包从帧中提取出来,交给本机的IP层协议。同样,IP层检查后,将有用的信息提取后交给ICMP协议,后者处理后,马上构建一个 ICMP应答包,发送给主机A,其过程和主机A发送ICMP请求包到主机B一模一样。

2.不同网段
在主机A上执行 “Ping 192.168.1.4”后,开始跟上面一样,到了怎样得到MAC地址时,IP协议通过计算发现D机与自己不在同一网段内,就直接将交由路由处理,也就是将路由的MAC取过来,至于怎样得到路由的MAC,跟上面一样,先在ARP缓存表找,找不到可以利用广播。路由得到这个数据帧后,再跟主机D进行联系,如果找不到,就向主机A返回一个超时的信息。

ping结果分析

ping的结果分两种,正常的结果,表明连接性良好,如下:

Pinging 202.105.136.105 with 32 bytes of data:

Reply from 202.105.136.105: bytes=32 time=590ms TTL=114
Reply from 202.105.136.105: bytes=32 time=590ms TTL=114
Reply from 202.105.136.105: bytes=32 time=590ms TTL=114
Reply from 202.105.136.105: bytes=32 time=601ms TTL=114

Ping statistics for 202.105.136.105:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 590ms, Maximum = 601ms, Average = 593ms

还有就是不正常的结果,也就是说设备之间的连接性不好。这些结果有:

  1. Request Timed Out
  2. Destination Net Unreachable
  3. Bad IP address
  4. Source quench received
  5. Unknown host
  6. No answer
  7. no rout to host
  8. transmit failed,error code:10043
  9. unknown host name

一般我们常遇到的是前四种情况。

 参考资料

  1. ping命令后台执行过程及返回信息详解:http://article.wxiu.com/wxjs/network/200902/06-4764.html 这篇文章说的比较详细
  2. ping命令详解:http://blog.csdn.net/mathewsking/archive/2009/01/06/3721337.aspx 这篇文章中说到了如何利用ping来测试网络的连通性。
  3. ping结果中的TTL是什么意思:http://www.hinn.cn/2007/05/ping_ttl.html

分类:Network

标签:

对本文发表评论





1 + 6 = ?

注意:
1、请勿单纯发表顶啊、打酱油之类无任何意义的评论,否则将被视为spam!谢谢合作!
2、但欢迎你留下对本文的看法或技术上的任何疑问,我会及时回复你。