一.ICMPv6概述
1.ICMPv6是IPv6举出协议之一
2.IPv6包头的”Next Header“字段中协议号为58
3.ICMP报文有两种:差错消息及信息消息
二.报文结构
1.ICMPv6
![](https://i-blog.csdnimg.cn/blog_migrate/487f33728adfc1bb74a4ee217062c153.png)
2.ICMPv6 Header
![](https://i-blog.csdnimg.cn/blog_migrate/6d6652f89defffcfd95c38b01efd11dd.png)
3.消息类型
①Error Message:差错类消息,该类消息的Type字段最高bit为0,因此type范围0-127
②Information Message:信息类消息,该类消息的Type字段最高bit为1,因此type范围是128-255
![](https://i-blog.csdnimg.cn/blog_migrate/1d3a5a228d3adce633a488ed2aac19de.png)
三.PMTU
1.概念
① PMTU就是路径上最小接口MTU
②PMTUD(Path MTU发现机制)的主要目的是发现路径上的MTU,当数据包被从源转发到目的地的过程中避免分段。发送方可以使用最优PMTU与目的进行通信,避免被中途路由器分片导致性能下降。
2.PMTU过程
![](https://i-blog.csdnimg.cn/blog_migrate/4699b2e52bb7c63cea58479506fbe678.png)
四.NDP
1.概念
① 邻居发现协议Neighbor Discovery Protocol
② NDP使用ICMPv6实现功能
![](https://i-blog.csdnimg.cn/blog_migrate/9d6a6664a739ef56529304024929c957.png)
2.为NDP定义的icmpv6消息
①Type
②报文
3.ICMPv6实现地址解析
![](https://i-blog.csdnimg.cn/blog_migrate/b20127426f1ed41d957a13434c1dfb90.png)
![](https://i-blog.csdnimg.cn/blog_migrate/540b493b75424fc1e13398265896869a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a03e783e6aa6ae50810ee25b9ac89be1.png)
4.NA报文(TYPE=136 Code=0)
![](https://i-blog.csdnimg.cn/blog_migrate/939281204bc95a8d99590f27db4a8e2e.png)
5.邻居状态跟踪
![](https://i-blog.csdnimg.cn/blog_migrate/12674dee6468e7870a2dbf539c6c3fef.png)
① A发送NS,生成邻居缓存条目,此时邻居为Incomplete
②如B回复NA,则Incomplete转变为Reachable。否则Incomplete转变为Empty。经过Reachable Time(默认30s),B的条目状态Reachable转变为stale。或者在Reachable状态,收到B的非请求NA且链路层地址不同,则马上转变为Stale
③在Stale状态如A要向B发送数据,数据发出的同时邻居状态从Stale变为Delay,等待回包
④在Delay_First_Probe_Time(默认5s)内,若有NA应答或者来自对方应用层的提示信息,则Delay转变为Reachable,若无应用层提示信息,Delay转变为Probe
⑤在Probe状态,每隔 Retrans Timer(默认1s)发送单播NS,发送MAX_Unicast_Solicit(默认3)个后再等Retrans Timer,有应答则切换至Reachable,无则切换至Empty,即删除条目
五.DAD
1.概念
① Duplicate Address Detection地址重复检测机制
② 当一个IPv6接口激活后,或者当一个接口获得了IPv6地址(无论有状态或无状态配置),都会启动IPv6地址的DAD机制,以确保地址在链路上的唯一性
③ DAD机制使用ICMPv6的NS及NA消息实现
2.工作机制
①接口IPv6地址在通过DAD之前称为”tentative地址“,也即实验性地址。接口暂时不能使用这个地址进行正常单播通讯,除非通过DAD检测。
②节点向一个自己使用的tentative地址所对应的Solicited-Node组播地址发送一个NS,如果收到其他站点回应的NA,就证明地址已被使用,节点将不能使用该tentative地址进行通讯