ping的原理

一、什么是 PING

DOS 命令,一般用于检测网络通与不通 ,也叫时延,其值越大,速度越慢 PING (Packet Internet Grope),因特网包探索器,用于测试网络连接量的程序。Ping 发 送一个 ICMP 回声请求消息给目的地并报告是否收到所希望的 ICMP 回声应答。

它是用来检查网络是否通畅或者网络连接速度的命令。作为一个生活在网络上的管理员或者黑客来说,ping 命令是第一个必须掌握的 DOS 命令,它所利用的原理是这样的:网络上的机器都有唯一确定的 IP 地址,我们给目标 IP 地址发送一个数据包,对方就要返回一个同样大小的数据包, 根据返回的数据包我们可以确定目标主机的存在,可以初步判断目标主机的操作系统等。

Ping 是 Windows 系列自带的一个可执行命令。利用它可以检查网络是否能够连通,用 好它可以很好地帮助我们分析判定网络故障。应用格式:Ping IP 地址。该命令还可以加许多参数使用,具体是键入Ping 按回车即可看到详细说明。ping 指的是端对端连通,通常用来作为可用性的检查, 但是某些病毒木马会强行大量远程执行 ping 命令抢占你的网络资源,导致系统变慢,网速变慢。严禁 ping 入侵作为大多数防火墙的一个基本功能提供给用户进行选择。通常的情况下你如果不用作服务器或者进行网络测试,可以放心的选中它,保护你的电脑。

二、PING的工作流程

