IPv6 ND协议

2023-12-18 12:59
文章标签 协议 ipv6 nd

本文主要是介绍IPv6 ND协议,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 组播地址

组播MAC,33-33再加上IPv6组播地址的后32三位,注意不是MAC地址。

主机一般会加入FF02::1 这个组

而路由器会加入FF02::1和FF02::2这两个组。当配置了GUA地址后,他会加入被请求节点组播地址这个组,他是固定的FF02::1FF00/104,后面加上MAC的后24位组成。链路本地地址也是如此。

如下图

 注:被请求节点组播地址主要用于地址重复检测功能,和邻居发现机制

 ICMPv6协议可以为IPv6解决地址重复检测,MAC地址查询(类似ARP)功能。 

当R1一个接口配置了GUA地址后,会发一个NS报文,源地址是::,目的地址是一个组播地址,(二层目的MAC也是一个组播MAC)即是你接口默认加入的那个组。例如3000::2,他加入的组为FF02::1:FF00:2,也就是它的目的地址。NS的TYPE为135,CODE为0。

 

 然后,它自己本身就会回应一个NA,类似一点自问自答。 (华三设备会如此,华为不会自答)

注意,NS是往这个组播地址发。NA则是往这个链路上的所有节点发!

ND的TYPE为136,CODE为0。

当有地址冲突时,设备就会提示地址冲突。下图R2设备配置了一样的地址,它发出第一个NS之后,R1设备立刻就回应了NA,表示这个地址我已经占有了。

 R1先配置,实验地址可用。

 R2后配置,地址没有成功,于是标记DUPLICATE!(重复)

PS:

1.IPv6 地址的 tentative 状态:IPv6 地址处在这种状态时,地址的唯一性还没有确定,
收到的包都会被丢弃

2.当一个设备刚刚配置一个ipv6的GUA地址后,抓包如下,抓到一个链路本地地址和单播地址的DAD检测。从图可以看出,NS DAD检测先往被请求节点组播地址发,NA再向FF00::1本链路上所有节点发送。

 RS和RA

 华三和华为一样,默认接口关闭了自动获取地址,敲上命令 undo ipv6 nd ra halt 即可。

 

从上图抓包,可以看出主机获取了 8888::/64   6666::/64。RA报文的发送地址是是FF02::1,是本条链路上所有的节点,因为路由器和PC都可能用SLAAC获取IPv6地址。然而RS的发送地址是FF02::2,原因是去找路由器索要地址。

PS :

 NS  NA实现了重复地址检测和地址解析.

 RS  RA实现了路由器发现,无状态自动配置,前缀重编址,路由重定向。

DHCPv6和RA获取地址

所谓无状态地址获取,说白了就是地址是RA获取的,有状态是DHCPv6分配的,因为这样分配的地址DHCPv6服务器可以管理。

网关的的地址都是RA获取到的,手工除外。

       根据三个置位,可以调节地址分配方式是RA获取还是DHCPv6获取:当A位置1,则使用RA分配的地址,DNS可以通过O置位来通过DHCPv6获取;当A位置0,表示不用路由器分配的地址,此时M置位1,表示地址和前缀都用DHCPv6获取,此时O置位如何都无所谓了。

DHCPv6分配地址和v4差不多,有solicit(discover)、advertise(offer)、request、reply(ack)。T1时间指的是优选时间的二分之一,T2时间值得是优选时间的十分之八,用于续租和重绑定,这一点和DHCPv4类似。

DUID 标识的是一台DHCPv6设备,IAID表示一个接口。

UDP端口号:546 客户端        547服务端或者中继。

PS: RA获取的地址和DHCPv6一样,都是有一个有效时间和优选时间

DHCPv6 PD(Prefix Delegation,前缀代理)自动配置:

  这个是分配给内网的,说内网也不准确。当你家里拨号拿到了一个公网地址后,你可以向运营商请求一个PD前缀,这个前缀用于给你的家里一些设备(内网)分配GUA地址,让你的家里设备的v6地址全球可达。 

PS:

为何需要link-local--在一个接口可以配置很多IPv6地址,所以学习路由就有可能出现很多下一跳。
所以出现Link Local地址唯一标识一个节点。在本地链路看到下一跳都是对端的Link Local地址。

注:笔记内容来自安徽合肥肯耐博培训机构谢斌老师。安徽肯耐博-IT认证培训考试中心 (openlabhf.com)

这篇关于IPv6 ND协议的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/508457

相关文章

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

Java对接MQTT协议的完整实现示例代码

《Java对接MQTT协议的完整实现示例代码》MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛,:本文主要介绍Ja... 目录前言前置依赖1. MQTT配置类代码解析1.1 MQTT客户端工厂1.2 MQTT消息订阅适配器1.

Linux中的自定义协议+序列反序列化用法

《Linux中的自定义协议+序列反序列化用法》文章探讨网络程序在应用层的实现,涉及TCP协议的数据传输机制、结构化数据的序列化与反序列化方法,以及通过JSON和自定义协议构建网络计算器的思路,强调分层... 目录一,再次理解协议二,序列化和反序列化三,实现网络计算器3.1 日志文件3.2Socket.hpp

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

关于WebSocket协议状态码解析

《关于WebSocket协议状态码解析》:本文主要介绍关于WebSocket协议状态码的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录WebSocket协议状态码解析1. 引言2. WebSocket协议状态码概述3. WebSocket协议状态码详解3

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines