ICMP协议和ICMP重定向详解

 
 
ICMP协议
 
internet消息控制协议(ICMP)指定了多种消息类型,这些消息的共同目的就是管理网络,详见 RFC792。ICMP的消息可以分为错误消息、请求消息和响应消失。ICMP数据包格式如图所示1-1。数据包可以通过类型来标识,许多数据包类型都有多个指定的类型,可以用代码字段来标识它们。表1-1列出来多种ICMP的数据包类型和代码,详见 RFC1700。
 
ICMP协议和ICMP重定向详解_第1张图片
图1-1 ICMP数据包格式
表1-1 ICMP数据包类型字段和代码字段
 
 
类型
代码
名称
0
0
回应应答
3
 
 
 
 
目的地不可达
0
网络不可达
1
主机不可达
2
协议不可达
3
端口不可达
4
需要分段和不需要分段标记置位
5
源路由失败
6
目的网络未知
7
目的主机未知
8
源主机被隔离
9
与目的网络的通信被禁止
10
目的主机的通信被禁止
11
对请求的服务类型,目的网络不可达
12
对请求的服务类型,目的主机不可达
 
4
0
源抑制(source quench)
5
 
重定向
0
为网络(子网)重定向数据报
1
为主机重定向数据报
 
2
为网络和服务类型重定向数据报
 
3
为主机和服务类型重定向数据报
6
0
选择主机地址
8
0
回应
9
0
路由器通告
10
0
路由器选择
11
 
超时
0
传输中超出TTL
1
超出分段重组时间
12
 
参数问题
0
指定错误的指针
1
缺少需要的选项
2
错误长度
13
0
时间戳
14
0
时间戳回复
15
0
信息请求(废弃)
16
0
信息回复(废弃)
17
0
地址掩码请求(即将废弃)
18
0
地址掩码回复(即将废弃)
30
-
路由跟踪
通过实验进行详细分析ICMP协议,拓扑图1-2 ICMP实验,通过抓包进行查看ICMP消息——Echo请求和Echo回复,它们常用在ping命令的功能中,ping命令基于ICMP协议。
 
实验拓扑图:
 
ICMP协议和ICMP重定向详解_第2张图片
 
通过Wireshark抓包查看,viOS1访问(ping)viOS2的路由,可以通过数据包查看到ICMP协议中的type、code、checksums和可变字段(取决于ICMP的类型)。如图所示1-3、1-4,对应的类型、代码详细参考表1-1。
ICMP协议和ICMP重定向详解_第3张图片
图1-3 ICMP_request
 
ICMP协议和ICMP重定向详解_第4张图片
图1-4 ICMP_reply
大部分ICMP类型都与路由选择功能有关,但是有2个类型特别重要:
  • 路由器通告(Router Advertisement)和路由器选择(Router Selection)——分别是类型9和类型10,它们用于ICMP路由器发现协议(IRDP)。IRDP协议用于某些操作系统发现本地的路由器。
  • 重定向(Redirection)——是ICMP的类型5,被路由器用于通知主机去往指定目标的网关,是数据链路上的另一台路由器。
 
ICMP 重定向
 
通过ICMP 重定向实验,掌握ICMP重定向原理,拓扑图如下1-5 ICMP重定向。
ICMP协议和ICMP重定向详解_第5张图片
图1-5 ICMP重定向
 
R1的配置如下:
R1(config)#ip route 3.3.3.0 255.255.255.0 172.16.1.3
R2的配置如下:
R2(config)#ip route 0.0.0.0 0.0.0.0 172.16.1.1
 
R2的网关为R1,R1本身又有静态路由到3.3.3.3,下一跳为R3,注意这是个MA网络,三个接口都是同网段的,这个很关键,R2将去往3.3.3.3时,将数据送到网关172.16.1.1,这时R1经过路由表查找后,发现数据的下一跳是与本地接口同一个网段的1.3(R3)比自己距离目标更近,因此给源地址也就是R2发送一个ICMP重定向消息(需要在R1上开启 IP redirects),告诉R2去172.16.1.3为更优的下一跳。
 
在R2上开启debug IP icmp,现在R2去ping 3.3.3.3:
R2#debug ip icmp
R2#ping 3.3.3.3
*Feb  3 10:15:00.329: ICMP: redirect rcvd from 172.16.1.1- for 3.3.3.3 use gw 172.16.1.3.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 4/4/6 ms
*Feb  3 10:15:02.326: ICMP: redirect rcvd from 172.16.1.1- for 3.3.3.3 use gw 172.16.1.3
*Feb  3 10:15:02.329: ICMP: echo reply rcvd, src 3.3.3.3, dst 172.16.1.2, topology BASE, dscp 0 topoid 0
*Feb  3 10:15:02.334: ICMP: echo reply rcvd, src 3.3.3.3, dst 172.16.1.2, topology BASE, dscp 0 topoid 0
*Feb  3 10:15:02.339: ICMP: echo reply rcvd, src 3.3.3.3, dst 172.16.1.2, topology BASE, dscp 0 topoid 0
*Feb  3 10:15:02.344: ICMP: echo reply rcvd, src 3.3.3.3, dst 172.16.1.2, topology BASE, dscp 0 topoid 0
 
查看抓包信息:
ICMP协议和ICMP重定向详解_第6张图片
 
这就是R1给R2发送的ICMP重定向消息,注意里头的Ggateway address字段,填写的就是比自己距离目的地更近的下一跳IP。
如果要关闭ICMP重定向,需在接口上,使用no ip redirects  。请注意ICMP重定向的发送条件,同时注意,R2上的这条默认路由,如果配置成关联出接口的方式,那么就无法观察到重定向的现象了,就是代理ARP。
 
R2(config)#ip route 0.0.0.0 0.0.0.0 GigabitEthernet0/0
 
ICMP协议和ICMP重定向详解_第7张图片
 
 
 
 
 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

你可能感兴趣的:(CCNA-CCIE,ICMP,ICMP重定向)