IPv6 地址创建 EUI-64 格式接口 ID 的过程

news2024/9/19 22:18:34

IPv6 接口标识符

IPv6 地址中的接口标识符(ID)用于识别链路上的唯一接口,有时被称为 IPv6 地址的 “主机部分”。接口 ID 在链路上必须是唯一的,始终为 64 位长,并且可以根据数据链路层地址动态创建。

MAC 地址 中的 L/G 位(有时也称为 U/L 位)和 I/G 位都位于每个 MAC 地址的最高有效字节中,其中 I/G 位是该字节中最低有效位,L/G 位是该字节中第二低有效位。

IG 位区分 MAC 地址是单播地址还是组播地址。I/G 位为 0 表示是单播地址,I/G 位为 1 表示是组播地址。

U/L 位指示接口 ID 是本地唯一(仅在该链路上)还是全局(全球)唯一;从全球唯一 MAC 地址派生的 ID 被认为是全局唯一的。
接口 ID 的第一个字节中的第八位是用于管理多播组的 I/G 位;它不会改变。

在绝大多数情况下(广播消息除外),会看到两个位都设置为 0(单播和供应商分配)。
在这里插入图片描述

EUI-64 格式接口 ID 生成过程

接口的数据链路层类型决定了 IPv6 接口 ID 的动态创建方式以及地址解析的工作方式。

以太网中的 EUI-64 格式接口 ID 是通过在 MAC 地址的组织唯一标识符 OUI 字段(前三个字节) 和在供应商代码 EUI 字段(后三个字节)之间插入十六进制数 FFFE ,并在 OUI 字段最高有效字节中翻转 U/L 位与网络前缀结合派生的。
翻转 U/L 位

原 U/L 位如果是 0(表示全局唯一),则转换为 1;如果是 1(表示本地管理),则转换为 0。

插入 FFFE

在翻转后的 MAC 地址 OUI 字段和 EUI 字段之间插入十六进制数 FFFE,使原来的 48 位 MAC 地址扩展到 64 位。

生成接口 ID

将从 48 位 MAC 地址扩展得到的 64 位字段与网络前缀结合形成完整的 EUI-64 格式的接口 ID 地址。

3 张图 3 个角度 一目了然的图解

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

EUI-64 在 IPv6 无状态自动配置(SLAAC)中的作用

在无状态自动配置过程中,每个 IPv6 设备利用 EUI-64 方法自动生成其接口 ID,同时通过监听RA(Router Advertisement,路由器通告)消息来获取网络前缀。RA 消息包含了网络的前缀信息以及其他配置参数。设备将获取到的前缀与自己生成的接口 ID 结合,就可以得到一个全局唯一的 IPv6 地址,无需任何人工干预或 DHCP 服务器的支持。

  • 下文《MAC 地址格式详解》引自 51cto 刘长卿 2016-04-02

MAC 地址格式详解

MAC(Medium Access Control,介质访问控制),它通常被固化在每个 NIC(Network Interface Card,以太网网卡)。MAC 地址长 48 位(6 字节),采用十六进制格式。

24 位 OUI(组织唯一标识符)由 IEEE(电气和电子工程师协会)分配给厂商,厂商再用其他的 24 位 EUI(扩展唯一标识符)为其生产的每个网卡分配一个全球唯一的全局管理地址 。
在这里插入图片描述

I / G( Individual / Group )

如果 I/G = 0,则是某台设备的 MAC 地址,即单播地址;如果 I/G = 1,则是多播地址(组播 + 广播 = 多播)。

G / L( Global / Local,也称为 U/L 位,其中 U 表示 Universal )
如果 G/L = 0,则是全局管理地址,由 IEEE 分配;如果 G/L = 1,则是本地管理地址,是网络管理员为了加强自己对网络管理而指定的地址。

在数据链路层,数据帧通常依赖于 MAC 地址来进行数据交换。数据传输是按字节逐位传输的,一个字节传输完了才到下一个字节。对于 I/G 和 G/L 位的位置,目前有两种说法,或者说两种格式。
在这里插入图片描述

第一种,每个字节的高位在前,低位在后,I/G 位和 G/L 分别在字节中的最低位和次低位,最高位先发送,到了对端还是最高位

