IPv6知识点整理
IPv6:是英文“Internet Protocol Version 6”(互联网协议第6版)的缩写,是互联网工程任务组(IETF)设计的用于替代IPv4的下一代IP协议,其地址数量号称可以为全世界的每一粒沙子编上一个地址 。
国际IP地址分配方式:
- ICANN的IANA部门负责将IP地址分配给5个区域性的互联网注册机构RIR ,比如APNIC,它负责亚太地区的IP分配
- RIR将地址进一步分配给当地的ISP,比如:中国电信和中国移动
- ISP再根据自己的情况,将IP地址分配给机构或者直接分配给用户,比如将IPv4 A类地址分配给一个超大型机构,而将IPv4 C类地址分配给一个中型企业。

【1】与IPV4相比,IPV6具有以下优势:
- IPv6具有更大的地址空间
IPv4中规定IP地址长度为32,即有2^32-1(符号^表示升幂,下同)个地址;而IPv6中IP地址的长度为128,即有2^128-1个地址。 - IPv6使用更小的路由表
IPv6的地址分配一开始就遵循聚类(Aggregation)的原则,这使得路由器能在路由表中用一条记录(Entry)表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。 - IPv6增加了增强的组播(Multicast)支持以及对流的支持(Flow Control)
使得网络上的多媒体应用有了长足发展的机会,为服务质量(QoS,Quality of Service)控制提供了良好的网络平台。 - IPv6加入了对自动配置(Auto Configuration)的支持
对DHCP协议的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷。 - IPv6具有更高的安全性
在使用IPv6网络中,用户可以对网络层的数据进行加密,并对IP报文进行校验,极大增强了网络安全性。
IPv6地址和IPv4地址对比

【2】IPv6地址介绍
IPv6地址长度为128位,是IPv4地址长度的4倍。IPv4点分十进制格式不再适用,IPv6采用十六进制表示。
IPv6地址用冒号分隔为8段,每一段16位,每一段用十六进制表示。

与IPv4地址类似,IPv6也用"IPv6地址/掩码长度"的方式来表示IPv6地址,例如:
2001:0db8:85a3:08d3:1319:8a2e:0370:7344/64
【2.1】IPv6的3种表示方法
【2.1.1】冒号分隔(简称:冒分)十六进制表示法
格式为X:X:X:X:X:X:X:X,其中每个X表示地址中的16bit(16位二进制数),以十六进制表示,例如:
ABCD:EF01:2345:6789:ABCD:EF01:2345:6789/64
这种表示法中,每个X的前导0是可以省略的,例如:
2001:0DB8:0000:0023:0008:0800:200C:417A >> 2001:DB8:0:23:8:800:200C:417A
【2.1.2】0位压缩表示法
有时候一个IPv6地址中间可能连续多个0,可以把连续的一段0压缩为“::”。但为保证地址解析的唯一性,地址中”::”只能出现一次,例如:
FF01:0:0:0:0:0:0:1101>>FF01::1101
0:0:0:0:0:0:0:1 >> ::1
0:0:0:0:0:0:0:0 >> ::
【2.1.3】内嵌IPv4地址表示法
IPv4地址会嵌入IPv6地址中,表示格式为:X:X:X:X:X:X:d.d.d.d,即IP地址前96位采用IPv6冒分十六进制表示,IP地址最后32位使用IPv4点分十进制表示,例如:
::192.168.0.1
::FFFF:192.168.0.1
注意在前96位,前导0省略和压缩0位的方法依旧适用。
【2.2】IPv6地址结构
IPv6地址分为如下两部分:网络前缀+接口标识
- 网络前缀:nbit,相当于IPv4地址中的网络ID
- 接口标识:(128 - n)bit,相当于IPv4地址中的主机ID
示例:
2001:0DB8:6101:0001:5ED9:98FF:FECA:A298/64

