ICMP深入理解_第1页
ICMP深入理解_第2页
ICMP深入理解_第3页
ICMP深入理解_第4页
ICMP深入理解_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ICMP称为internet控制协议,主要用于传递IP网络中的差错及其他需要注意的控制信息。RFC 792中描述了ICMP协议:”ICMP是IP不可缺少的部分,所有的IP软件必须实现ICMP协议。”ICMP报文在以下几种情况下发送(RFC 792中提到)ü  当数据报不能到达目的地 ü  当网关已经失去缓存功能 ü  当网关能够引导主机在更短路由上发送 类型:表示ICMP报文类型代码:同类型字段相结合定义详细的ICMP报文数据:根据不通类型和代码,数据域填充相应的内容 类型代码描述00回显应带(Ping应答)3 &

2、#160;目的不可达0网络不可达1主机不可达2协议不可达3端口不可达4需要进行分片但设置了不分片比特5源站选路失败6目的网络不认识7目的主机不认识8源主机被隔离(作废不用了)9目的网络被强制禁止10目的主机被强制禁止11由于服务类型TOS,网络不可达12由于服务类型TOS,主机不可达13由于过滤,通信被强制禁止14主机越权40源端被关闭(基于流控制)5 重定向0对网络重定向1对主机重定向2对服务类型和网络重定向3对服务类型和主机重定向80请求回显(即ping请求)90路由器通告100路由器请求11 超时0传输起见TTL为01在数据报文组装期间TTL为012 参数问

3、题0坏的IP首部(包括各种差错)1缺少必须的选项130时间戳请求140时间戳应答150信息请求160信息应答170地址掩码请求180地址掩码应答   第二节:Ping测试案例Ping命令用于测试目的主机是否可达,该命令发送ICMP回显请求报文给目的主机,并等待返回ICMP回显应答。本节中将使用Ping命令作为诊断工具深入分析ICMP协议。 案例一:请求回显/回显应答 在主机192.168.0.103上运行Ping 192.168.0.101的命令,主机192.168.0.103将会收到从192.168.0.101返回的ICMP回显应答。如下图所示: &#

4、160;通过本地抓包工具分析,我们可以看出从本地发出的ICMP报文是请求回显。  而从返回给本地的ICMP是回显报文:  案例二:请求超时 我们ping一个不存在的地址,显示如下:通过抓包工具的分析,可以看出:主机本地主机的ARP缓存中没有192.168.1.222 MAC地址的记录,所以本地主机首先会向网络广播ARP请求来获得的MAC地址。由于主机并不存在,所以本地主机不可能收到ARP响应。因此在执行完Ping命令后,如果主机本地主机在规定的时间内没有收到的ICMP回显响应,那么将会在命令行界面中显示请求超时。  案例三:

5、MTU探测 MTU探测是探测方与通信方之间不用分片IP数据包就能交流MTU大小的功能,ICMP可以实现MTU探测。以Windows系统为例,首先,探测方向目的主机送IP数据包时,先设置IP首部的分片禁止标志然后再发送。如下图所示,探测方发送大于1500字节的数据包,通信路径上MTU为1000 字节的节点将不允许超过1000字节的数据包通过。此节点尝试将IP数据包分片,但是因为数据包设置为禁止分片,所以不能分片。此节点就将该IP数据包丢弃,并用ICMP报文通知探测方“想分片,但不能分片”,同时也会将MTU=1000的信息告诉探测方。当探测方收到该ICMP 报文后就知道了不分片所能够传送

6、的数据大小,重新发送IP数据包。通过重复以上的步骤,就可以得到路径的MTU值的大小。 Ping命令可以实现MTU探测。选项“-l”指定发送ICMP报文的长度,“-f”设置分片禁止。在此案例中,网关的地址为,首先在网关上设置MTU为800,当主机(外网地址)时,就会收到“数据包需要分片,但是分片禁止”的响应消息。通过wireshark103发送了ICMP响应的数据报,显示目的不可达,需要分片。  案例四:记录路由 Ping命令使用“-R”选项,为我们提供了查看IP记录路由(RR)的机会。它使得Ping命令在发送出去的IP数据包中设置RR选项(该IP数据包包

7、含ICMP回显请求报文)。这样,每个处理该数据包的路由器都把它的IP地址放入选项字段中。当数据包到达目的端时,IP地址清单将会复制到ICMP回显应答的报文中,这样返回途中所经过的路由器地址也会被加入清单中。当收到回显应答时,就会打印出这份IP地址清单。 记录路由的IP地址清单位于IP头中的选项数据中,如下图所示,由于IP头长度的限制,只能记录9个IP地址。 code(1字节),指明IP选项的类型。对于RR选项来说,它的值为7。 len是RR选项总字节长度,在这种情况下为39。 ptr称作指针字段。它是一个基于1的指针,指向存放下一个IP地址的位置。它的最小值为4,指向存放第一个IP地址的位置。

8、随着每个IP地址存入清单,ptr的值分别为8、12、16,最大到36。当记录下9个IP地址后,ptr的值为40,表示清单已满。“-R”选项所支持记录路由长度的范围是19,意味着最多只能记录9个IP地址。下面通过一个案例来分析记录路由是如何工作的。使用Ping命令,并设置“-R”选项为8,表示只记录路由中的前八个IP地址。从下图中可以看出,主机收到一个回显响应的ICMP数据报,IP头中的记录路由选项中包含了路由中的8跳IP地址。通过抓包分析可以看出,当主机收到ICMP回显响应时,在记录路由选项中,8个IP地址已经填充好了,这也是用户在命令行界面中所看到的IP地址清单。  Tr

9、aceroute 在上一节中描述了IP记录路由选项。为什么不使用这个选项而使用Traceroute命令呢?首先,并不是所有的路由器都支持记录路由选项,因此该选项在某些路径上不能使用(Traceroute不需要中间路由器具备任何特殊的或可选的功能)。其次,最主要的原因是IP首部中留给选项的空间有限,在IP首部选项字段中最多只能存放9个IP地址。在原先的ARPANET中这是足够的,但是对于现在的网络来说是远远不够的。Traceroute程序使用ICMP报文和IP首部中的TTL字段(生存周期)。当路由器收到的IP数据包TTL字段是0或1,路由器将该数据包丢弃,并给源主机发ICMP“超时”信

10、息。Traceroute的关键在于包含这份ICMP报文的IP数据包的源地址是该路由器的IP地址。源主机发送TTL字段为1的IP数据包给目的主机,处理此数据包的第一个路由器将TTL值减1,丢弃该数据包,并发回一份超时ICMP报文。这样就得到了该路径中的第一个路由器的地址。然后Traceroute发送TTL值为2的数据包,这样就可以得到第二个路由器的地址。重复这个过程直至到达目的主机。 案例五:traceroute in windows在Windows系统下,使用Tracert命令实现了Traceroute的功能。 抓包分析:   案例六:traceroute在linux Linux系统下,主机并不是直接发送ICMP协议的数据报文,而是发送UDP数据包。那么该如何判断UDP数据包已经到达目的主机了呢?Traceroute命令使用UDP数据包的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论