第二种,每个字节的低位在前,高位在后,I/G 位和 G/L 分别在字节中的最低位和次低位,最低位先发送,到了对端还是最低位

两种看似不一样,但是结果还是一样的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1693888.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++项目】实时聊天的在线匹配五子棋对战游戏

目录 项目介绍 开发环境 核心技术 项目前置知识点介绍 Websocketpp 1. WebSocket基本认识 2. WebSocket协议切换原理解析 3. WebSocket报文格式 4. Websocketpp介绍 5. 搭建一个简单WebSocket服务器 JsonCpp 1. Json格式的基本认识 2. JsonCpp介绍 3. 序列化与反序…

在ubuntu中关于驱动得问题:如何将nouveau驱动程序加入黑名单和安装NVIDIA显卡驱动

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、nouveau驱动程序加入黑名单二、安装NVIDIA显卡驱动 一、nouveau驱动程序加入黑名单 (1) 打开黑名单列表文件 终端输入: sudo gedit /etc/modprobe…

CCF20230501——重复局面

CCF20230501——重复局面 代码如下&#xff1a; #include<bits/stdc.h> using namespace std; int main() {int n;cin>>n;char a[101][64];int i,j;for(i0;i<n;i){for(j0;j<64;j){cin>>a[i][j];}}int temp0,flag1;for(i0;i<n;i){flag1;for(j0;j<…

Linux程序开发(十二):线程与多线程同步互斥实现抢票系统

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…

Mongodb分布式id

1、分布式id使用场景 分布式ID是指在分布式系统中用于唯一标识每个元素的数字或字符串。在分布式系统中&#xff0c;各个节点或服务可能独立运行在不同的服务器、数据中心或地理位置&#xff0c;因此需要一种机制来确保每个生成的ID都是全局唯一的&#xff0c;以避免ID冲突。 …

Pytorch线性模型(Linear Model)

基本步骤 ①首先准备好数据集&#xff08;DataSet&#xff09; ②模型的选择或者设计&#xff08;Model&#xff09; ③进行训练&#xff08;Train&#xff09;大部分模型都需要训练&#xff0c;有些不需要。这一步后我们会确定不同特征的权重 ④推理&#xff08;inferring…

就业班 第三阶段(ELK) 2401--5.20 day1 ELK 企业实战 ES+head+kibana+logstash部署(最大集群)

ELKkafkafilebeat企业内部日志分析系统 1、组件介绍 1、Elasticsearch&#xff1a; 是一个基于Lucene的搜索服务器。提供搜集、分析、存储数据三大功能。它提供了一个分布式多用户能力的全文搜索引擎&#xff0c;基于RESTful web接口。Elasticsearch是用Java开发的&#xff…

学习单向链表带哨兵demo

一、定义 在计算机科学中&#xff0c;链表是数据元素的线性集合&#xff0c;其每个元素都指向下一个元素&#xff0c;元素存储上并不连续。 1.可以分三类为 单向链表&#xff0c;每个元素只知道其下一个元素是谁 双向链表&#xff0c;每个元素知道其上一个元素和下一个元素 …

mySql从入门到入土

基础篇 在cmd中使用MYSQL的相关指令&#xff1a; net start mysql // 启动mysql服务 net stop mysql // 停止mysql服务 mysql -uroot -p1234//登录MYSQL&#xff08;-u为用户名-p为密码&#xff09; //登录参数 mysql -u用户名 -p密码 -h要连接的mysql服务器的ip地址(默认1…

记一次安卓“Low on memory“崩溃问题

前言 最近再调人脸识别算法相关demo,发现调试期间总是偶发性崩溃&#xff0c;捕获不到异常的那种&#xff0c;看日志发现原因是Low on memory&#xff0c;一开始还疑惑 App内存不够应该是OOM啊,怎么会出现这种问题&#xff0c;百思不得其解&#xff0c;直到我打开了 Android s…

Git 仓库中 -- 代码冲突产生、定位、解决的流程

