2016-4-18 ICMPv6协议[RFC2463]--报文详解

简介:

Technorati 标签: IPv6,ICMPv6,CCIE,路由,ICMP差错

概要

--ICMPv6 (Internet Control Message protocol for the IPv6)是IPv6的基础协议之一.定义在RFC2463中.

--用于传递报文转发中产生的信息或者错误.

--ICMPv6定义的报文被广泛的应用在其他协议中.包括:NDP(neighbor discovery protocol, PathMTU路径发现机制,MLD协议[替代IPv4中组播的IGMP协议]等等)

ICMPv6包头是属于上层协议的报头.他一定会处于所有的扩展报头后面.

在指明ICMPv6的报头的时候,基本包头或者是扩展报头中的"Next header=58"[Next-header=0x3a],这样IPv6的基本包头或者扩展报头才能和ICMPv6报头进行关联.

clip_image002

下面的报文,就是一个ICMPv6的报文.

这里面,有一个IPv6的基本包头,在Next-header里面指定的是0x3a.指定的就是ICMPv6的协议报头.

附件是相关的抓包.

clip_image004

ICMPv6type类:

clip_image006

1, 错误类消息(error message),也称为差错报文,最高bit0,也就是ICMPv6 type=[0-127].

clip_image008

NOTES:如果是错误消息的话,那么ICMPv6报头中的type会是在0-127之间.

差错报文:

---1,差错报文(RFC2463)

~~~~目的不可达Destination unreachable (type=1)

Code=0: 没有达到目标的路由

如果在网络中,R1--R2--R3.

R1 ping "R5"的环回口,保证这个"R5"在所有网络中都没有路由存在.

那么R1会把ICMP送向R2这个默认网关,但是R2会给R1回应一个差错报文,code=0.标示没有达到目标的路由.

R1--R2--R3

在R1上面ping 2055::1,这个环回口没有任何路由有这个路由.

 clip_image010

通过抓包来看,R1 ping 2055:1,把ICMPv6报文甩给R2的e0/0 input,结果因为R2收到了以后没有路由信息,就直接R2给R1回应ICMPv6的差错报文.Type=1, code=0,没有路由.

clip_image012

Code=1: 与目标的通信被管理策略禁止

这种情况,一般是在中途链路做了ACL等策略禁止ICMP报文通行.

下面就是一个做了ACL的策略ping包的抓包.

R1---[e0/0]R2---R3

在R2上面的e0/0的input方向应用了一个ACL.禁止R1发送的所有ICMP报文.

下面红色框中就是R2回应R1的一个ICMP差错报文,code=1.与目标的通信被管理策略禁止.   
clip_image014

●Code=2: 未指定

Code=3: 地址不可达

这里先还是要说一下,地址不可达,和code=0,路由不可达..有什么区别.code=3,是说我有Destination的路由,但是地址通不了.Code=0是说完全没有路由.

模拟过程:这里是说,R1--R2---2023::x/64---R3

这里R2和R3相互连接的接口地址分别是:2023::2/64和2023::3/64

但是,在R1上面去ping 2023::10/64这个完全不存在的地址.数据从R1甩到R2以后,R2有路由,但是这个"2023::10/64"是完全不可达的.

模拟拓扑图为:R1---2012::x/64---R2(2023::2/64)-----(2023::3/64)R3

在R1上面ping 2023::10这个不存在的地址.

在R1上面debug的信息如下:

*Apr 18 16:31:24.045: ICMPv6: Sent echo request, Src=2012::1, Dst=2023::10.

*Apr 18 16:31:27.265: ICMPv6: Received Unreachable code 3, Src=2012::2, Dst=2012::1

PS.R2在返回ICMP报文code=3的时候,会有一定的时延,因为R2收到报文以后,因为有路由,所以R2还要花时间进行地址查找,发送NS出去,等待NA回来.如果NA连续不会超时,这个时候R2才会反馈ICMPv6的差错报文.

clip_image016

Code=4: 端口不可达

关于这点,用traceroute 工具即可.

R1---R2---R3

登陆到R1上面traceroute R3的环回口.这个时候会相应端口不可达.

R1: traceroute 2033::1

这个时候在R1上面收到ICMP差错报文,code=4的报文.

*Apr 18 17:32:23.110: ICMPv6: Received Time Exceeded, Src=2012::2, Dst=2012::1

*Apr 18 17:32:23.116: ICMPv6: Received Time Exceeded, Src=2012::2, Dst=2012::1

*Apr 18 17:32:23.121: ICMPv6: Received Time Exceeded, Src=2012::2, Dst=2012::1

*Apr 18 17:32:23.127: ICMPv6: Received Unreachable code 4, Src=2023::3, Dst=2012::1

*Apr 18 17:32:23.132: ICMPv6: Received Unreachable code 4, Src=2023::3, Dst=2012::1

