IPv6地址自动配置中的有状态(stateful)和无状态(stateless)的区别

2024-05-28 08:32

本文主要是介绍IPv6地址自动配置中的有状态(stateful)和无状态(stateless)的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一个典型的IPv6主机单播地址由3部分组成:全局路由前缀、子网ID和接口ID(64位)。全局 路由前缀用来识别分配给一个站点的一个地址范围。子网ID也称为子网前缀,一个子网ID与 一个链接相关联,以识别站点中某个链接。接口ID用来识别链接上的某个接口,在该链接上是惟一的。

在无状态地址自动配置方式下,接口ID通常可以通过EUI64转换算法得到。接口ID由48位MAC地址转换得到。EUI64是IEEE定义的一种基于64位的扩展惟一标示符。他是IEEE指定的公共24位制造商标示和制造商为产品指定的40位值的组合。在IPv6地址中,接口ID的长度为64位,他由48位的以太网MAC地址转换得到。

使用EUI 64转换算法得到的接口ID是随机器硬件固定的,也是全局惟一的。该算法实现简单,是一种重要的接口ID自动生成算法,目前Windows,Linux操作系统在对主机生成接口ID时,均使用EUI 64转换算法。作为对该算法的一种改进,RFC3041又引入了一种随机地址机制,他包含了用一组随机数字代替由MAC地址转换的接口ID。该地址具有一定的生存周期,随着生存周期的结束,该地址会自动更换,较好地解决了节点的Internet访问活动被跟踪的问题。

在实际应用中,我们不需要关心EUI64转换算法,我们只需要知道实际使用的时候的数据可以在哪里看到即可。

下图是一个使用这个脚本手动配置的IPv6 in IPv4 隧道

 

其中黄色马克标记的部分就一个link local地址。

常见的使用isatapd自动配置的isatap隧道地址,fe80是链路本地地址的固定前缀,其他的为为从MAC地址转换得到的接口ID。均体现在ipv6的internet地址中

 

同样的,在Windows中,使用无状态自动配置的地址也是按照这个规则,其中的Temporary IPv6 address 就是上面提到的RFC3041里面的有寿命的随机地址。

 

在IPV6的自动配置中,分为两种技术

一种是传统的有状态(stateful),典型代表就是与IPv4时代相对应的DHCPv6,

一种是IPv6的无状态(stateless)自动配置,典型代表是Radvd。这是IPv6协议的一个突出特点:支持网络节点的地址自动配置.

在无状态地址自动配置方式下,网络接口接收路由器宣告的全局地址前缀,再结合接口ID得到一个可聚集全局单播地址。在有状态地址自动配置的方式下,主要采用动态主机配置协议(DHCP),需要配备专门的DHCP服务器,网络接口通过客户机/服务器模式从DHCP服务器处得到地址配置信息。

具体来说,以RADVD为代表的无状态自动配置不需要消耗很多机器资源,也不像传统DHCP一样需要维护一个本地数据库来维护地址分配状态,他只是进行广播前缀地址,客户端收到这种广播后再自己使用EUI64算法生成全球唯一的IPv6地址,进行自我配置。

因此,RADVD不能进行NTP/DNS等其他传统DHCP服务器所能进行的配置。甚至严格的说,她只进行路由广播,地址都是客户端自己根据算法和规范在配置。

DPCHv6就完全相反,地址池的计算,管理全部是服务器端在做,客户端只是简单的从服务器端取得服务器端已经计算好的地址和其他设置应用到自己身上。

因此,为了兼容EUI64算法,Radvd所能进行管理的地址段要比DHCPv6小很多,如果你希望这种无序的自动化管理,并且只是配地址,你可以使用Radvd,反过来,你的想重用一个/64的isatap隧道给自己家的设备都分配IPv6地址什么的,你如果希望为客户端指定更加详细的DNS设定,NTP设定等等,你可以考虑DHCPv6+Radvd(stateless),或者一种细致的地址管理,您应该选择DHCPv6+Radvd(statefull)

 

这篇关于IPv6地址自动配置中的有状态(stateful)和无状态(stateless)的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Springboot @Autowired和@Resource的区别解析

《Springboot@Autowired和@Resource的区别解析》@Resource是JDK提供的注解,只是Spring在实现上提供了这个注解的功能支持,本文给大家介绍Springboot@... 目录【一】定义【1】@Autowired【2】@Resource【二】区别【1】包含的属性不同【2】@

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

分辨率三兄弟LPI、DPI 和 PPI有什么区别? 搞清分辨率的那些事儿

《分辨率三兄弟LPI、DPI和PPI有什么区别?搞清分辨率的那些事儿》分辨率这个东西,真的是让人又爱又恨,为了搞清楚它,我可是翻阅了不少资料,最后发现“小7的背包”的解释最让我茅塞顿开,于是,我... 在谈到分辨率时,我们经常会遇到三个相似的缩写:PPI、DPI 和 LPI。虽然它们看起来差不多,但实际应用

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

springboot security之前后端分离配置方式

《springbootsecurity之前后端分离配置方式》:本文主要介绍springbootsecurity之前后端分离配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的... 目录前言自定义配置认证失败自定义处理登录相关接口匿名访问前置文章总结前言spring boot secu

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties

idea中创建新类时自动添加注释的实现

《idea中创建新类时自动添加注释的实现》在每次使用idea创建一个新类时,过了一段时间发现看不懂这个类是用来干嘛的,为了解决这个问题,我们可以设置在创建一个新类时自动添加注释,帮助我们理解这个类的用... 目录前言:详细操作:步骤一:点击上方的 文件(File),点击&nbmyHIgsp;设置(Setti