我们以下面一个网络为例:有 A、B、C、D 四台机子,一台路由 RA,子网掩码均为 255.255.255.0,默认路由为 192.168.0.1 [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 测试

1.Ping 本机IP

例如本机 IP 地址为:172.168.200.2。则执行命令 Ping 172.168.200.2。如果网卡安装配 置没有问题,则应有类似下列显示:Replay from 172.168.200.2 bytes=32 time<10ms Ping statistics for 172.168.200.2 Packets Sent=4 Received=4 Lost=0 0% loss Approximate round trip times in milli-seconds Minimum=0ms Maxiumu=1ms Average=0ms 如果在 MS-DOS 方式下执行此命令显示内容为:Request timed out,则表明网卡安装或 配置有问题。将网线断开再次执行此命令,如果显示正常,则说明本机使用的 IP 地址可能 与另一台正在使用的机器 IP 地址重复了。如果仍然不正常,则表明本机网卡安装或配置有 问题,需继续检查相关网络配置。

2.Ping 网关 IP

假定网关 IP 为:172.168.6.1,则执行命令 Ping 172.168.6.1。在 MS-DOS 方式下执行此命令,如果显示类似以下信息:Reply from 172.168.6.1 bytes=32 time=9ms TTL=255 Ping statistics for 172.168.6.1 Packets Sent=4 Received=4 Lost=0 Approximate round trip times in milli-seconds Minimum=1ms Maximum=9ms Average=5ms 则表明局域网中的网关路由器正在正常运行。反之,则说明网关有问题。

3.Ping 远程

IP 这一命令可以检测本机能否正常访问 Internet。比如江苏电信运营商的 IP 地址为:202.102.48.141。在 MS-DOS 方式下执行命令:Ping 202.102.48.141,如果屏幕显示:

Reply from 202.102.48.141 bytes=32 time=33ms TTL=252

Reply from 202.102.48.141 bytes=32 time=21ms TTL=252

Reply from 202.102.48.141 bytes=32 time=5ms TTL=252

Reply from 202.102.48.141 bytes=32 time=6ms TTL=252

Ping statistics for 202.102.48.141

Packets Sent=4 Received=4 Lost=0 0% loss

Approximate round trip times in milli-seconds

Minimum=5ms Maximum=33ms Average=16ms

则表明运行正常,能够正常接入互联网。反之,则表明主机文件(windows/host)存在问 题。

对于 Windows 下 ping 命令相信大家已经再熟悉不过了,但是能把 ping 的功能发挥到最大的人却并不是很多,当然我也并不是说我可以让 ping 发挥最大的功能,我也只不过经常 用 ping 这个工具,也总结了一些小经验,现在和大家分享一下。

此参数没有什么其他技巧。

ping 命令的其他技巧:在一般情况下还可以通过 ping 对方让对方返回给你的 TTL 值大小, 粗略的判断目标主机的系统类型是Windows 系列还是 UNIX/Linux 系列,一般情况下Windows 系列的系统返回的 TTL 值在 100-130 之间,UNIX/Linux 系列的系统返回的 TTL 而 值在 240-255 之间,当然 TTL 的值在对方的主机里是可以修改的,Windows 系列的系统可以通过修改注册表以下键值实现:

[HKEY_LOCAL_MACHINE\sys tem\CurrentControlSet\Services\Tcpip\ Parameters]

"DefaultTTL"=dword:ff

255---FF

128---80

64----40

32----20

Ping 是个使用频率极高的网络诊断程序, 用于确定本地主机是否能与另一台主机交换 (发送与接收)数据报。根据返回的信息,你就可以推断 TCP/IP 参数是否设置得正确以及运行是否正常。需要注意的是:成功地与另一台主机进行一次或两次数据报交换并不表示 TCP/IP 配置就是正确的,你必须执行大量的本地主机与远程主机的数据报交换,才能确信 TCP/IP 的正确性。

Ping 的返回信息有"Request Timed Out"、"Destination Net Unreachable"和"Bad IP address"还有"Source quench received"。

(1)"Request Timed Out"这个信息表示对方主机可以到达到 TIME OUT,这种情况通常是为对方拒绝接收你发给它的数据包造成数据包丢失。大多数的原因可能是对方装有防火墙或已下线。

(2)"Destination Net Unreachable"这个信息表示对方主机不存在或者没有跟对方建立连接。这里要说明一下"destination host unreachable"和"time out"的区别,如果所经过的路由器的路由表中具有到达目标的路由,而目标因为其它原因不可到达,这时候会出现"time out", 如果路由表中连到达目标的路由都没有,那就会出现"destination host unreachable"。

(3)"Bad IP address" 这个信息表示你可能没有连接到 DNS 服务器所以无法解析这个IP地址,也可能是IP地址不存在。

(4)"Source quench received"信息比较特殊,它出现的机率很少。它表示对方或中途的服务 器繁忙无法回应。

怎样使用 Ping 这命令来测试网络连通呢?

连通问题是由许多原因引起的,如本地配置错误、远程主机协议失效等,当然还包括设备等造成的故障。

首先我们讲一下使用 Ping 命令的步骤。

使用 Ping 检查连通性有六个步骤:

(1)使用 ipconfig /all 观察本地网络设置是否正确;

(2)Ping 127.0.0.1,127.0.0.1 回送地址 Ping 回送地址是为了检查本地的 TCP/IP 协议有没有设置好;

(3)Ping 本机 IP 地址,这样是为了检查本机的 IP 地址是否设置有误;

(4) Ping 本网网关或本网 IP 地址,这样的是为了检查硬件设备是否有问题,也可以检查本机与本地网络连接是否正常;(在非局域网中这一步骤可以忽略)

(5)Ping 本地 DNS 地址,这样做是为了检查 DNS 是否能够将 IP。

(6)Ping 远程 IP 地址,这主要是检查本网或本机与外部的连接是否正常。

在检查网络连通的过程中可能出现一些错误,这些错误总的来说分为两种最常见。

1. Request Timed Out "request time out"这提示除了在《PING(一)》提到的对方可能装有防火墙或已关机以外,还有就是本机的IP不正确和网关设置错误。

① IP 不正确:IP 不正确主要是 IP 地址设置错误或 IP 地址冲突, 这可以利用 ipconfig /all 这命令来检查。在 WIN2000等更高版本系统下冲突的情况很少发生,因为系统会自动检测在网络中是否有相同的 IP 地 址并提醒你是否设置正确。在 NT 中不但会出现"request time out"这提示而且会出现 "Hardware error"这提示信息比较特殊不要给它的提示所迷惑。

② 网关设置错误:这个错误可能会在第四个步骤出现。网关设置错误主要是网关地址设置不正确或网关没有帮你转发数据,还有就是可能远程网关失效。这里主要是在你 Ping 外部网络地址时出错。错误表现为无法 Ping 外部主机返回信息"Request timeout"。

2. Destination Host Unreachable

当你在开始 PING 网络计算机时如果网络设备出错它返回信息会提示"destination host unreachable"。如果局域网中使用 DHCP 分配 IP 时,而碰巧 DHCP 失效,这时使用 PING 命令就会产生此错误。因为在 DHCP 失效时客户机无法分配到 IP 系统只有自设 IP, 它往往 会设为不同子网的 IP。所以会出现"Destination Host Unreachable"。另外子网掩码设置错 误也会出现这错误。

还有一个比较特殊就是路由返回错误信息, 它一般都会在"Destination Host Unreachable" 前加上 IP 地址说明哪个路由不能到达目标主机。这说明你的机器与外部网络连接没有问题, 但与某台主机连接存在问题。

五、PING 的各类反馈信息 Request timed out

a.对方已关机, 或者网络上根本没有这个地址:比如在上图中主机 A 中 PING 192.168.0.7 , 或者主机 B 关机了,在主机 A 中 PING 192.168.0.5 都会得到超时的信息。

b.对方与自己不在同一网段内,通过路由也无法找到对方,但有时对方确实是存在的,当 然不存在也是返回超时的信息。

c.对方确实存在,但设置了 ICMP 数据包过滤(比如防火墙设置) 怎样知道对方是存在,还是不存在呢,可以用带参数 -a的 Ping 命令探测对方,如果能 得到对方的 NETBIOS 名称,则说明对方是存在的,是有防火墙设置,如果得不到,多半是 对方不存在或关机,或不在同一网段内。

d.错误设置 IP 地址正常情况下,一台主机应该有一个网卡,一个IP地址,或多个网卡,多个IP 地址(这些 地址一定要处于不同的 IP 子网)。但如果一台电脑的“拨号网络适配器”(相当于一块软网 卡)的 TCP/IP 设置中,设置了一个与网卡 IP 地址处于同一子网的 IP 地址,这样,在 IP 层协议看来,这台主机就有两个不同的接口处于同一网段内。当从这台主机 Ping 其他的机 器时,会存在这样的问题:

A.主机不知道将数据包发到哪个网络接口,因为有两个网络接口都连接在同一网段。

B.主机不知道用哪个地址作为数据包的源地址。因此,从这台主机去 Ping 其他机器,IP 层协议会无法处理,超时后,Ping 就会给出一个“超时无应答”的错误信息提示。但从其他 主机 Ping 这台主机时,请求包从特定的网卡来,ICMP 只须简单地将目的、源地址互换, 并更改一些标志即可,ICMP 应答包能顺利发出,其他主机也就能成功 Ping 通这台机器了。

Destination host Unreachable

对方与自己不在同一网段内,而自己又未设置默认的路由,比如上例中 A 机中不设定默 认的路由,运行 Ping 192.168.0.1.4 就会出现“Destination host Unreachable”。

网线出了故障

这里要说明一下“destination host unreachable”和 “time out”的区别,如果所经过的路由 器的路由表中具有到达目标的路由,而目标因为其他原因不可到达,这时候会出现“time out”,如果路由表中连到达目标的路由都没有,那就会出现“destination host unreachable”。

Bad IP address

这个信息表示您可能没有连接到 DNS 服务器,所以无法解析这个 IP 地址,也可能是 IP 地址不存在。

Source quench received 这个信息比较特殊,它出现的机率很少。它表示对方或中途的服务器繁忙无法回应。

Unknown host——不知名主机 这种出错信息的意思是,该远程主机的名字不能被域名服务器(DNS)转换成 IP 地址。故障原因可能是域名服务器有故障, 或者其名字不正确, 或者网络管理员的系统与远程主机 之间的通信线路有故障。

No answer——无响应 这种故障说明本地系统有一条通向中心主机的路由, 但却接收不到它发给该中心主机的任 何信息。故障原因可能是下列之一:中心主机没有工作;本地或中心主机网络配置不正确;本地或中心的路由器没有工作;通信线路有故障;中心主机存在路由选择问题。

Ping 127.0.0.1:127.0.0.1 是本地循环地址

如果本地址无法 Ping 通,则表明本地机 TCP/IP 协议不能正常工作。

no rout to host:网卡工作不正常。

transmit failed,error code:10043 网卡驱动不正常。

unknown host name:DNS 配置不正确。