IPV6包头--下一个头部58--ICMPv6消息
8位类型--8位代码--16位校验和
---------消息主体----------
......
---------消息主体----------
有两类消息:
0-127是错误消息
128-255是信息类消息
错误消息汇总:
类型-------名称--------------代码------代码描述
1 目的不可达 0 没有通往目的主机的路由
1 与目的主机的通信被管理性禁止
2 目的主机所在网络超出了源地址所能企及范围
3 地址不可达(适用于1和2都不适用的情况)
4 端口不可达
5 源地址无法通过出、入站安全策略检查
6 网络设备拒绝通往目的主机的精确路由
2 数据包过长 0 需要分片
3 消息超时 0 跳限制减为0
1 重组经过分片的数据包
4 参数问题 0 ipv6包头字段错误
1 下一个头部字段无法识别
2 ipv6选项无法识别
100 供私人实验使用
101 供私人实验使用
127 预留,用于扩充icmpv6错误消息
信息类消息汇总:
类型------------------------名称--------------代码和描述
用于ping程序
128 Echo Request 0:忽略
129 Echo Reply 0: 忽略
用于多播侦听者发现功能
130 MLD查询
131 MLD报告
132 MLD完成
用于邻居发现功能
133 RS
134 RA
135 NS
136 NA
137 重定向
其他
138 用于路由器重新编址,通知一组路由器,让他们执行重新编址
139 节点信息查询
140 节点信息应答
......
邻居发现功能依赖于下面5种ICMPv6消息
路由器和主机之间发送的,行使动态地址分配功能的消息:
1.路由器恳求消息RS Router Solicitation
2.路由器通告消息RA Router Advertisement
主机之间,行使地址解析功能的消息:
3.邻居恳求消息NS Neighbor Solicitation
3.邻居通告消息NA Neighbor Advertisement
路由器和主机之间,用于发现更优的第一跳路由的消息
5.重定向消息
邻居发现消息可以完成:
1.发现路由器,配置ipv6地址前缀,默认网关
2.地址解析
3.地址冲突检测DAD
4.邻居不可达NUD检测
5.重定向
邻居发现选项:
可携带下面的选项
1.源链路层地址,NS RS RA会包括这个选项
2.目标链路层地址,NA和重定向包含这个
3.前缀信息,RA包含
4.重定向头部
5.MTU选项
RS:
type=133 8位----code=0 8位----16位校验和
----------------预留-------------------
----------------ND选项-----------------
......
----------------ND选项-----------------
--以太网头--
目的mac:33:33:00:00:00:02 所有ipv6路由器
源mac: nic mac
类型:0x86dd ipv6
--IPv6头--
下一个头部:58
跳限制:255,表示路由器不得转发,路由器会丢弃跳限制为非255的RS
源地址:本地链路单播或者未指定单播
目的地址:ff02::2
--ICMPv6头部--
类型:133
代码:0
校验和:
预留:
--ND选项--
类型:1 表示源mac
长度:1,单位8字节
值:mac
RA:
type=134 8位----code=0 8位----16位校验和
跳限制 8位 ----M-O-H-P-R ----16位路由器生存时间
----------------可达时间 ---------------------
----------------重传计时器---------------------
----------------选项(源mac,mtu,前缀)-------
......
----------------选项(源mac,mtu,前缀)-------
当前缀选项中包含的A标记位打开的时候,设备会根据前缀信息生成ip
当icmp选项O打开的时候,会额外从无状态dhcpv6服务器获取除公网单播地址外的其他信息,如DNS
当icmp选项M打开的时候,会从有状态dhcpv6服务区获取公网单播地址,DNS。
但是默认网关永远是从RA的源地址获取。
--以太网头部--
dst mac: 33:33:00:00:00:01可以是单播也可以配置位单播,但是定期发送的肯定是多播
src mac:
tyep:0x86dd
--IPv6包头--
下一个头部:58
跳限制:255
源ip:接口本地链路单播地址
目的ip:ff02::1或者RS的源ip
--ICMPv6头部--
type:134
code:0
校验和
跳限制:64,路由器给子网内主机的建议值,0为无建议
M位:建议从有状态的dhcpv6获取地址
O位:建议从dhcpv6获取其他信息,比如dns
归属代理标记位:为1表示路由器行使移动ipv6代理之职
默认路由优先级:生成的默认路由的优先级01高,00中,11低,10预留
路由器生存时间:在指定时间内,将路由器作为默认网关,如果位0表示不应该作为默认网关。cisco默认1800秒
可达时间:收到邻居的可达性确认之后,在这个时间段内认为邻居可达
重传计时器:主机重传NS之前等待的时间
--ICMPv6 ND源mac选项--
type:1
len:1
value:mac
--ICMPv6 MTU选项--
type:5
len:1
value:mtu
--ICMPv6前缀选项--
type:3
len:4
前缀长度:
on-link:如果为1,主机会把前缀添加进一个前缀列表,任何其他ipv6主机,只要这个前缀覆盖了它的ipv6地址,都视为可在本地子网内直连。
A标记:地址自动配置标记,通知主机执行SLAAC
有效地址生存时间:地址有效时间,必须大于首选地址生存时间
首先地址生存时间:地址优先使用期。
前缀:
NS:
type=135 8位----code=0 8位----16位校验和
----------------预留-------------------
----------------目标地址---------------
----------------目标地址---------------
----------------目标地址---------------
----------------目标地址---------------
----------------ND选项(源mac)--------
--以太网头部--
dst mac:目的ip的请求节点多播地址对应的多播mac
src mac:
type:0x86dd
--IPv6包头--
下一个头部:58
跳限制:255
源ip:本地链路ip或者公务单播ip,依目标地址而定
目的地址:如果目的是执行NUD,那么是目的ip是单播地址,否则是请求节点多播地址
--ICMPv6头部--
type:135
code:0
校验和:
预留:
目标地址:解析的目标地址
--ND选项--
type:1
len:1
value:src mac
NA:
type=136 8位----code=0 8位----校验和
R-S-O---------------29位预留-------
----------------目标地址-----------
----------------目标地址-----------
----------------目标地址-----------
----------------目标地址-----------
----------------ND选项(dst mac)--
--以太网头部--
dst mac:NS的src mac
src mac:
type:0x86dd
--IPv6包头--
下一个头部:58
跳限制:255
源ip:nic ip
目的ip:NS的src ip
--ICMPv6头部--
type:136
code:0
校验和:
R:如果是1,表示发送NA的是路由器
S:如果是1,表示发送NA的目的是为了响应NS
O:表示接收主机应该更新邻居缓存表
预留字段:0
目标地址字段:对方请求的目标地址,或者主动发送的时候指定mac有更新的地址
--ND选项--
type:2 目标链路地址
len:1
value:mac
ipv6设备在启用任何一个单播地址之前,都需要执行DAD
就是以自己的ip为目标,创建并发送NS,
目的地址是自己ip对应的请求节点多播地址
满足两个条件之一,即认为可达:
1.收到了NS的回应NA
2.高层协议指出,本机与邻居之间成功建立了链接,比如TCP链接。