您的位置:首页 > 职场人生

关于ping你了解多少

2010-12-13 17:38 337 查看
我们在平时的处理网络故障中,可能或多或少都会用到ping这个命令,但可多人都只是简单了解ping一个ip地址看看通还是没有通,至于为什么不同及其返回的信息则没有做深入的探究,那么我们今天就好好说下。

提到ping就不能不说起ICMP协议,ICMP全称是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。ICMP协议是一种面向连接的协议,用于传输出错报告控制信息。它是TCP/IP协议族的一个子协议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。ICMP提供一致易懂的出错报告信息。发送的出错报文返回到发送原数据的设备,因为只有发送设备才是出错报文的逻辑接受者。发送设备随后可根据ICMP报文确定发生错误的类型,并确定如何才能更好地重发失败的数据报。但是ICMP唯一的功能是报告问题而不是纠正错误,纠正错误的任务由发送方完成。 icmp是一种报告错误而不是纠正错误理解只一点很重要。下面我们看下icmp类型









我们主要说的是echo request 和echo reply 这两个信息,我们在ping一个ip地址时首先我们的主机会发送一个echo request 报文,在我们的目标主机收到请求后会发送一个echo reply 的报文,只有这两个报文都通了也就是说到达各自的主机时,我们才可以ping通对方。关于类型3目标地址不可达,我们在我们的局域网上ping一个不存在的ip地址时,我们的主机会首先发送一个echo request 报文 ,但由于网络中不存在那个ping的ip地址也就没有ip响应echo reply 报文,这是我们的主机就会受到一个目标地址不可达的信息。类型5时关于路由重定向的,我们举个例子,一台主机连接2个路由到外网,假如我们的主机默认网关指向r1,我们的主机流量会通过r1到达外网,现在我们要访问一个192.0.23.5 这个主机web服务器时,我们的主机会首先到达网关路由r1这是路由r1发现到达192.0.23.5这个web服务器路由r2是最佳路径,这是路由r1会发送一个重定向报文,主机在受到报文后就会走r2这个路径到达192.0.23.5web服务器。有一点强调的是重定向只针对源,不针对中间路由。

现在该说说我们的ping了,我们发现有时候我们在ping一个地址时,有时时目标地址不可达有时候则是timeout也就是超时了,那么这两个之间有什么区别?1.首先我们说超时的问题,有超时说明对方无法接受发送过来的数据。当然这种情况下,很可能就是网络出现了故障,但并不能就因此而确定网络一定不通。因为它还有可能是其它原因造成的。原因有以下几点:1. 主机不在线 2.防火墙拦截(中途防火墙) 3.IP安全策略限制(本地防火墙) 4.网关设置错误 这种情况主要出现在Ping外部网络地址时才出现。因为当网关设置错误时,Ping发出的数据包无法经网关进行转发。因此需要检查本机的网关设置以及远程网关的配置是否正确。2. 出现“Destination Host Unreachable”错误信息时表示对方主机不存在或者没有跟对方建立连接。看起来好像与“Request Timed Out”差不多,但两者却有关本质的区别。如果Ping命令所发出的数据包经过路由器,并经路由表到达目标的路由,但是因为其它原因(例如防火墙拦截等)导致不可达,那么就是“Request Timed Out”的提示了;相反如果路由表中没有到达目标的路由信息,那么就会出现“Destination Host Unreachable”。3.Unknown host 这样的原因一般是DNS无法解析的问题。

下面我们在说ping和trace 不同,我们先回顾下ping原理 :发送的是一个echo request包,类型为 8 0,当被ping者接到相关icmp包的时候,根据实际情况,逻辑是,就发回 reply 0 0,逻辑否,则根据具体情况发出一些其他的信息,总结起来的说,是看目的是否能及时的把icmp reply包送回到源,一当路径上的某个节点把reply包给deny掉了,就肯定ping不通了.而trace 理解为hop by hop的ping,但这个ping和上面讲的ping不一样,这个ping和我们的ping命令不同,traceroute包发出去后,途经的每个站点都会发回一个 类型代码为11 0的icmp 包回去,到了终点,才回发送一个代码为3 3的icmp包回到源.

我们在来看下2者在debug 中的区别

ping :Sending 5, 100-byte ICMP Echos to 192.168.100.1, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 36/51/68 ms

R4(config)#

*Mar 1 00:03:20.579: IP: tableid=0, s=172.16.14.2 (local), d=192.168.100.1 (Serial1/0), routed via FIB

*Mar 1 00:03:20.583: IP: s=172.16.14.2 (local), d=192.168.100.1 (Serial1/0), len 100, sending

*Mar 1 00:03:20.587: ICMP type=8, code=0

*Mar 1 00:03:20.639: IP: tableid=0, s=192.168.100.1 (Serial1/0), d=172.16.14.2 (Serial1/0), routed via RIB

*Mar 1 00:03:20.643: IP: s=192.168.100.1 (Serial1/0), d=172.16.14.2 (Serial1/0), len 100, rcvd 3

*Mar 1 00:03:20.647: ICMP type=0, code=0

我们可以看出我们的源主机首先发送了一个request的报文IICMP type=8, code=0, 目的主机回了个relay报文 ICMP type=0, code=0 结果ping通了

他不通的啥样那 我们在看下

R4(config)#do ping 192.168.100.2

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.100.2, timeout is 2 seconds:

*Mar 1 00:25:15.735: IP: tableid=0, s=172.16.14.2 (local), d=192.168.100.2 (Serial1/0), routed via FIB

*Mar 1 00:25:15.735: IP: s=172.16.14.2 (local), d=192.168.100.2 (Serial1/0), len 100, sending

*Mar 1 00:25:15.735: ICMP type=8, code=0.:没有回复relay的报文ping不通