【2.2.1】IPv6地址前缀
鉴于IPv4地址在规划和分配上的局限性,IETF对IPv6地址类型进行了精细划分,不同类型的IPv6地址被赋予了不同的前缀,且受地址分配机构的严格管理。
现阶段常用的IPv6地址或前缀
| 特定前缀IPv6地址 | 含义 |
| 2001::/16 | 用于IPv6 Internet,类似于IPv4公网地址 |
| 2002::/16 | 用于6to4隧道 |
| FE80::/10 | 链路本地地址前缀,用于本地链路范围内的通信 |
| FF00::/8 | 组播地址前缀,用于IPv6组播 |
| ::/128 | 未指定地址,类似于IPv4中的0.0.0.0 |
| ::1/128 | 环回地址,类似于IPv4中的127.0.0.1 |
【2.2.2】IPv6地址接口标识
接口ID可以通过三种方式生成:
- 手工配置
- 系统自动生成
- 基于IEEE EUI-64规范生成
基于IEEE EUI-64的规范生成IPv6接口标识

转换算法:将第7位取反,即0变为1,或者1变为0,在MAC地址的中间(24bit处)插入两个字节:FFFE。
【3】IPv6地址分类
IPv6协议主要定义了三种地址类型:单播地址(Unicast Address)、组播地址(Multicast Address)和任播地址(Anycast Address)。
单播地址:用来唯一标识一个接口,发送到单播地址的数据报文将被传送给此地址所标识的一个接口。
组播地址:用来标识一组接口(通常这组接口属于不同的节点),发送到组播地址的数据报文被传送给此地址所标识的所有接口。
任播地址:用来标识一组接口(通常这组接口属于不同的节点),发送到任播地址的数据报文被传送给此地址所标识的一组接口中距离源节点最近(根据使用的路由协议进行度量)的一个接口。
IPv6地址类型是由地址前缀部分来确定,主要地址类型与地址前缀的对应关系如下:
| 地址类型 | 地址前缀(二进制) | IPv6前缀标识 | |
| 单播地址 | 未指定地址 | 00…0(128 bits) | ::/128 |
| 环回地址 | 00…1(128 bits) | ::1/128 | |
| 链路本地地址 | 1111 1110 10 | FE80::/10 | |
| 唯一本地地址 | 1111 110 | FC00::/7(包括FD00::/8和不常用的FC00::/8) | |
| 站点本地地址(已弃用,被唯一本地地址代替) | 1111 1110 11 | FEC0::/10 | |
| 全局单播地址 | 其他形式 | - | |
| 组播地址 | 1111 1111 | FF00::/8 | |
| 任播地址 | 从单播地址空间中进行分配,使用单播地址的格式 | ||
【3.1】单播地址
IPv6单播地址包括四个类型:全局单播地址、本地单播地址、兼容性地址、特殊地址。
【3.1.1】全局单播地址(GUA---Global Unicast Address)
也被成为可聚合全球单播地址,相当于IPv4中的公网地址,用于IPv6 Internet上进行全局路由和访问。这种地址类型允许路由前缀的聚合,从而限制了全球路由表项的数量。
注:由于全局单播地址前3bit固定为001,因此全球单播地址在用冒分十六进制表示时,是以2000或3000开头,如,2000:X:X:X:X:X:X:X或者3000:X:X:X:X:X:X:X
【3.1.2】本地单播地址
链路本地地址和唯一本地地址都属于本地单播地址,在IPv6中,本地单播地址就是指本地网络使用的单播地址。每个接口上至少要有一个链路本地单播地址,另外还可分配任何类型(单播、任播和组播)或范围的IPv6地址。
【3.1.2.1】链路本地地址(LLA---Link-Local Address)
链路本地地址网络前缀为FE80::/10,仅用于单个链路(链路层不能跨网段),不能在不同子网中路由。结点使用链路本地地址与在同一个链路上的相邻结点进行通信。例如,在没有路由器的单链路IPv6网络上,主机使用链路本地地址与该链路上的其他主机进行通信。
注:由于链路本地地址前10bit固定为1111 1110 10,因此链路本地地址在用冒分十六进制表示时,是以FE8、FE9、FEA和FEB开头,如,FE80:X:X:X:X:X:X:X、FE90:X:X:X:X:X:X:X、FEA0:X:X:X:X:X:X:X或者FEB0:X:X:X:X:X:X:X
【3.1.2.2】唯一本地地址(ULA---Unique Local Address)
唯一本地地址网络前缀为FC00::/7,是IPv6私网地址,只能够在内网中使用。该地址空间在IPv6公网中不可路由,因此不能用于访问公网(Internet)。
注:由于唯一本地地址前7bit固定为1111 110,因此唯一本地地址在用冒分十六进制表示时,是以FC或FD开头,如,FC00:X:X:X:X:X:X:X或者FD00:X:X:X:X:X:X:X
【3.2】组播地址
IPv6组播地址可识别多个接口,对应于一组接口的地址(通常分属不同节点)。发送到组播地址的数据包被送到由该地址标识的每个接口。使用适当的组播路由拓扑,将向组播地址发送的数据包发送给该地址识别的所有接口。任意位置的IPv6节点可以侦听任意IPv6组播地址上的组播通信。IPv6节点可以同时侦听多个组播地址,也可以随时加入或离开组播组。
IPv6组播地址q前8位固定为1111 1111,即以FF开始的IPv6地址为组播地址。
组播地址由前缀(FF::/8)、标志(Flag)字段、范围(Scope)字段以及组播组ID(Group ID)4个部分组成。最后112位为组ID( Group ID ),标识不同的组播组,前面的80位为0 ,只使用最后32位。

