IPV6
2025-08-13 11:20:15 0 举报
AI智能生成
IPV6协议详解
作者其他创作
大纲/内容
IPV6地址
基本概念
IPv6的地址使用冒号十六进制表示方法:128位的地址每16位分成一段,每个16位的段用十六进制表示并用冒号分隔开,
例如:2001:0D12:0000:0000:02AA:0987:FE29:9871
例如:2001:0D12:0000:0000:02AA:0987:FE29:9871
为了进一步精简IPv6地址,当冒号十六进制格式中出现连续几段数值0的位段时,这些段可以压缩为双冒号的表示,例如上面的地址还可以进一步精简表示为:2001:D12::2AA:987:FE29:9871
结构,前缀表示法
前缀(48)+子网id(16)+接口id(64)
RFC4291中定义了n=48, m=16,也就是子网和接口ID与各占64位
IPv6没有子网掩码mask的概念,使用前缀表示
分类
单播
全球单播地址
前缀2000::/3,相当于IPv4的公网地址(IPv6的诞生根本上就是为了解决IPv4公网地址耗尽的问题)。这种地址在全球的路由器间可以路由。
2000::/3
链路本地地址
前缀FE80::/10,此类地址用于同一链路上的节点间的通信,主要用于自动配置地址和邻居节点发现过程。Windows和Linux支持或开启IPv6后,默认会给网卡接口自动配置一个链路本地地址。
FE80::/10
唯一本地地址ULA(IPv6私网地址)
前缀FC00::/7,相当于IPv4的私网地址(10.0.0.0、172.16.0.0、192.168.0.0)
包含fc00::/8和fd00::/8两部分:目前fc00::/8的使用还没有定义,我们不去管它;fd00::/8可以被自由使用。fd00::/8是一个十分巨大的地址段,你可以从中挑选一个/48的子段分配给你的局域网。RFC 4193建议使用随机生成的方法,使每个局域网的地址段都不同(这也是 ULA 名字的由来),从而避免局域网合并时地址冲突的麻烦
对IPv6下私网支持的认识:
在IPv4中,利用NAT技术私网内的网络节点可以使用统一的公网出口访问互联网资源,大大节省了IPv4公网地址的消耗(IPv6推进缓慢的原因之一)。另一方面,由于默认情况下私网内节点与外界通信的发起是单向的,网络访问仅仅能从私网内发起,外部发起的请求会被统一网关或者防火墙阻隔掉,这样的网络架构很好的保护了私网内的节点安全性和私密性。如果给每一台办公电脑都配置了IPv6地址,安全性无法保证。
因此,在安全性和私密性的要求下,IPv6中同样需要支持私网,并且也需要支持NAT。在Linux内核3.7版本开始加入对IPv6 NAT的支持,实现的方式和IPv4下的差别不大
在IPv4中,利用NAT技术私网内的网络节点可以使用统一的公网出口访问互联网资源,大大节省了IPv4公网地址的消耗(IPv6推进缓慢的原因之一)。另一方面,由于默认情况下私网内节点与外界通信的发起是单向的,网络访问仅仅能从私网内发起,外部发起的请求会被统一网关或者防火墙阻隔掉,这样的网络架构很好的保护了私网内的节点安全性和私密性。如果给每一台办公电脑都配置了IPv6地址,安全性无法保证。
因此,在安全性和私密性的要求下,IPv6中同样需要支持私网,并且也需要支持NAT。在Linux内核3.7版本开始加入对IPv6 NAT的支持,实现的方式和IPv4下的差别不大
fd00::/8
站点本地地址
前缀FEC9::/48,以前是用来部署私网的,但RFC3879中已经不建议使用这类地址,建议使用唯一本地地址。大家知道有这么一回事就可以了。网上还有很多文章还提到这种地址,但是没有说明这种地址已经不再使用。
特殊地址
地址0:0:0:0:0:0:0:0/128不指定任何内容,称为未指定地址。 简化后,所有的0被压缩为:: / 128。
在IPv4中,地址0.0.0.0与网络掩码0.0.0.0表示默认路由。 相同的概念也适用于IPv6,地址0:0:0:0:0:0:0:0,网络掩码全0表示默认路由。 应用IPv6规则后,此地址压缩为:: / 0。
IPv4中的环回地址由127.0.0.1到127.255.255.255系列表示。 但在IPv6中,只有0:0:0:0:0:0:0:1/128表示环回地址。 环回地址后,可以表示为:: 1/128。
在IPv4中,地址0.0.0.0与网络掩码0.0.0.0表示默认路由。 相同的概念也适用于IPv6,地址0:0:0:0:0:0:0:0,网络掩码全0表示默认路由。 应用IPv6规则后,此地址压缩为:: / 0。
IPv4中的环回地址由127.0.0.1到127.255.255.255系列表示。 但在IPv6中,只有0:0:0:0:0:0:0:1/128表示环回地址。 环回地址后,可以表示为:: 1/128。
多播
组播地址最高位前8位固定为全1,也就是“FFXX::/8”
具体结构
例如,如果给“NTP服务器组”分配一个组ID 为101(16进制)的永久多播地址,那么
FF01:0:0:0:0:0:0:101意味着在相同接口(即,相同节点)上的所有NTP服务器(作为发送者)。
FF02:0:0:0:0:0:0:101意味着在相同链路上的所有NTP服务器(作为发送者)。
FF05:0:0:0:0:0:0:101意味着在相同站点内的所有NTP服务器(作为发送者)。
FF0E:0:0:0:0:0:0:101意味着在互联网中的所有NTP服务器。
FF01:0:0:0:0:0:0:101意味着在相同接口(即,相同节点)上的所有NTP服务器(作为发送者)。
FF02:0:0:0:0:0:0:101意味着在相同链路上的所有NTP服务器(作为发送者)。
FF05:0:0:0:0:0:0:101意味着在相同站点内的所有NTP服务器(作为发送者)。
FF0E:0:0:0:0:0:0:101意味着在互联网中的所有NTP服务器。
IPv6组播地址的MAC地址映射
NDP协议,NS报文使用
被请求节点组播地址Solicited-node
在IPv6组播地址中,有一种特别的组播地址,叫做Solicited-node地址(被请求节点组播地址)。
Solicited-node地址是一种特殊用途的地址.主要用于重复地址检测(DAD)和替代IPv4中的ARP。
Solicited-node地址由前缀FF02::1:FF00:0 / 104和ipv6单播地址的最后24位组成。
一个IPv6单播地址对应一个Solicited-node地址。Solicited-node地址有效范围为本地链路范围。
地址格式: FF02:0:0:0:0:1:FFXX:XXXX,具体的对应关系如下:
Solicited-node地址是一种特殊用途的地址.主要用于重复地址检测(DAD)和替代IPv4中的ARP。
Solicited-node地址由前缀FF02::1:FF00:0 / 104和ipv6单播地址的最后24位组成。
一个IPv6单播地址对应一个Solicited-node地址。Solicited-node地址有效范围为本地链路范围。
地址格式: FF02:0:0:0:0:1:FFXX:XXXX,具体的对应关系如下:
子主题
任播
Anycast 指 IPv6 协议中一个发送方同最近的一组接收方之间的通信。Anycast 的定义是:当一个单播地址被分配到多于一个的接口上时,发到该接口的报文被网络路由到由路由协议度量的 “ 最近 ” 的目标接口上
特点是除了前缀,后续bit都填充0
注意
每个接口必须至少有一个链路本地地址;每个接口可以配置1个以上的单播地址,例如一个接口可以配置一个链路本地地址,同时也可以配置一个全球单播地址。
节点及路由器必须具备的IPv6地址
子主题
ping环回地址和global地址时,直接ping就可以了,而ping多播和Link-Local地址时,需要指定从哪个接口出去,
这是因为机器上所有接口的Link-Local地址都属于同一个网段,当有多个接口时,根本没办法自动的判断应该从哪个接口出去。
这是因为机器上所有接口的Link-Local地址都属于同一个网段,当有多个接口时,根本没办法自动的判断应该从哪个接口出去。
地址配置
自动配置
无状态stateless
配置过程
主机发送路由器请求报文(RS)
路由器回应路由器广播报文(RA)
主机获得前缀,MTU,DNS地址等参数
路由器周期性向外发送路由器广播报文(RA)
IEEE EUI-64(主机侧计算接口ID)
路由器回应路由器广播报文(RA)
主机获得前缀,MTU,DNS地址等参数
路由器周期性向外发送路由器广播报文(RA)
IEEE EUI-64(主机侧计算接口ID)
RA中的M/O标记
M标记(管理地址配置)为真时,说明可以使用DHCPV6协议配置地址
M标记为非真时,使用无状态配置方式,RA下发地址前缀。
O标记(其他有状态配置)指示,当O标记为真时,通过DHCPV6下发DNS地址
RA中的O标记为非真时,应该通过RA中的DNS选项下发DNS服务器地址
M标记为非真时,使用无状态配置方式,RA下发地址前缀。
O标记(其他有状态配置)指示,当O标记为真时,通过DHCPV6下发DNS地址
RA中的O标记为非真时,应该通过RA中的DNS选项下发DNS服务器地址
有状态stateful
有状态DHCPv6(Stateful DHCPv6):IPv6地址、其他参数(如DNS)均通过DHCPv6获取
无状态DHCPv6(Stateless DHCPv6):IPv6地址依然通过路由通告RA方式生成,其他参数(如DNS)通过DHCPv6获取
手动配置
手动配置IPv6地址/前缀及其他网络配置参数(DNS、NIS、SNTP服务器地址等参数)。
涉及技术
Radvd
支持无状态地址配置
支持路由器公告
支持路由器公告
Wide-dhcpv6
支持有状态地址配置
无状态时下发DNS等信息
无状态时下发DNS等信息
Ndisc6
接收处理RA消息中的DNS字段(wan口)
相关协议
协议栈,该分层中ARP,NDP和ICMP所属层次有争议。
另说:ICMP是IP的一个辅助协议,为3.5层协议
另说:ARP为2.5层协议
L3网络层IPV6
IPV6报文头(40byte)
版本。长度为4位,对于IPv6,该字段必须为6
类别。长度为8位,指明为该包提供了某种区分服务
流标签。长度为20位,用于标识属于同一业务流的包。一个节点可以同时作为多个业务流的发送源。流标签和源节点地址唯一标识了一个业务流
净荷长度。长度为16位,其中包括包净荷的字节长度,即IPv6头后的包中包含的字节数。
下一个头。 8位,这个字段指出了IPv6头后所跟的头字段中的协议类型。与IPv4协议字段类似,下一个头字段可以用来指出高层是TCP还是UDP,但它也可以用来指明IPv6扩展头的存在
跳极限。长度为8位。每当一个节点对包进行一次转发之后,这个字段就会被减1。如果该字段达到0,这个包就将被丢弃。对过期包进行超时判断的功能可以由高层协议完成。
源地址。长度为128位指出了IPv6包的发送方地址。
目的地址。长度为128位,指出了IPv6包的接收方地址。这个地址可以是一个单播、组播或任意点播地址。如果使用了选路扩展头(其中定义了一个包必须经过的特殊路由),其目的地址可以是其中某一个中间节点的地址而不必是最终地址。
报文内容
L3网络层NDP
ICMPv6路由器请求(Router Solicitation)消息 133
ICMPv6路由器请求(Router Solicitation)消息:Type字段值为133,节点启动后,通过RS消息向路由器发出请求,请求前缀和其他配置信息,用于节点的自动配置。
ICMPv6路由器通告(Router Advertisement)消息 134
ICMPv6路由器通告(Router Advertisement)消息:Type字段值为134,对RS消息进行回应。在没有抑制RA消息发布的条件下,路由器会周期性地发布RA消息,其中包括前缀信息选项和一些标志位的信息。
ICMPv6邻居请求(Neighbor Solicitation)消息 135
邻居请求报文NS(Neighbor Solicitation)报文:Type字段值为135,Code字段值为0,在地址解析中的作用类似于IPv4中的ARP请求报文。用来获取邻居的链路层地址,验证邻居是否可达,进行重复地址检测等。
重复地址检测DAD,待分配的IP地址需要经过该检测才能真正分配给节点
NS报文
Frame 18: 86 bytes on wire (688 bits), 86 bytes captured (688 bits)
Ethernet II, Src: c2:22:f6:41:3b:de (c2:22:f6:41:3b:de), Dst: IPv6mcast_ff:41:3b:de (33:33:ff:41:3b:de)
Destination: IPv6mcast_ff:41:3b:de (33:33:ff:41:3b:de)
Source: c2:22:f6:41:3b:de (c2:22:f6:41:3b:de)
Type: IPv6 (0x86dd)
Internet Protocol Version 6, Src: ::, Dst: ff02::1:ff41:3bde
Internet Control Message Protocol v6
Type: Neighbor Solicitation (135)
Code: 0
Checksum: 0x37e7 [correct]
[Checksum Status: Good]
Reserved: 00000000
Target Address: fe80::c022:f6ff:fe41:3bde
ICMPv6 Option (Nonce)
Type: Nonce (14)
Length: 1 (8 bytes)
Nonce: b761505f0114
Ethernet II, Src: c2:22:f6:41:3b:de (c2:22:f6:41:3b:de), Dst: IPv6mcast_ff:41:3b:de (33:33:ff:41:3b:de)
Destination: IPv6mcast_ff:41:3b:de (33:33:ff:41:3b:de)
Source: c2:22:f6:41:3b:de (c2:22:f6:41:3b:de)
Type: IPv6 (0x86dd)
Internet Protocol Version 6, Src: ::, Dst: ff02::1:ff41:3bde
Internet Control Message Protocol v6
Type: Neighbor Solicitation (135)
Code: 0
Checksum: 0x37e7 [correct]
[Checksum Status: Good]
Reserved: 00000000
Target Address: fe80::c022:f6ff:fe41:3bde
ICMPv6 Option (Nonce)
Type: Nonce (14)
Length: 1 (8 bytes)
Nonce: b761505f0114
源MAC:发出该NS报文的网卡的MAC,例如报文示例的c2:22:f6:41:3b:de
目的MAC:与目标的请求节点地址相对应的以太网MAC地址(组播MAC),例如报文示例的33:33:ff:41:3b:de,它是目标的请求节点地址ff02::1:ff41:3bde对应的以太网MAC地址。有一个对应算法,见《组播-IPv6组播地址的MAC地址映射》章节。
源IP:发送NS报文的源IP。例如报文示例的 ::。其中::为DAD报文发送NS报文专用。
目的IP:发送到哪个IP上,这里是目标的请求节点地址。例如报文示例的ff02::1:ff41:3bde。见《组播-被请求节点组播地址与单播映射》章节。。
Target Address:请求的IP地址。例如报文示例的fe80::c022:f6ff:fe41:3bde
目的MAC:与目标的请求节点地址相对应的以太网MAC地址(组播MAC),例如报文示例的33:33:ff:41:3b:de,它是目标的请求节点地址ff02::1:ff41:3bde对应的以太网MAC地址。有一个对应算法,见《组播-IPv6组播地址的MAC地址映射》章节。
源IP:发送NS报文的源IP。例如报文示例的 ::。其中::为DAD报文发送NS报文专用。
目的IP:发送到哪个IP上,这里是目标的请求节点地址。例如报文示例的ff02::1:ff41:3bde。见《组播-被请求节点组播地址与单播映射》章节。。
Target Address:请求的IP地址。例如报文示例的fe80::c022:f6ff:fe41:3bde
NA
检测过程
地址配置
地址解析
NS报文
Frame 53: 86 bytes on wire (688 bits), 86 bytes captured (688 bits)
Ethernet II, Src: Shanghai_2b:b4:99 (6c:59:76:2b:b4:99), Dst: IPv6mcast_ff:41:3b:de (33:33:ff:41:3b:de)
Destination: IPv6mcast_ff:41:3b:de (33:33:ff:41:3b:de)
Source: Shanghai_2b:b4:99 (6c:59:76:2b:b4:99)
Type: IPv6 (0x86dd)
Internet Protocol Version 6, Src: fe80::706d:24ff:fe63:932d, Dst: ff02::1:ff41:3bde
Internet Control Message Protocol v6
Type: Neighbor Solicitation (135)
Code: 0
Checksum: 0x7a70 [correct]
[Checksum Status: Good]
Reserved: 00000000
Target Address: fd99:0:d:1788:c022:f6ff:fe41:3bde
ICMPv6 Option (Source link-layer address : 6c:59:76:2b:b4:99)
Type: Source link-layer address (1)
Length: 1 (8 bytes)
Link-layer address: Shanghai_2b:b4:99 (6c:59:76:2b:b4:99)
Ethernet II, Src: Shanghai_2b:b4:99 (6c:59:76:2b:b4:99), Dst: IPv6mcast_ff:41:3b:de (33:33:ff:41:3b:de)
Destination: IPv6mcast_ff:41:3b:de (33:33:ff:41:3b:de)
Source: Shanghai_2b:b4:99 (6c:59:76:2b:b4:99)
Type: IPv6 (0x86dd)
Internet Protocol Version 6, Src: fe80::706d:24ff:fe63:932d, Dst: ff02::1:ff41:3bde
Internet Control Message Protocol v6
Type: Neighbor Solicitation (135)
Code: 0
Checksum: 0x7a70 [correct]
[Checksum Status: Good]
Reserved: 00000000
Target Address: fd99:0:d:1788:c022:f6ff:fe41:3bde
ICMPv6 Option (Source link-layer address : 6c:59:76:2b:b4:99)
Type: Source link-layer address (1)
Length: 1 (8 bytes)
Link-layer address: Shanghai_2b:b4:99 (6c:59:76:2b:b4:99)
源mac是自己的网卡mac
目的mac是组播mac
源IP是自己的IP
目的IP是组播IP
target addr是要解析的ip,为了得到该目的ip的mac地址
NA报文
Frame 54: 86 bytes on wire (688 bits), 86 bytes captured (688 bits)
Ethernet II, Src: c2:22:f6:41:3b:de (c2:22:f6:41:3b:de), Dst: Shanghai_2b:b4:99 (6c:59:76:2b:b4:99)
Destination: Shanghai_2b:b4:99 (6c:59:76:2b:b4:99)
Source: c2:22:f6:41:3b:de (c2:22:f6:41:3b:de)
Type: IPv6 (0x86dd)
Internet Protocol Version 6, Src: fd99:0:d:1788:c022:f6ff:fe41:3bde, Dst: fe80::706d:24ff:fe63:932d
Internet Control Message Protocol v6
Type: Neighbor Advertisement (136)
Code: 0
Checksum: 0xeefd [correct]
[Checksum Status: Good]
Flags: 0x60000000, Solicited, Override
Target Address: fd99:0:d:1788:c022:f6ff:fe41:3bde
ICMPv6 Option (Target link-layer address : c2:22:f6:41:3b:de)
Type: Target link-layer address (2)
Length: 1 (8 bytes)
Link-layer address: c2:22:f6:41:3b:de (c2:22:f6:41:3b:de)
Ethernet II, Src: c2:22:f6:41:3b:de (c2:22:f6:41:3b:de), Dst: Shanghai_2b:b4:99 (6c:59:76:2b:b4:99)
Destination: Shanghai_2b:b4:99 (6c:59:76:2b:b4:99)
Source: c2:22:f6:41:3b:de (c2:22:f6:41:3b:de)
Type: IPv6 (0x86dd)
Internet Protocol Version 6, Src: fd99:0:d:1788:c022:f6ff:fe41:3bde, Dst: fe80::706d:24ff:fe63:932d
Internet Control Message Protocol v6
Type: Neighbor Advertisement (136)
Code: 0
Checksum: 0xeefd [correct]
[Checksum Status: Good]
Flags: 0x60000000, Solicited, Override
Target Address: fd99:0:d:1788:c022:f6ff:fe41:3bde
ICMPv6 Option (Target link-layer address : c2:22:f6:41:3b:de)
Type: Target link-layer address (2)
Length: 1 (8 bytes)
Link-layer address: c2:22:f6:41:3b:de (c2:22:f6:41:3b:de)
源mac是target addr对应网卡的mac
目的mac是上一步NS的源mac
源ip是target addr
目的ip是上一步的源ip
target addr是自己的单播ip
特征报文
检测过程
地址解析
1、PC A在向PC B发送报文之前它要先解析出PC B的MAC地址,所以首先PC A会发送一个NS报文,其中源IP地址为PC A的IPv6地址,目的IP地址为PC B的被请求节点组播地址(前缀F02::1:F/104,并结合请求IPv6地址中的低24位,具体细节请参阅上一期),需要解析的目标IP为PC B的IPv6地址,这就表示PC A想要知道PC B的MAC地址。同时,NS报文还携带了PC A的MAC地址。
2、当PC B接收到了NS报文之后,就会回应NA报文,其中源地址为PC B的IPv6地址,目的地址为PC A的IPv6地址(使用NS报文中的PC A的MAC地址进行单播),同时包含PC B的MAC地址。这样就完成了一次地址解析的过程。
2、当PC B接收到了NS报文之后,就会回应NA报文,其中源地址为PC B的IPv6地址,目的地址为PC A的IPv6地址(使用NS报文中的PC A的MAC地址进行单播),同时包含PC B的MAC地址。这样就完成了一次地址解析的过程。
邻居不可达NUD
检测同一链路上相连通的两个节点现在是否依然连通,邻居状态划分
未完成(Incomplete):表示正在解析地址,但邻居链路层地址尚未确定
可达(Reachable):表示地址解析成功,该邻居可达。
陈旧(Stale):表示可达时间耗尽,未确定邻居是否可达
延迟(Delay):邻居可达性未知。Delay状态不是一个稳定的状态,而是一个延时等待状态。
探测(Probe):邻居可达性未知,正在发送邻居请求探针以确认可达性.
工作流程
NUD
1、A先发送NS报文,并生成缓存条目,此时,邻居状态为Incomplete。
2、若B回复NA报文,则邻居状态由Incomplete变为Reachable,否则固定时间后邻居状态由Incomplete变为Empty,即删除表项。
3、经过邻居可达时间,邻居状态由Reachable(默认30s)变为Stale,即未知是否可达。
4、如果在Reachable状态,A收到B的非请求NA报文,且报文中携带的B的链路层地址和表项中不同,则邻居状态马上变为Stale。
5、在Stale状态若A要向B发送数据,则邻居状态由Stale变为Delay,并发送NS请求。
6、在经过一段固定时间后,邻居状态由Delay(默认5s)变为Probe(每隔1s发送一次NS报文,连续发送3次),其间若有NA应答,则邻居状态由Delay变为Reachable。
7、在Probe状态,A每隔1s发送单播NS,发送3次后,有应答则邻居状态变为Reachable,否则邻居状态变为Empty,即删除表项。
2、若B回复NA报文,则邻居状态由Incomplete变为Reachable,否则固定时间后邻居状态由Incomplete变为Empty,即删除表项。
3、经过邻居可达时间,邻居状态由Reachable(默认30s)变为Stale,即未知是否可达。
4、如果在Reachable状态,A收到B的非请求NA报文,且报文中携带的B的链路层地址和表项中不同,则邻居状态马上变为Stale。
5、在Stale状态若A要向B发送数据,则邻居状态由Stale变为Delay,并发送NS请求。
6、在经过一段固定时间后,邻居状态由Delay(默认5s)变为Probe(每隔1s发送一次NS报文,连续发送3次),其间若有NA应答,则邻居状态由Delay变为Reachable。
7、在Probe状态,A每隔1s发送单播NS,发送3次后,有应答则邻居状态变为Reachable,否则邻居状态变为Empty,即删除表项。
ICMPv6邻居通告(Neighbor Adivertisment)消息 136
邻居通告报文NA(Neighbor Adivertisment)报文:Type字段值为136,Code字段值为0,在地址解析中的作用类似于IPv4中的ARP应答报文。用来对NS消息进行响应。另外,当节点在链路层变化的时候主动发出NA消息,告知邻居本节点的变化
ICMPv6重定向(Redirect)消息 137
ICMPv6重定向(Redirect)消息:Type字段值为137,当满足一定的条件时,缺省网关通过向源主机发送重定向消息,使主机重新选择正确的下一跳地址进行后续报文的发送。
重定向
Host A需要和Host B通信,Host A的默认网关设备是Router A,当Host A发送报文给Host B时报文会被送到Router A。Router A接收到Host A发送的报文以后会发现实际上Host A直接发送给Router B更好,它将发送一个重定向报文给主机A,其中报文中更好的路径下一跳地址为Router B,Destination Address为Host B。Host A接收到了重定向报文之后,会在默认路由表中添加一个主机路由,以后发往Host B的报文就直接发送给Router B。
当路由器收到一个报文后,只有在如下情况下,设备会向报文发送者发送重定向报文:
报文的目的地址不是一个组播地址。
报文并非通过路由转发给设备。
经过路由计算后,路由的下一跳出接口是接收报文的接口。
设备发现报文的最佳下一跳IP地址和报文的源IP地址处于同一网段。
设备检查报文的源地址,发现自身的邻居表项中有用该地址作为全球单播地址或链路本地地址的邻居存在。
报文的目的地址不是一个组播地址。
报文并非通过路由转发给设备。
经过路由计算后,路由的下一跳出接口是接收报文的接口。
设备发现报文的最佳下一跳IP地址和报文的源IP地址处于同一网段。
设备检查报文的源地址,发现自身的邻居表项中有用该地址作为全球单播地址或链路本地地址的邻居存在。
理解
冲突检测和地址解析的区别
重复地址检测 NS 报文询问目标是自己的地址(target address),不希望收到 NA 报文;地址解析 NS 报文询问目标是别人的地址,希望收到 NA 报文。
即使主机不主动找路由器,路由器也会周期性发送 RA 报文,向链路上所有节点通告前缀,这称为 Unsolicited RA。如果主机不想等,也可主动发送 RS 报文,催促路由器发送 RA 报文,这称为 Solicited RA。即使发送 RS 报文前就收到 RA 报文,主机也应至少发送一次 RS 报文,因为 Solicited RA 可能比 Unsolicited RA 报文包含更丰富的信息。
为了避免造成网络拥塞,主机不会在获得链路本地地址后立即发送 RS 报文,而是延迟一段随机时间后再发送,在大面积故障恢复(如停电结束)后链路不会同时涌入大量 RS 报文。同样道理,路由器的周期性 RA 报文也不是严格按照周期发送的,避免同一链路上的多个路由器同时发送 RA 报文。
L4DHCPV6
0 条评论
下一页