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报头进行关联.

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

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

附件是相关的抓包.

ICMPv6type类:

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

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,这个环回口没有任何路由有这个路由.

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

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

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

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

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

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

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

●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的差错报文.

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

~~~~数据包超长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.

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

●Type=129, Code=0.

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

时间: 2024-10-14 19:08:11

2016-4-18 ICMPv6协议[RFC2463]--报文详解的相关文章

http协议之报文详解

用于HTTP协议交互的信息被称为HTTP报文.请求端(客户端)的http报文叫做请求报文,响应端的叫做响应报文. HTTP报文本身是由多行(用CR+LF作为换行符)数据构成的字符串文本. HTTP报文大致可以分为报文首部和报文主体两块.两者由最初出现的空行(CR+LF)来划分.通常,并不一定要有报文主体. 参考: 1. HTTP协议之报文详解 2. 图解http

IP实时传输协议RTP/RTCP详解

1.简介 目前,在IP网络中实现实时语音.视频通信和应用已经成为网络应用的一个主流技术和发展方向,本文详细介绍IP协议族中用于实时语音.视频数据传输的标准协议RTP( Real-time Transport Protocol)和RTCP(RTP Control Ptotocol)的主要功能. 2.RTP/RTCP协议简介 RTP 由 IETF(www.ietf.org)定义在 RFC 3550和3551中. RTP被定义为传输音频.视频.模拟数据等实时数据的传输协议,与传统的注重的高可靠的数据传

HTTP协议状态码详解(HTTP Status Code)(转)

原文链接:HTTP协议状态码详解(HTTP Status Code) 使用ASP.NET/PHP/JSP 或者javascript都会用到http的不同状态,一些常见的状态码为: 200 – 服务器成功返回网页 404 – 请求的网页不存在 503 – 服务不可用 1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态代码. 代码   说明 100   (继续) 请求者应当继续提出请求. 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分.  101   (切换协议) 请求者已要

关于HTTP协议头域详解

HTTP1.1 请求头:消息头  Accept:text/html,image/*  告诉服务器,客户机支持的数据类型 Accept-Charset:ISO-8859-1  告诉服务器,客户机采用的编码  Accept-EnCoding:gzip,compress 告诉服务器,客户机支持的数据压缩格式 Accept-Language:en   客户机的语言环境 Host: 客户机告诉服务器,想访问的主机名  If-Modified-Since:客户机通过这个头告诉服务器,资源的缓存时间  Ref

HTTP协议   状态码详解

http://www.cnblogs.com/TankXiao/archive/2013/01/08/2818542.html#code4xx HTTP协议   状态码详解,布布扣,bubuko.com

XMPP 协议工作流程详解

XMPP 要点. 1. 客户端(C) 和服务器端(S) 通过TCP连接5222端口进行全双工通信. 2. XMPP 信息均包含在 XML streams中.一个XMPP会话, 开始于<stream> 标签, 并结束于</stream>标签.所有其他的信息都位于这俩标签之间. 3. 出于安全目的考虑, 开始<stream>之后, 后续的内容会被适度的使用 Transpor Layer Security (TLS) 协商传输 和强制性的 Simple Authenticat

TCP-IP协议、状态详解

今天对TCP-IP协议做一个简单总结.以便日后自己查看. 本文通过两个图来梳理TCP-IP协议相关知识.TCP通信过程包括三个步骤:建立TCP连接通道,传输数据,断开TCP连接通道. 如图1所示,给出了TCP通信过程的示意图. 图1主要包括三部分:建立连接.传输数据.断开连接 一.概述: 1)建立TCP连接很简单,通过三次握手便可建立连接. 2)建立好连接后,开始传输数据.TCP数据传输牵涉到的概念很多:超时重传.快速重传.流量控制.拥塞控制等等. 3)断开连接的过程也很简单,通过四次握手完成断

ssl协议工作流程详解

SSL 协议 (HTTPS) 握手.工作流程详解 (双向 HTTPS 流程 )SSL 协议的工作流程:服务器认证阶段: 1)客户端向服务器发送一个开始信息"Hello"以便开始一个新的会话连接; 2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的"Hello"信息时将包含生成主密钥所需的信息; 3)客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器; 4)服务器恢复该主密钥,并返回给客户一个用主密钥认证的信

SSH 协议与OpenSSH详解

1. ssh概述 ssh是(Secure SHell protocol) 的简写,安全外壳协议(SSH)是一种在不安全网络上提供安全远程登录及其它安全网络服务的协议. 2. ssh 主要功能 一个就是类似 telnet 的远程联机使用 shell 的服务器,即 ssh 另一个就是类似 FTP 服务的 sftp-server ,提供更安全的 FTP 服务 3. ssh 工作原理 服务器建立公钥: 每一次启动 sshd 服务时,该服务会主动去找 /etc/ssh/ssh_host* 的文件,若系统刚