Flags(标记):第一位为零,格式为|0|r|p|t|,通常0000或者0001。
- r位:取0表示内嵌RP,取1表示内嵌RP。
- p位:取0表示非基于单播前缀的组播地址,取1表示基于单播前缀的组播地址。
- t位:取0表示永久分配组播地址,取1表示临时分配组播地址。
Scope(范围):4bit,标识传播范围。
- 0001 node(节点):本地接口范围,仅用于Lookback。
- 0010 link(链路):本地链路范围。
- 0101 Site(站点):本地站点范围。
发送组播数据包通常是单台设备,可以是组播组成员,也可以是其它主机,数据包的目的地址是组播地址。
被请求节点组播地址:当一个节点具有了单播和任播地址,就会对应生成一个被请求节点组播地址,并且加入这个组播组。该地址主要用于邻居发现机制和地址重复检测功能。被请求节点组播地址的有效范围为本地链路范围。被请求节点组播地址格式如下:

被请求节点组播地址的前104位是固定的,后24位根据单播地址的后24来进行填充。
例如:全球单播地址:2001:172:16:12::1
对应被请求节点组播地址为:FF02::1:FF00:01
其中FF02::1表示所有主机,FF02::2表示所有路由器。
如下示例:
PC1发送数据至PC2前,首先需要获取其MAC地址。PC1将发起类似IPv4中ARP的解析流程,IPv6使用ICMPv6的NS和NA报文来实现地址解析过程,NS报文的目的IPv6地址为目标IPv6单播地址对应的被请求节点组播地址。

组播IPv6报文的目的IP为组播IPv6地址,同样,目的MAC为组播MAC地址。组播MAC的前16bit为"33:33",是专门为IPv6组播预留的MAC地址前缀。后32bit从组播IPv6地址的后32bit直接映射而来。

【3.3】任播地址
在IPv6中没有广播的概念,但是有任播地址,它的范围和全球单播地址一致,只不过可以重复配置,无法根据地址判断是单播地址还是任意播地址。通过合适的路由拓扑,目的地址为任播地址的数据包将被发送到单个接口(该地址识别的最近接口,最近接口定义的根据是路由距离最近,而且当最近的路由器故障时,根据路由指向下一台最近的路由器。),一个任播地址绝不能用作IPv6数据包的源地址;也不能分配给IPv6主机,仅可以分配给IPv6路由器 。


