一、IPv6地址分类
1、单播地址
特殊地址:
::1/128:环回地址,114 个 0,类似于 IPv4 的 127.0.0.1。
::/128:未指定地址,128 个 0,类似于 IPv4 的 0.0.0.0。
全球单播地址:类似于 IPv4 的公网地址,要求全球唯一。
全球路由前缀:由 provider 分配给相应的组织机构,目前已经被分配出去的前三
个 bit 为 001;全球路由前缀通常不小于 48bit。
子网 ID:由组织机构得到全球路由前缀之后自行分配子网,进行子网划分;通常
子网 ID 会分配到 64bit。也就是通常全球路由前缀+子网 ID=64bit。
接口标识:通常为 64bit。
2、唯一本地地址
类似于 IPv4 的私网地址,但是该地址也是全球唯一。用于私网网络本地管理使用。
唯一本地地址前缀:7bit,固定为全球知名前缀 FC00::/7。
L bit 位:1bit,值为 1 表示本地管理地址;值为 0 用作扩展。
全球唯一前缀:40bit,由提供商提供,通过伪随机方式生成,属于全球唯一。
子网 ID:16bit,在得到 48bit 的唯一前缀后,可以进行 16bit 的子网划分。
接口标识:64bit。
3、链路本地地址
该地址在 IPv6 启动后自动生成,可以实现单链路的天然通信能力,但是该
地址只能在链路上生效,不能跨链路通信,不能被路由。一般用于链路上的 IPv6 邻居发现
(NDP:邻居状态追踪,地址解析,DAD 等),以及用做 IPv6 路由协议比如 OSPFv3,
RIPng 等协议的下一跳。
网络前缀:64bit,前 10bit 为固定全球知名前缀 FE80::/10,后 54bit 为 0 填充。
接口标识:64bit。华为设备使用 eui-64 自动生成。
4、组播地址
组播前缀:8bit,固定为全球知名前缀 FF00::/8
flag:4bit,目前只是用最后一个 bit,前三个 bit 为 000,最后一个 bit 为 0 表示
该地址为永久组地址,最后一个 bit 为 1 表示该地址为临时组地址。
scope:4bit,用于表示该地址定义的组播流传递的范围。
group id:112bit,目前其中前 80bit 用 0 填充,后 32bit 用于表示组播组 ID。
5、请求节点组播地址:FF02::1:FFXX:XXXX/104
在 IPv6 中没有广播地址,所以在进行 DAD 检测或地址解析时需要使用广播地址,此时在 ipv6 中定义
了一个被请求节点组播地址实现广播地址的功能。每个 IPv6 节点对应的被请求节点组播地址都不一
样。该地址的前 104bit固定为 FF02::1:FF00:0/104,后 24bit 为该 IPv6 节点的单播地址的后 24bit。当
某个 IPv6 节点生成了一个 IPv6 单播地址之后,会默认加入该单播地址对应的被请求节点组播地址的
组播组。
6、任播地址
主要用于 IPv6 的移动特性,以及访问路径优化;没有独立的地址空间,使用和 IPv6
单播地址共同的地址空间。IPv6 任播地址仅可以被分配给路由设备,不能应用于主机。任
播地址不能作为 IPv6 报文的源地址。
二、ICMPV6
1、ICMPv6 是 IPv6 的基础协议之一,用于向源节点传递报文转发的信息或者错误
协议类型号(即 IPv6 Next Header)为 58。
在 IPv6 中,ICMPv6 除了提供 ICMPv4 的对应功能之外,还有其它一些功能的基础,
如邻居发现、无状态地址配置、重复地址检测、PMTU 发现等。
类似于 IPv4 的 ICMPv4,基于 IPv6 协议,next-header 值为 58。
Type:表明消息的类型,0 至 127 表示差错报文类型,128 至 255 表示消息报文
类型。
Code:表示此消息类型细分的类型。
2、差错检查报文
(1)目的不可达
当数据包无法被转发到目标节点或上层协议时,路由器或目标节点发送 ICMPv6 目标
不可达差错报文。在目标不可达报文中,类型(Type)字段值为 1,代码(Code)字段值
为 0-4,每一个代码值都定义了具体含义(RFC2463)
0:没有到达目标的路由。
1:与目标的通信被管理策略禁止。
2:未指定。
3:地址不可达。
4:端口不可达。
(2)数据包过长(Packet Too Big)
如果由于出口链路的 MTU 小于 IPv6 数据包的长度而导致数据包无法转发,路由器就
会发送数据包超长报文。该报文被用于 IPv6 路径 MTU 发现的处理 。数据包超长报文的类
型字段值为 2,代码字段值为 0。
(3)超时(Time Exceeded)。
当路由器收到一个 IPv6 报头中的跳限制(Hop Limit)字段值为 0 的数据包时,会丢弃
该数据包并向源发送 ICMPv6 超时报文。在超时报文中,类型字段的值为 3,代码字段的
值为 0 或 1:
0:在传输中超越了跳限制;1:分片重组超时。
(4)参数错误(Parameter Problem)。
当 IPv6 报头或者扩展报头出现错误,导致数据包不能进一步处理时,IPv6 节点会丢弃
该数据包并向源发送此报文,指明问题的位置和类型。参数问题报文中,类型字段值为
4,代码字段值为 0~2,32 位指针字段指出错误发生的位置。其中代码字段是这样定义
的:
0:遇到错误的报头字段。
1:遇到无法识别的下一个报头(Next Header)类型。
2:遇到无法识别的 IPv6 选项。
(5)在 RFC2463 中只定义了两种信息报文:回送请求 Echo Request 以及回送应答 Echo
Reply。
回送请求报文 Echo Request
回送请求报文用于发送到目标节点,以使目标节点立即发回一个回送应答报文。回送
请求报文的类型字段值为 128,代码字段的值为 0。标志符(Identifier)和序列号
(Sequence Number)字段有发送方主机设置,用于将即将收到的回送应答报文与发送的
回送请求的报文进行匹配。
回送应答报文 Echo Reply
当收到一个回送请求报文时,ICMPv6 会用回送应答报文响应。回送应答报文的类型字
段的值为 129,代码字段的值为 0。标志符(Identifier)和序列号(Sequence Number)字
段的值被指为与回送请求报文中的相应字段一样的值。
2、信息报文
(1)echo request 和 echo relay:一般用于 ping 功能检测连通性
(2)RS,RA,NS,NA:NDP 协议中使用