菜缤的世界 CairBin's Blog - ICMPv6
type: channel
link: https://blog.cairbin.top/index.php/tag/ICMPv6/
items: ICMP与IPv6全局单播地址动态分配

ICMP与IPv6全局单播地址动态分配
type: item
date: 2022-04-21T03:45:00+00:00
description: ICMP与IPv6全局单播地址动态分配ICMPTCP/IP协议簇会在发生某些错误时提供要发送的信息，这些消息使用ICMP服务发送ICMP报文可大致分为两类：差错报文与查询或信息类报文ICMP版本类型有ICMPv4与ICMPv6，这分别对应IPv4与IPv6ICMP报文格式ICMPv4ICMPv4报文位置在IPv4的包中，当协议字段为1，则显示该包携带ICMPv4，其位置如下图所示ICMPv4类型与代码部分ICMPv4报文类型及对应的代码如下（此外还包含重定向等类型）ICMPv6ICMPv6报文位置IPv6包中存在扩展头部，则ICMPv6报文位于扩展头部之后；若IPv6包中不存在扩展头部，则ICMPv6报文位于IPv6头部之后ICMPv6类型与代码图片源于百度差错类报文从0-127，信息类报文类型从128-255下面为非0标准报文类型的代码值ICMPv4与ICMPv6通用消息主机确认目的不可达(网路、主机、协议、端口)超时路由重定向IPv6全局单播地址动态分配基础路由请求与路由器通告消息由上文可知，ICMP在邻居发现协议(ND或NDP)中包括4个新协议IPv6路由器与IPv6设备：路由器请求(RS)消息路由器通告(RA)消息其中RA消息包括：网络前缀和前缀长度默认网关：IPv6本地链路地址，RA消息源IPv6地址DNS地址和域名：DNS服务器地址和域名选项：选项1：SLAAC--前缀、前缀长度和默认网关选项2：无状态DHCPv6的SLAAC--SLAAC信息，但要向DHCPv6服务器请求其他信息（如DNS）选项3：有状态DHCPv6(无SLAAC)--向DHCPv6服务器请求所有信息EUI-64流程与随机生成通过EUI-64流程还是随机生成来生成接口ID取决于操作系统EUI-64流程该流程使用了MAC地址，并在48位MAC地址中插入16位生成接口ID划分OUI和设备标识符之间的MAC地址插入16进制值FFFE将OUI前两个十六进制值转为二进制，并颠倒U/L位（第7位）随机生成操作系统随机生成64位接口ID二者对比EUI-64流程优势在于通过MAC生成接口ID，可确保其唯一性且地址可充分利用，但同时会带来隐私问题，因为可通过MAC地址来跟踪IPv6地址。随机生成相对更安全，但其唯一性要通过DAD流程确保。IPv6设备之间：邻居请求(NS)消息邻居通告(NA)消息无状态地址自动分配(SLAAC)描述SLAAC是允许设备从IPv6路由器获取IPv6前缀、前缀长度、默认网关地址以及其他信息而无需使用DHCPv6服务器的方法（DHCPv6服务不是必须向）通过此方式获得的地址仅前缀，接口ID通过EUI-64流程或随机生成接口ID过程设备发送RS路由器发送RA，设备接收，获取前缀、前缀长度、默认网关SLAAC与无状态DHCPv6描述通过SLAAC获取信息，并向DHCPv6服务器请求其他信息过程设备发送RS路由器发送RA，设备接收并获取前缀、前缀长度、默认网关设备发送DHCPv6请求DHCPv6服务器响应并返回信息(DNS服务器地址与域名等信息)设备接收来自DHCPv6信息并进行配置有状态DHCPv6描述使用本地链路地址，即RA源IPv6地址作为默认网关通过DHCPv6服务器获取全局单播地址、DNS服务器地址、域名和其他信息（而不是通过SLAAC生成全局单播地址）过程设备发送RS路由器发送RA，设备接收，获取默认网关设备发送DHCPv6请求DHCPv6回应设备接收，获取全局单播地址、DNS服务器地址、域名和其他信息注意设备发送的RA是面向全部IPv6路由器的设备发送的DHCPv6请求是面向全部DHCPv6服务器的为确保任何IPv6单播地址唯一性，客户端可以使用重复地址检测(DAD)流程。该过程类似与ARP。若没有回应请求，则该地址唯一。