【4】IPv6报文结构
IPv6报文一般由三个部分组成:
- 基本报头:提供报文转发的基本消息,路由器通过解析基本报头就能完成绝大多数额报文转发任务(长度固定为40字节)
- 扩展报头:提供一些扩展的报文转发信息,如分段、加密等,该部分不是必需的,也不是每个路由器都需要处理,仅当需要路由器或目的节点做某些特殊处理时,才由发送方添加一个或多个扩展头
- 上层协议数据单元:一般由上层协议报头和它的有效载荷构成,该部分与IPv4上层协议数据单元相似

【4.1】IPv6基本报头

| 版本号 | 表示协议版本,值为6 |
| 流量类别 | 主要用于QoS |
| 流标签 | 用来标识同一个流里面的报文 |
| 载荷长度 | 包含扩展报头和数据部分的长度,最多可表示65535字节数,超过则置为0 |
| 下一报头 | 该字段用来指明报头后接的报文头部的类型,若存在扩展头,表示第一个扩展头的类型,否则表示其上层协议的类型,它是IPv6各种功能的核心实现方法 |
| 跳数限制 | 该字段类似于IPv4中的TTL,每次转发跳数减一,该字段达到0时包将会被丢弃 |
| 源地址 | 标识该报文的来源地址 |
| 目的地址 | 标识该报文的目的地址 |
【4.2】IPv6扩展报头

- Extension Header Length:扩展报头长度,长度为8bit。表示扩展报头的长度(不包含Next Header字段)
- Extension Header Data:扩展报头数据,长度可变。扩展报头的内容,为一系列选项字段和填充字段的组合

