ICMP协议/报文类型/ICMP重定向

IP协议是一种不可靠的协议,无法进行差错控制。但IP协议可以借助其他协议来实现这一功能,如ICMP。
  
  ICMP(Internet Control Messages Protocol, 网间控制报文协议)允许主机或路由器报告差错情况和提供有关异常情况的报告。
一般来说,ICMP报文提供针对网络层的错误诊断、拥塞控制、路径控制和查询服务四项大的功能。如,当一个分组无法到达目的站点或TTL超时后,路由器就会丢弃此分组,并向源站点返回一个目的站点不可到达的ICMP报文。
  
   2 ICMP报文类型
    
  ICMP报文大体可以分为两种类型,即ICMP差错报文和ICMP询问报文。但细分又可分为很多类型,如表1所示。 
  ICMP报文类型
在使用中,ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去。  
在下面的图中,我们将看到ICMP报文是如何报告IP数据报文差错或者异常情况的。
下图中上半部分是icmp的协议格式,表明如果一个ip报文发到目的主机,并且发送有错误,比如UDP目的端口未打开,则目的主机发送一个ICMP差错报告报文返回给源,其中的ICMP数据部分,将是前面的ip报文的ip header。
图中下半部分就很清楚的表明了这点:左侧的报文是通过一个udp发包程序造出来的,发到目的主机的800端口,而这个端口本身并未打开,于是目的主机发送了右侧图中的ICMP报文,其中我们能清晰地看到data部分正是左侧报文的ip头部。

当然,ping命令发出的icmp报文,data部分是无意义的,完全相当于填充内容
3 ICMP应用分析-ICMP重定向
  
  ICMP虽然不是路由协议,但是有时它也可以指导数据包的流向(使数据流向正确的网关)。ICMP协议通过ICMP重定向数据包(类型5、代码0:网络重定向)达到这个目的。
ICMP重定向

  如图6所示,主机PC要ping路由器R2的loopback 0地址:192.168.3.1,主机将判断出目标属于不同的网段,因此它要将ICMP请求包发往自己的默认网关192.168.1.253(路由器R1 的E0接口)。但是,这之前主机PC首先必须发送ARP请求,请求路由器R1的E0(192.168.1.253)的MAC地址。
  
  当路由器R1收到此ARP请求包后,它首先用ARP应答包回答主机PC的ARP请求(通知主机PC:路由器R1自己的E0接口的MAC地址)。然后,它(路由器R1)将此ICMP请求转发到路由器R2的E0接口:192.168.1.254(要求路由器R1正确配置了到网络 192.168.3.0/24的路由)。此外,路由器R1还要发送一个ICMP重定向消息给主机PC,通知主机PC对于主机PC请求的地址的网关是: 192.168.1.254。
  
  路由器R2此时会发送一个ARP请求消息请求主机PC的MAC地址,而主机PC会发送ARP应答消息给路由器R2。最后路由器R2通过获得的主机PC的MAC地址信息,将ICMP应答消息发送给主机PC。
  
  ICMP重定向包的内容如图1、图2所示。注意图1 ICMP包头中的Type和Code字段的值和含义。
图1  ICMP重定向包
图2  ICMP重定向包-续

  如果还有后续的ICMP请求包,则除了ARP消息,所有的事件序列和上面的叙述相同。如图3所示。
原文地址 [url]http://hi.baidu.com/wenjunjie/blog/item/094c36c765efb3dcd0006032.html[/url]

你可能感兴趣的:(ios,职场,休闲,CCIE,Feture)