*Apr 18 17:32:23.137: ICMPv6: Received Unreachable code 4, Src=2023::3, Dst=2012::1

clip_image018

~~~~数据包超长Packet Too Big (Type=2)

●Code=0

~~~~超时Time Exceeded (Type=3)

●Code=0: 在传输中超越了跳数限制(hot-limit超时,IPv4的TTL超时)

●Code=1: 分片重组时超时

~~~~参数问题Parameter Problem (Type=4)

●Code=0: 遇到错误的报头字段

●Code=1: 遇到无法识别的Next-header

●Code=2: 遇到无法识别的IPv6选项




---2,信息类消息(information message),也称为信息报文,最高bit1,也就是ICMPv6 Type=[128-255].

NOTES:如果是信息类的消息,那么type的值会在128-255之间.

信息类报文(RFC2463),我们用得最多的就是type=128 Echo request和129, echo reply.

~~~~回送请求报文(Echo Request)

●Type=128, Code=0.

 clip_image020

~~~~回送应答报文(Echo Reply)

●Type=129, Code=0.

clip_image022

附件有我做实验的相关ICMP6的抓包,有需要的朋友可以下载对比进行梳理概念.


本文转自 hny2000 51CTO博客,原文链接:http://blog.51cto.com/361531/1765168



相关文章
|
24天前
|
网络协议
TCP 报文的报头
SYN:同步连接序号,TCP SYN 报文就是把这个标志设置为 1,来请求建立连接; ACK:请求/应答状态。0 为请求,1 为应答; FIN:结束连线。如果 FIN 为 0 是结束连线请求,FIN 为 1 表示结束连线; RST:连线复位,首先断开连接,然后重建; PSH:通知协议栈尽快把 TCP 数据提交给上层程序处理。
|
2月前
|
网络协议
在 TCP 报文的报头
SYN:同步连接序号,TCP SYN 报文就是把这个标志设置为 1,来请求建立连接; ACK:请求/应答状态。0 为请求,1 为应答; FIN:结束连线。如果 FIN 为 0 是结束连线请求,FIN 为 1 表示结束连线; RST:连线复位,首先断开连接,然后重建; PSH:通知协议栈尽快把 TCP 数据提交给上层程序处理。
|
5月前
|
网络协议 Linux 网络安全
IP 数据包格式 ICMP协议
IP 数据包格式 ICMP协议
|
12月前
|
关系型数据库 MySQL 应用服务中间件
Docker容器常用命令大全:熟练掌握使容器优化更加高效
Docker容器常用命令大全:熟练掌握使容器优化更加高效
508 0
|
网络协议
Internet控制消息协议ICMP报文详解
Internet 协议的设计并非绝对可靠。这些控制消息的目的是提供有关通信环境中问题的反馈,而不是使 IP 可靠。仍然不能保证数据报将被传递或控制消息将被返回。某些数据报可能仍未送达,而没有任何丢失报告。如果需要可靠的通信,使用 IP 的更高级别的协议必须实现自己的可靠性程序。
330 0
Internet控制消息协议ICMP报文详解
|
缓存 网络协议 网络架构
三十二、ARP协议、DHCP协议、ICMP协议
三十二、ARP协议、DHCP协议、ICMP协议
三十二、ARP协议、DHCP协议、ICMP协议
|
存储 缓存 网络协议
【计算机网络】传输层 : TCP 协议 ( TCP 协议特点 | TCP 报文段首部格式 | TCP 报文段控制位 )
【计算机网络】传输层 : TCP 协议 ( TCP 协议特点 | TCP 报文段首部格式 | TCP 报文段控制位 )
175 0
【计算机网络】传输层 : TCP 协议 ( TCP 协议特点 | TCP 报文段首部格式 | TCP 报文段控制位 )
|
消息中间件 Kafka 索引
【Kafka实战指南】kafka分区数设置多少合适
【Kafka实战指南】kafka分区数设置多少合适
2871 1
【Kafka实战指南】kafka分区数设置多少合适
|
应用服务中间件 Dubbo Java
Dubbo 在跨语言和协议穿透性方向的探索:支持 HTTP/2 gRPC
Dubbo 在跨语言和协议穿透性方向上的探索:支持 HTTP/2 gRPC 和 Protobuf 本文整理自刘军在 Dubbo 成都 meetup 上分享的《Dubbo 在多语言和协议穿透性方向上的探索》。
10196 6
|
弹性计算 安全 测试技术
基于ECS使用FileZilla Server建立安全的SSL/TLS FTP
在搭建FTP服务时,由于FTP默认是主动模式,所以当FTP服务器通过互联网访问处在NAT环境下的客户端时,会出现数据通道报错的情况。为了让NAT环境下的用户也可以正常访问FTP服务,所以我们需要将FTP服务器设置成被动模式,让客户端主动发起访问,从而避免NAT的阻挡。
5008 0