- 逐跳选项报头:该扩展报头被每一条处理,可包含多种选项,如路由器告警选项
- 目的选项报头:目的地处理,可包含多种选项,如Mobile IPv6的家乡地址选项
- 路由报头:指定源路由,类似IPv4 源路由选项,IPv6源节点用来指定信息报到达目的地的路径上所必须经过的中间节点。IPv6基本报头的目的地址不是分组的最终目的地址,而是路由扩展头中所列的第一个地址
- 分段报头:IP报文分片信息,只由目的地处理
- 认证报头:IPsec用扩展头,只由目的地处理
- 封装安全净载报头:IPsec用扩展头,只由目的地处理
相关文章:
IPv6知识点整理
IPv6:是英文“Internet Protocol Version 6”(互联网协议第6版)的缩写,是互联网工程任务组(IETF)设计的用于替代IPv4的下一代IP协议,其地址数量号称可以为全世界的每一粒沙子编上一个地址 。 国…...
数据赋能(127)——体系:数据标准化——概述、关注焦点
概述 数据标准化是指将数据按照一定的规范和标准进行处理的过程。 数据标准化是属于数据整理过程。 数据标准化的目的在于提高数据的质量、促进数据的共享和交互、降低数据管理的成本,并增强数据的安全性。通过数据标准化,可以使得数据具有统一的格式…...
【 ARMv8/ARMv9 硬件加速系列 3.5.1 -- SVE 谓词寄存器有多少位?】
文章目录 SVE 谓词寄存器(predicate registers)简介SVE 谓词寄存器的位数SVE 谓词寄存器对向量寄存器的控制SVE 谓词寄存器位数计算SVE 谓词寄存器小结 SVE 谓词寄存器(predicate registers)简介 ARMv9的Scalable Vector Extension (SVE) 引入了谓词寄存器(Predica…...
Python - 调用函数时检查参数的类型是否合规
前言 阅读本文大概需要3分钟 说明 在python中,即使加入了类型注解,使用注解之外的类型也是不报错的 def test(uid: int):print(uid)test("999")但是我就想要类型不对就直接报错确实可以另辟蹊径,实现报错,似乎有强…...
Python基础面试题解答
Python基础面试题解答 基础语法 1. Python中的变量是如何管理内存的? Python中的变量通过引用计数来管理内存。当一个变量被创建时,会分配一个内存地址,并记录引用次数。当引用次数变为0时,垃圾回收机制会自动释放该内存。 2.…...
MATLAB直方图中bin中心与bin边界之间的转换
要将 bin 中心转换为 bin 边界,请计算 centers 中各连续值之间的中点。 d diff(centers)/2; edges [centers(1)-d(1), centers(1:end-1)d, centers(end)d(end)];要将 bin 边界转换为bin 中心 bincenters binedges(1:end-1)diff(binedges)/2;...
Chromium 开发指南2024 Mac篇-开始编译Chromium(五)
1.引言 在之前的指南中,我们已经详细介绍了在 macOS 上编译和开发 Chromium 的准备工作。您学会了如何安装和配置 Xcode,如何下载和配置 depot_tools,以及如何获取 Chromium 的源代码。通过这些步骤,您的开发环境已经搭建完毕&am…...
2024.06.11校招 实习 内推 面经
绿*泡*泡VX: neituijunsir 交流*裙 ,内推/实习/校招汇总表格 1、校招 | 美团2025届北斗计划正式启动(内推) 校招 | 美团2025届北斗计划正式启动(内推) 2、实习 | 沃尔沃汽车 Open Day & 实习招聘 …...
linux 免密备份文件到另外一台服务器
简单说,A服务器备份到B服务器。就是将A服务器的文件复制传输到B服务器进行备份。这种场景可以应用到简单的定时器自动备份数据文件。 具体步骤: 1、A服务器上执行以下命令并一直按回车键,然后在/root/.ssh目录中可以看到私钥和公钥。其中id…...
【html】用html写一个博物馆首页
效果图: 二级导航: 源码: <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><l…...
【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【13】压力压测JMeter-性能监控jvisualvm
持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【13】压力压测JMeter-性能监控jvisualvm 压力测试概述性能指标 JMeter基本使用添加线程组添加 HTTP 请求添加监听器启动压测&查看分析结果JMeter Address Already in use 错误解决 性…...
【python】python海底捞门店营业数据分析与可视化(数据集+源码+论文)【独一无二】
👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…...
利用机器学习弄懂机器学习!
第一个问题:什么是机器学习? 机器学习是人工智能的一个子领域,它使计算机系统能够从经验中学习并改进其性能(和人一样,人也是从经验当中,实现自己的不断地学习和提升)。简单来说,机…...
Ubuntu22.04系统安装及配置
文章目录 一、选择“安装” 二、选择“语言” 三、安装器更新 四、键盘布局 五、选择安装类型 六、网络配置 七、代理设置 八、镜像地址 九、磁盘划分 十、设置用户名、主机名、登录密码 十一、升级到Ubuntu Pro 十二、SSH设置 十三、选装软件包 十四、开始安装进…...
抖音多功能全自动引流工具,支持评论关注私信留痕点赞等,让你的抖音粉丝暴涨!
随着短视频行业的火爆,越来越多的人开始关注抖音这个平台。然而,如何在抖音上获得更多的关注和粉丝,成为了许多人面临的难题。为了帮助大家解决这个问题,今天我们将为大家推荐一款抖音多功能全自动引流脚本,这款脚本可…...
day3-xss漏洞(米斯特web渗透测试)
day3-xss漏洞(米斯特web渗透测试) XSSXss种类三种反射型1.反射型xss2.存储型xss3.DOM型xss XSS Xss有一部分是前端的有一部分不是前端的,我们来看一下,昨天的HTML注入修复方法应灵活使用。 HTML注入是注入一段HTML,那…...
HTML中的<iframe>标签及其属性
<iframe>标签在HTML中用于嵌入另一个HTML页面。它提供了一种在当前页面内展示外部内容的方式,而无需离开当前页面。以下是<iframe>的一些常用属性: src:指定要嵌入的页面的URL。width 和 height:设置iframe的尺寸。n…...
Elastisearch集群(单节点)
目录 一、文件下载 二、创建linux es用户 三、上传、解压canal、es、kibana 四、配置es通讯证书(生成证书给es配置使用) 五、配置elastisearch 六、修改系统配置 七、添加ik分词器支持(可选) 八、给文件赋值权限 九、设置…...
Vue78-缓存路由组件
一、需求 路由切走的时候,组件会被销毁,路由切回来,组件被挂载! 需要:路由切走的时候,组件不会被销毁。 二、代码实现 若是不加include属性,则在<router-view>里面展示的路由,…...
windows设置开机启动项
将文件放到下面路径即可实现每次开机启动 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup...
告别龟速采样!用DDIM加速你的扩散模型推理(附PyTorch代码)
加速扩散模型推理:DDIM核心原理与实战优化指南 在图像生成领域,扩散模型以其卓越的质量表现迅速成为研究热点,但传统DDPM(Denoising Diffusion Probabilistic Models)的致命缺陷在于其缓慢的采样速度——生成一张图片往…...
别再依赖SDK了!手把手教你用OpenCV和Eigen从零实现RGB-D相机对齐(附完整C++代码)
从零实现RGB-D相机对齐:OpenCV与Eigen实战指南 在计算机视觉领域,RGB-D相机的深度与彩色图像对齐(D2C)是一个基础但至关重要的技术环节。虽然市面上大多数商用RGB-D相机都提供了现成的SDK和API来实现这一功能,但对于真…...
手把手教你用三菱FX3U PLC的RS指令和RS2指令与电脑串口调试助手‘对话’
三菱FX3U PLC串口通信实战:从零搭建RS485数据收发系统 第一次接触工业控制系统的串口通信时,我被那些密密麻麻的接线和晦涩的协议参数弄得晕头转向。直到在自动化生产线上亲眼看到PLC通过两根电线与十几台设备稳定通信,才意识到串口技术的精妙…...
Java 大厂面试 200 题完整版含答案解析
前言本文整理了近两年从阿里、腾讯、字节、美团、京东、拼多多等大厂面试中高频出现的 200 道 Java 面试题,覆盖 Java 基础、集合、并发、JVM、Spring、MySQL、Redis、消息队列、分布式、场景设计 等核心模块,每题都附有简明扼要的答案解析,助…...
STM8硬件IIC驱动BNO055传感器避坑指南(附完整代码)
STM8硬件IIC驱动BNO055传感器实战解析与优化 BNO055作为一款集成了9轴传感器融合算法的智能芯片,能够直接输出姿态角数据,极大简化了嵌入式系统中姿态解算的复杂度。然而在实际应用中,许多开发者发现使用STM32等常见MCU的模拟IIC接口难以稳定…...
Windows鼠标指针主题定制:从.cur/.ani文件到个性化交互体验
1. 项目概述:一个为Windows终端注入灵魂的鼠标指针主题如果你和我一样,每天有超过8小时的时间是与Windows操作系统相伴的,那么你对那个千篇一律的白色箭头鼠标指针,恐怕早已感到审美疲劳。它就像一个沉默的、功能性的背景板&#…...
AI全栈开发实战:基于Cursor的智能代码生成与架构设计
1. 项目概述:当AI代码助手遇上全栈开发最近在GitHub上看到一个挺有意思的项目,叫“Cursor-FullStack-AI-App”。光看名字,你大概能猜到它和Cursor这个AI代码编辑器有关,并且涉及全栈应用开发。但它的价值远不止于此。作为一个在前…...
Claude模型思维链评估框架claweval:原理、实战与高级定制指南
1. 项目概述:一个专为Claude模型设计的“思维链”评估框架最近在AI应用开发圈里,一个名为claweval的项目开始被频繁提及。如果你正在使用Anthropic的Claude系列模型(无论是Claude 3 Opus、Sonnet还是Haiku)来构建需要复杂推理能力…...
面向开发者的轻量级计划管理工具:配置驱动与命令行优先
1. 项目概述:一个为开发者而生的计划管理工具在软件开发的世界里,我们每天都在与各种“计划”打交道:版本迭代计划、个人学习计划、项目里程碑、甚至是每日的待办清单。然而,一个尴尬的现实是,市面上大多数项目管理工具…...
Golioth Firmware SDK:物联网设备连接与管理的开源解决方案
1. 项目概述:Golioth Firmware SDK 是什么?如果你正在开发物联网设备,尤其是那些需要稳定连接到云端、进行远程管理、固件更新和数据同步的设备,那么你一定对“设备管理”和“连接复杂性”这两个词深有体会。自己从头搭建一套稳定…...