目录 前置知识1 工具环境2 冲突的产生2.1 仓库中的源代码2.2 人员 A 首先更改代码2.3 人员 B 更改代码&#xff0c;产生冲突2.3.1 第一次错误提示&#xff1a;2.3.2 第二次错误提示&#xff1a; 3 查看冲突4 手动解决冲突4.1 方式一4.2 方式二&#xff08;tortoisegit&#xff…

Vitis HLS 学习笔记--控制驱动任务示例

目录 1. 简介 2. 代码解析 2.1 kernel 代码回顾 2.2 功能分析 2.3 查看综合报告 2.4 查看 Schedule Viewer 2.5 查看 Dataflow Viewer 3. Vitis IDE的关键设置 3.1 加载数据文件 3.2 设置 Flow Target 3.3 配置 fifo 深度 4. 总结 1. 简介 本文对《Vitis HLS 学习…

CSAPP(datalab)解析

howManyBits /* howManyBits - 返回用二进制补码表示x所需的最小位数* 示例: howManyBits(12) 5* howManyBits(298) 10* howManyBits(-5) 4* howManyBits(0) 1* howManyBits(-1) 1* howManyBits(0x80000000) …

【Linux】TCP协议【上】{协议段属性:源端口号/目的端口号/序号/确认序号/窗口大小/紧急指针/标记位}

文章目录 1.引入2.协议段格式4位首部长度16位窗口大小32位序号思考三个问题【demo】标记位URG: 紧急指针是否有效提升某报文被处理优先级【0表示不设置1表示设置】ACK: 确认号是否有效PSH: 提示接收端应用程序立刻从TCP缓冲区把数据读走RST: 对方要求重新建立连接; 我们把携带R…

【C++】详解AVL树——平衡二叉搜索树

个人主页&#xff1a;东洛的克莱斯韦克-CSDN博客 祝福语&#xff1a;愿你拥抱自由的风 目录 二叉搜索树 AVL树概述 平衡因子 旋转情况分类 左单旋 右单旋 左右双旋 右左双旋 AVL树节点设计 AVL树设计 详解单旋 左单旋 右单旋 详解双旋 左右双旋 平衡因子情况如…

远程工作的数据安全挑战和解决策略

随着远程工作的普及&#xff0c;数据安全面临了前所未有的挑战。企业在应对这些挑战时&#xff0c;必须采取切实有效的策略来保护敏感信息。以下是远程工作数据安全的主要挑战和相应的解决策略&#xff1a; 数据安全挑战 设备丢失或被盗&#xff1a;员工在外工作时&#xff0c…

从 0 开始本地部署大语言模型

1、准备 ● Ollama&#xff1a;ollama.com ● Docker&#xff1a;https://docs.openwebui.com/ 2、下载 Ollama 进入 Ollama 官网&#xff0c;点击 Download 。 下载完成后&#xff0c;双击安装&#xff0c;什么都不需要勾选&#xff0c;直接下一步即可。安装完成&#xf…

算法之堆排序

堆排序是一种基于比较的排序算法&#xff0c;通过构建二叉堆&#xff08;Binary Heap&#xff09;&#xff0c;可以利用堆的性质进行高效的排序。二叉堆是一个完全二叉树&#xff0c;可以有最大堆和最小堆两种形式。在最大堆中&#xff0c;父节点的值总是大于或等于其子节点的值…

【TB作品】stm32单片机读取DS2401程序

DS2401是由Analog Devices公司生产的一种硅序列号芯片&#xff0c;它提供了一个绝对唯一的64位ROM识别码&#xff0c;用于确保可追溯性。以下是对DS2401器件的分析&#xff1a; 特点和优势&#xff1a; 唯一性&#xff1a;每个DS2401芯片都有一个独一无二的64位注册码&#x…

Redis机制-Redis缓存穿透,击穿,雪崩理解等问题的理解和学习

目录 一 缓存穿透问题 二 缓存击穿问题 三 缓存雪崩问题&#xff1a; 图1 正常的Redis缓存流程 一 缓存穿透问题 我们都知道Redis是一个存储键值对的非关系型数据库&#xff0c;那么当用户进行查询的时候&#xff0c;势必会从前端发起请求&#xff0c;从而数据从Redis缓存…