R4(config)#do tracer 192.168.100.2

Type escape sequence to abort.

Tracing the route to

*Mar 1 00:47:11.567: IP: tableid=0, s=172.16.14.2 (local), d=192.168.100.2 (Serial1/0), routed via FIB

*Mar 1 00:47:11.571: IP: s=172.16.14.2 (local), d=192.168.100.2 (Serial1/0), len 28, sending

*Mar 1 00:47:11.571: UDP src=49234, dst=33434

*Mar 1 00:47:11.599: IP: tableid=0, s=172.16.14.1 (Serial1/0), d=172.16.14.2 (Serial1/0), routed via RIB

*Mar 1 00:47:11.603: IP: s=172.16.14.1 (Serial1/0), d=172.16.14.2 (Serial1/0), len 56, rcvd 3

*Mar 1 00:47:11.607: ICMP type=11, code=0

*Mar 1 00:47:20.643: IP: tableid=0, s=172.16.14.2 (local), d=192.168.100.2 (Serial1/0), routed via FIB

*Mar 1 00:47:20.643: IP: s=172.16.14.2 (local), d=192.168.100.2 (Serial1/0), len 28, sending

*Mar 1 00:47:20.647: UDP src=49235, dst=33435

*Mar 1 00:47:20.707: IP: tableid=0, s=172.16.14.1 (Serial1/0), d=172.16.14.2 (Serial1/0), routed via RIB

*Mar 1 00:47:20.711: IP: s=172.16.14.1 (Serial1/0), d=172.16.14.2 (Serial1/0), len 56, rcvd 3

*Mar 1 00:47:20.715: ICMP type=11, code=0

*Mar 1 00:47:20.719: IP: tableid=0, s=172.16.14.2 (local), d=192.168.100.2 (Serial1/0), routed via FIB

*Mar 1 00:47:20.723: IP: s=172.16.14.2 (local), d=192.168.100.2 (Serial1/0), len 28, sending

*Mar 1 00:47:20.723: UDP src=49236, dst=33436

*Mar 1 00:47:20.767: IP: tableid=0, s=172.16.14.1 (Serial1/0), d=172.16.14.2 (Serial1/0), routed via RIB

*Mar 1 00:47:20.771: IP: s=172.16.14.1 (Serial1/0), d=172.16.14.2 (Serial1/0), len 56, rcvd 3

*Mar 1 00:47:20.775: ICMP type=11, code=0

*Mar 1 00:47:20.783: IP: tableid=0, s=172.16.14.2 (local), d=192.168.100.2 (Serial1/0), routed via FIB

*Mar 1 00:47:20.787: IP: s=172.16.14.2 (local), d=192.168.100.2 (Serial1/0), len 28, sending

*Mar 1 00:47:20.791: UDP src=49237, dst=33437

*Mar 1 00:47:20.867: IP: tableid=0, s=172.16.123.2 (Serial1/0), d=172.16.14.2 (Serial1/0), routed via RIB

*Mar 1 00:47:20.871: IP: s=172.16.123.2 (Serial1/0), d=172.16.14.2 (Serial1/0), len 56, rcvd 3

*Mar 1 00:47:20.875: ICMP type=3, code=3

*Mar 1 00:47:26.903: IP: s=192.168.100.4 (Loopback0), d=255.255.255.255, len 71, unroutable

*Mar 1 00:47:26.903: UDP src=57768, dst=53172.16.123.2

*Mar 1 00:47:29.907: IP: tableid=0, s=172.16.14.2 (local), d=192.168.100.2 (Serial1/0), routed via FIB

*Mar 1 00:47:29.907: IP: s=172.16.14.2 (local), d=192.168.100.2 (Serial1/0), len 28, sending

*Mar 1 00:47:29.911: UDP src=49238, dst=33438

*Mar 1 00:47:29.987: IP: tableid=0, s=172.16.123.2 (Serial1/0), d=172.16.14.2 (Serial1/0), routed via RIB

*Mar 1 00:47:29.991: IP: s=172.16.123.2 (Serial1/0), d=172.16.14.2 (Serial1/0), len 56, rcvd 3

*Mar 1 00:47:29.995: ICMP type=3, code=3

发现trace时hop next hop 的每经过一个路由发送回来一个回复报文。

 补充点:·ping 127.0.0.1

  这个Ping命令被送到本地计算机的IP软件,该命令永不退出该计算机。如果没有做到这一点,就表示TCP/IP的安装或运行存在某些最基本的问题。

  ·ping 本机IP

  这个命令被送到我们计算机所配置的IP地址,我们的计算机始终都应该对该Ping命令作出应答,如果没有,则表示本地配置或安装存在问题。出现此问题时,局域网用户请断开网络电缆,然后重新发送该命令。如果网线断开后本命令正确,则表示另一台计算机可能配置了相同的IP地址。

·ping 局域网内其他IP

这个命令应该离开我们的计算机,经过网卡及网络电缆到达其他计算机,再返回。收到回送应答表明本地网络中的网卡和载体运行正确。但如果收到0个回送应答,那么表示子网掩码(进行子网分割时,将IP地址的网络部分与主机部分分开的代码)不正确或网卡配置错误或电缆系统有问题。

·ping 网关IP

这个命令如果应答正确,表示局域网中的网关路由器正在运行并能够作出应答。

·ping 远程IP

如果收到4个应答,表示成功的使用了缺省网关。对于拨号上网用户则表示能够成功的访问Internet(但不排除ISP的DNS会有问题)。

·ping localhost

localhost是个作系统的网络保留名,它是127.0.0.1的别名,每台计算机都应该能够将该名字转换成该地址。如果没有做到这一带内,则表示主机文件(/Windows/host)中存在问题。

ok 结束!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  职场 休闲 ping icmp