计算机网络-IPv6

1、IPv6基础

IPv4与IPv6的对比:

问题IPv4的缺陷IPv6的优势
地址空间IPv4地址采用32比特标识,能提供的地址数量是43亿,分配很不均衡。针对IPv4的地址短缺问题,有几种解决方案:无类别域间路由CIDR(Classless Inter-Domain Routing)和网络地址转换NAT(Network Address Translator)。IPv6地址采用128比特标识,理论上可以拥有(43亿×43亿×43亿×43亿)个地址。
报文格式IPv4报头包含可选字段Options,内容涉及Security、Timestamp、Record route等,这些Options可以将IPv4报头长度从20字节扩充到60字节。携带这些Options的IPv4报文对于性能是个很大的消耗IPv6和IPv4相比,去除了IHL、Identifier、Flag、Fragment Offset、Header Checksum、 Option、Padding域,只增加了流标签域,更为简化,提高了处理效率。为了更好支持各种选项处理,提出了扩展头,新增选项时不必修改现有结构,理论上可以无限扩展,体现了优异的灵活性。
自动配置和重新编址IPv4的自动配置和重新编址机制主要依靠DHCP协议。IPv6协议内置支持通过地址自动配置方式使主机自动发现网络并获取IPv6地址,大大提高了内部网络的可管理性。
路由聚合IPv4的分配规划问题造成许多地址分配不连续,不能有效聚合路由。这一问题促使设备制造商不断升级其产品,以提高路由寻址和转发性能。巨大的地址空间使得IPv6可以方便的进行层次化网络部署。层次化的网络结构可以方便的进行路由聚合,提高了路由转发效率。
对端到端的安全的支持固有的框架结构并不能支持端到端的安全。网络层支持IPSec的认证和加密,支持端到端的安全。
对QoS(Quality of Service)的支持QoS保障音视频实时转发。IPv4并没有专门的手段对QoS进行支持。IPv6新增了流标记域,提供QoS保证。
对移动特性的支持随着Internet的发展,移动IPv4出现了一些问题,比如:三角路由,源地址过滤等。IPv6协议规定必须支持移动特性。和移动IPv4相比,移动IPv6使用邻居发现功能可直接实现外地网络的发现并得到转交地址,而不必使用外地代理。同时,利用路由扩展头和目的地址扩展头移动节点和对等节点之间可以直接通信,解决了移动IPv4的三角路由、源地址过滤问题,移动通信处理效率更高且对应用层透明。

IPv6地址结构:

        IPv6地址总长度为128比特,通常分为8组,每组为4个十六进制数的形式,每组十六进制数间用冒号分隔。

一个IPv6地址可以分为如下两部分:

  • 网络前缀:n比特,相当于IPv4地址中的网络ID

  • 接口标识:128-n比特,相当于IPv4地址中的主机ID

对于IPv6单播地址来说,如果地址的前三bit不是000,则接口标识必须为64位;如果地址的前三位是000,则没有此限制。

        接口标识可通过三种方法生成:手工配置、系统通过软件自动生成或IEEE EUI-64规范生成。其中,EUI-64规范自动生成最为常用。

FC00:0000:130F:0000:0000:09C0:876A:130B

压缩格式:

  • 每组中的前导“0”都可以省略,所以上述地址可写为:FC00:0:130F:0:0:9C0:876A:130B。

  • 地址中包含的连续两个或多个均为0的组,可以用双冒号“::”来代替,所以上述地址又可以进一步简写为:FC00:0:130F::9C0:876A:130B。

  • 在一个IPv6地址中只能使用一次双冒号“::”,否则当计算机将压缩后的地址恢复成128位时,无法确定每个“::”代表0的个数。

IPv6地址分类:

        IPv6地址分为单播地址、任播地址(Anycast Address)、组播地址三种类型。和IPv4相比,取消了广播地址类型,以更丰富的组播地址代替,同时增加了任播地址类型。

1、单播地址:

IPv6单播地址标识了一个接口,由于每个接口属于一个节点,因此每个节点的任何接口上的单播地址都可以标识这个节点。发往单播地址的报文,由此地址标识的接口接收。

常用的单播地址有:未指定地址、环回地址、全球单播地址、链路本地地址、唯一本地地址ULA(Unique Local Address)。

        1、未指定地址

        IPv6中的未指定地址即 0:0:0:0:0:0:0:0/128 或者::/128。表示某个接口或者节点还没有IP地址,源IP地址是::的报文不会被路由设备转发。

        2、环回地址

        IPv6中的环回地址即 0:0:0:0:0:0:0:1/128 或者::1/128。环回与IPv4中的127.0.0.1作用相同,主要用于设备给自己发送报文。该地址通常用来作为一个虚接口的地址(如Loopback接口)。

        3、全球单播地址

        全球单播地址是带有全球单播前缀的IPv6地址,其作用类似于IPv4中的公网地址。这种类型的地址允许路由前缀的聚合,从而限制了全球路由表项的数量。

        全球单播地址由全球路由前缀(Global routing prefix)、子网ID(Subnet ID)和接口标识(Interface ID)组成。

全球路由前缀:由提供商(Provider)指定给一个组织机构,通常全球路由前缀至少为48位。目前已经分配的全球路由前缀的前3bit均为001。

Subnet ID:子网ID。组织机构可以用子网ID来构建本地网络(Site)。子网ID通常最多分配到第64位。子网ID和IPv4中的子网号作用相似。

Interface ID:接口标识。用来标识一个设备(Host)。

        4、链路本地地址:

        链路本地地址是IPv6中的应用范围受限制的地址类型,只能在连接到同一本地链路的节点之间使用。它使用了特定的本地链路前缀FE80::/10(最高10位值为1111111010),同时将接口标识添加在后面作为地址的低64比特。

        当一个节点启动IPv6协议栈时,启动时节点的每个接口会自动配置一个链路本地地址(固定前缀+接口标识)。这种机制使得两个连接到同一链路的IPv6节点不需要做任何配置就可以通信。所以链路本地地址广泛应用于邻居发现,无状态地址配置。

以链路本地地址为源地址或目的地址的IPv6报文不会被路由设备转发到其他链路。

        5、唯一本地地址:

        唯一本地地址是另一种应用范围受限的地址,它仅能在一个站点内使用。由于本地站点地址的废除,唯一本地地址被用来代替本地站点地址。

        唯一本地地址的作用类似于IPv4中的私网地址,任何没有申请到提供商分配的全球单播地址的组织机构都可以使用唯一本地地址。固定前缀为FC00::/7。

L:L标志位;值为1代表该地址为在本地网络范围内使用的地址;值为0被保留,用于以后扩展。

Global ID:全球唯一前缀;通过伪随机方式产生。

Subnet ID:子网ID;划分子网使用。

Interface ID:接口标识。

唯一本地地址具有如下特点:

  • 具有全球唯一的前缀(虽然随机方式产生,但是冲突概率很低)。

  • 可以进行网络之间的私有连接,而不必担心地址冲突等问题。

  • 具有知名前缀(FC00::/7),方便边缘设备进行路由过滤。

  • 如果出现路由泄漏,该地址不会和其他地址冲突,不会造成Internet路由冲突。

  • 应用中,上层应用程序将这些地址看作全球单播地址对待。

  • 独立于互联网服务提供商ISP(Internet Service Provider)。

2、组播地址:

        IPv6的组播与IPv4相同,用来标识一组接口,一般这些接口属于不同的节点。一个节点可能属于0到多个组播组。发往组播地址的报文被组播地址标识的所有接口接收。例如组播地址FF02::1表示链路本地范围的所有节点,组播地址FF02::2表示链路本地范围的所有路由器。

        组播地址由前缀,标志(Flag)字段、范围(Scope)字段以及组播组ID(Global ID)4个部分组成

被请求节点组播地址:

        当一个节点具有了单播或任播地址,就会对应生成一个被请求节点组播地址,并且加入这个组播组。一个单播地址或任播地址对应一个被请求节点组播地址。主要用于邻居发现机制和地址重复检测功能。

        IPv6中没有广播地址,也不使用ARP。但是仍然需要从IP地址解析到MAC地址的功能。在IPv6中,这个功能通过邻居请求NS(Neighbor Solicitation)报文完成。当一个节点需要解析某个IPv6地址对应的MAC地址时,会发送NS报文,该报文的目的IP就是需要解析的IPv6地址对应的被请求节点组播地址;只有具有该组播地址的节点会检查处理。

        被请求节点组播地址由前缀FF02::1:FF00:0/104和单播地址的最后24位组成。

3、任播地址:

        任播地址标识一组网络接口(通常属于不同的节点)。目标地址是任播地址的数据包将发送给其中路由意义上最近的一个网络接口。

        任播地址设计用来在给多个主机或者节点提供相同服务时提供冗余功能和负载分担功能。目前,任播地址的使用通过共享单播地址方式来完成。将一个单播地址分配给多个节点或者主机,这样在网络中如果存在多条该地址路由,当发送者发送以任播地址为目的IP的数据报文时,发送者无法控制哪台设备能够收到,这取决于整个网络中路由协议计算的结果。这种方式可以适用于一些无状态的应用,例如DNS等。

        IPv6中没有为任播规定单独的地址空间,任播地址和单播地址使用相同的地址空间。目前IPv6中任播主要应用于移动IPv6。

IPv6任播地址仅可以被分配给路由设备不能应用于主机不能作为源地址

IPv6报文格式:

IPv6报文由IPv6基本报头、IPv6扩展报头以及上层协议数据单元三部分组成。

上层协议数据单元一般由上层协议报头和有效载荷构成,有效载荷可以是ICMPv6报文、TCP报文或UDP报文。

  • Version:版本号,长度为4bit。对于IPv6,该值为6。

  • Traffic Class:流类别,长度为8bit。等同于IPv4中的TOS字段,表示IPv6数据报的类或优先级,主要应用于QoS。

  • Flow Label:流标签,长度为20bit。IPv6中的新增字段,用于区分实时流量,不同的流标签+源地址可以唯一确定一条数据流,中间网络设备可以根据这些信息更加高效率的区分数据流。

  • Payload Length:有效载荷长度,长度为16bit。有效载荷是指紧跟IPv6报头的数据报的其它部分(即扩展报头和上层协议数据单元)。该字段只能表示最大长度为65535字节的有效载荷。如果有效载荷的长度超过这个值,该字段会置0,而有效载荷的长度用逐跳选项扩展报头中的超大有效载荷选项来表示。

  • Next Header:下一个报头,长度为8bit。该字段定义紧跟在IPv6报头后面的第一个扩展报头(如果存在)的类型,或者上层协议数据单元中的协议类型。

  • Hop Limit:跳数限制,长度为8bit。该字段类似于IPv4中的Time to Live字段,它定义了IP数据报所能经过的最大跳数。每经过一个设备,该数值减去1,当该字段的值为0时,数据报将被丢弃。

  • Source Address:源地址,长度为128bit。表示发送方的地址。

  • Destination Address:目的地址,长度为128bit。表示接收方的地址。

ICMPv6:

ICMPv6(Internet Control Message Protocol for the IPv6)是IPv6的基础协议之一。

        在IPv4中,Internet控制报文协议ICMP(Internet Control Message Protocol)向源节点报告关于向目的地传输IP数据包过程中的错误和信息。它为诊断、信息和管理目的定义了一些消息,如:目的不可达、数据包超长、超时、回应请求和回应应答等。在IPv6中,ICMPv6除了提供ICMPv4常用的功能之外,还是其它一些功能的基础,如邻接点发现、无状态地址配置(包括重复地址检测)、PMTU发现等。

        ICMPv6的协议类型号(即IPv6报文中的Next Header字段的值)为58。

  • Type:表明消息的类型,0至127表示差错报文类型,128至255表示消息报文类型。

  • Code:表示此消息类型细分的类型。

  • Checksum:表示ICMPv6报文的校验和。

Path MTU:

        在IPv4中,报文如果过大,必须要分片进行发送,所以在每个节点发送报文之前,设备都会根据发送接口的最大传输单元MTU(Maximum Transmission Unit)来对报文进行分片。但是在IPv6中,为了减少中间转发设备的处理压力,中间转发设备不对IPv6报文进行分片,报文的分片将在源节点进行。当中间转发设备的接口收到一个报文后,如果发现报文长度比转发接口的MTU值大,则会将其丢弃;同时将转发接口的MTU值通过ICMPv6报文的“Packet Too Big”消息发给源端主机,源端主机以该值重新发送IPv6报文,这样带来了额外流量开销。PMTU发现协议可以动态发现整条传输路径上各链路的MTU值,减少由于重传带来的额外流量开销。

        PMTU协议是通过ICMPv6的Packet Too Big报文来完成的。首先源节点假设PMTU就是其出接口的MTU,发出一个试探性的报文,当转发路径上存在一个小于当前假设的PMTU时,转发设备就会向源节点发送Packet Too Big报文,并且携带自己的MTU值,此后源节点将PMTU的假设值更改为新收到的MTU值继续发送报文。如此反复,直到报文到达目的地之后,源节点就能知道到达目的地的PMTU了。

        由于IPv6要求链路层所支持的最小MTU为1280,所以PMTU的值必须大于1280。

2、ipv6过渡技术

双栈技术

  • 节点同时支持IPv4和IPv6协议栈。

  • IPv6 over IPv4隧道

过渡初期使用

  • 通过隧道技术,使IPv6报文在IPv4网络中传输。

  • 手动隧道包括IPv6 over IPv4手动隧道和IPv6 over IPv4 GRE隧道。

  • 自动隧道包括IPv4兼容IPv6自动隧道、6to4隧道和ISATAP隧道

IPv4 over IPv6隧道

  • 过渡后期使用

  • 通过隧道技术,使IPv4报文在IPv6网络中传输

双栈协议

        双栈协议指网络中的节点同时支持IPv4和IPv6协议栈,源节点根据目的节点的不同选用不同的协议栈,而网络设备根据报文的协议类型选择不同的协议栈进行处理和转发。双栈可以在一个单一的设备上实现,也可以是一个双栈骨干网。对于双栈骨干网,其中的所有设备必须同时支持IPv4/IPv6协议栈,连接双栈网络的接口必须同时配置IPv4地址和IPv6地址。

单协议栈和双协议栈结构示例如下:

双协议栈具有以下特点:

  • 多种链路协议支持双协议栈

    • 图中的链路层是以太网,在以太网帧上,如果协议ID的值为0x0800,IPv4报文,如果为0x86DD,IPv6报文。

  • 多种应用支持双协议栈

    • 多种应用(如DNS/FTP/Telnet等)支持双协议栈。上层应用(如DNS)可以选用TCP或UDP作为传输层的协议,但优先选择IPv6协议栈,而不是IPv4协议栈作为网络层协议。

3、ipv6邻居发现协议

        邻居发现协议NDP(Neighbor Discovery Protocol)是IPv6协议体系中一个重要的基础协议。邻居发现协议替代了IPv4的ARP(Address Resolution Protocol)和ICMP路由器发现(Router Discovery),它定义了使用ICMPv6报文实现地址解析,跟踪邻居状态,重复地址检测,路由器发现以及重定向等功能。

        CDP(Cisco discovery protocol)思科发现协议

        LLDP(link layer discovery protocol)

        CEF(Cisco express forward)思科快速转发

4、组播侦听者发现协议MLD

        组播侦听者发现协议MLD(Multicast Listener Discovery)是负责IPv6组播成员管理的协议,用来在IPv6成员主机和与其直接相邻的组播路由器之间建立和维护组播组成员关系。MLD通过在成员主机和组播路由器之间交互MLD报文实现组成员管理功能,MLD报文封装在IPv6报文中。

目的:

        出现于IPv4时代的组播技术,有效解决了单点发送、多点接收的问题,实现了网络中点到多点的高效数据传送,能够大量节约网络带宽、降低网络负载。在IPv6网络中,组播技术的应用得到了进一步的丰富和加强。MLD可以理解为IGMP的IPv6版本,两者的协议行为完全相同,区别仅仅在于报文格式。

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

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

相关文章

整体设计 之“凝聚式中心点”原型 --整除:智能合约和DBMS的深层融合 之2

摘要(CSDN的AI助手自动生成的)本文提出了一种基于"整除"数学原型的智能合约与DBMS融合架构设计,将SQL查询语句的四个关键段(SELECT、FROM、WHERE、BY)分别映射到整除运算的四个要素(商、被除数、…

【赵渝强老师】TiDB表数据与键值对的映射关系

TiDB实例将表中的每一行数据映射成RocksDB中的键值对,则需要考虑如何构造Key和Value。首先,OLTP场景下有大量针对单行或者多行的增、删、改、查等操作,要求数据库具备快速读取一行数据的能力。因此,对应的Key最好有一个唯一ID&…

带操作系统的延时函数

delay.c:#include "delay.h"/*** brief 微秒级延时* param nus 延时时长,范围:0~233015* retval 无*/ void delay_us(uint32_t nus) {uint32_t ticks;uint32_t tcnt 0, told, tnow;uint32_t reload SysTick->LOAD; //重…

ES Module 和 CommonJS的区别

ES Module(ESM,ES6 模块系统)和 CommonJS 是 JavaScript 中两种主流的模块规范,分别用于现代前端和 Node.js 环境(早期),它们在语法、加载机制、特性等方面有显著区别。以下是详细对比&#xff…

猫头虎AI分享|一款智能量化交易系统:QuantCell,从数据收集到策略执行全流程自动化

猫头虎AI分享|一款智能量化交易系统:QuantCell,从数据收集到策略执行全流程自动化 在当今金融市场中,量化交易系统已经成为越来越多投资者和机构的重要选择。无论是股票、期货还是加密货币,自动化交易与人工智能的结合…

直播美颜SDK架构揭秘:动态贴纸功能的实现原理与性能优化

如今,美颜SDK 已经不再只是“磨皮、美白”的基础工具,而是逐渐进化为一个涵盖 人脸识别、实时特效、动态贴纸交互 的复杂技术体系。尤其是 动态贴纸功能 的加入,让主播与观众之间的互动更加生动有趣,也成为提升用户粘性与平台差异…

Docker安装CDC

Docker安装CDC拉取镜像离线形式安装上传文件并创建docker-compose.yml把镜像加载到docker中启动容器连接数据库创建账号,并给账号授权设置wal_level确认wal_level的值创建链接查询连接状态使用kafdrop消息中看不到修改之前的信息怎么办补充拉取镜像 docker pull co…

如何在win服务器中部署若依项目

一、安装jdk的环境: 这一步很简单,直接拿到安装包双击安装即可。 二、配置jdk的环境变量默认安装的路径为:C:\Program Files (x86)\Java\jdk1.7.0_51安装完成之后进行环境变量配置右击计算机(此电脑)点击属性点击高级系…

CSS从入门到精通完整指南

第一部分:CSS基础入门1.1 什么是CSSCSS(层叠样式表,Cascading Style Sheets)是用于描述HTML文档外观和格式的样式语言。CSS将内容与表现分离,让HTML专注于内容结构,CSS专注于视觉效果。1.2 CSS语法结构选择…

重温k8s基础概念知识系列二(Pod)

文章目录1、Pod概念2、K8s 中的 Pod 的两种用法3、定义Pod4、Pod的创建资源5、Pod 模板6、容器探针7、总结干货8、 K8s Pod 经典面试题速查表Pod是Kubernetes中最小的单元: 1、Pod概念 Pod 是可以在 Kubernetes中创建和管理的、最小的可部署的计算单元。它由一组、一…

设计模式之静态代理

一些个人理解 顾名思义,就是代理一个对象。 那么,既然要代理一个东西,就要传入它吧? 【1】所以将代理对象当作属性【【2】往往通过构造方法传入被代理的目标对象】。 既然要代理,那必然要和代理对象拥有相同的功能吧? 所以实现了…

牛津大学xDeepMind 自然语言处理(1)

牛津大学xDeepMind 自然语言处理 Natural Language Processing 词向量与词汇语义学 Word Vectors and Lexical Semantics 词语表示的基本问题与分布语义思想 传统词语表示(如独热向量)存在稀疏、正交、语义弱的问题,无法表达语义相似性。分布…

StarRocks数据库集群的完整部署流程

目录 依赖环境 下载安装包 部署FE 部署BE 搭建集群 停止集群 依赖环境 详见&#xff1a;StarRocks 部署&#xff1a;依赖环境-CSDN博客 下载安装包 在官方网站下载安装包&#xff1a;StarRocks 部署FE 创建元数据目录。 mkdir -p <meta_dir> 修改 FE 配置文件 f…

简单的 VSCode 设置

以下是我使用的vscode设置。虽然有些主观&#xff0c;但很实用。1 主题。我放弃了那些炫酷的主题。我选择了Tokyo Night (Storm)。理由是&#xff1a;它平静、赏心悦目&#xff0c;并且与代码形成了美丽的对比&#xff0c;却又不显得刺眼。2. 字体。我切换到了 JetBrains Mono …

Rust 条件语句

Rust 条件语句 在编程语言中&#xff0c;条件语句是程序流程控制的重要组成部分。Rust 作为一种系统编程语言&#xff0c;其条件语句的设计简洁而强大。本文将详细介绍 Rust 中的条件语句&#xff0c;包括其语法、用法以及一些高级特性。 1. 基本条件语句 Rust 中的基本条件语句…

【Java EE进阶 --- SpringBoot】初识Spring(创建SpringBoot项目)

乐观学习&#xff0c;乐观生活&#xff0c;才能不断前进啊&#xff01;&#xff01;&#xff01; 我的主页&#xff1a;optimistic_chen 我的专栏&#xff1a;c语言 &#xff0c;Java, Java EE初阶&#xff0c; Java数据结构 欢迎大家访问~ 创作不易&#xff0c;大佬们点赞鼓励…

脑潜在进展:基于潜扩散模型的三维脑磁共振成像个体时空疾病进展研究|文献速递-深度学习人工智能医疗图像

Title题目Brain Latent Progression: Individual-based spatiotemporal diseaseprogression on 3D Brain MRIs via latent diffusion脑潜在进展&#xff1a;基于潜扩散模型的三维脑磁共振成像个体时空疾病进展研究01文献速递介绍神经退行性疾病是现代医疗保健领域最紧迫的挑战之…

专题:2025AI技术应用与发展报告|附600+份报告PDF、数据仪表盘汇总下载

原文链接&#xff1a;https://tecdat.cn/?p43632 当企业管理者看着后台65%的任务被AI自动分配&#xff0c;却仍在为下周的营销方案熬夜改稿时&#xff0c;一个现实的矛盾浮出水面&#xff1a;AI到底能帮企业做什么&#xff1f; 2025年&#xff0c;算法研发投入占企业AI预算的…

【笔记】扩散模型(一一):Stable Diffusion XL 理论与实现

论文链接&#xff1a;SDXL: Improving Latent Diffusion Models for High-Resolution Image Synthesis 官方实现&#xff1a;Stability-AI/generative-models 非官方实现&#xff1a;huggingface/diffusers Stable Diffusion XL (SDXL) 是 Stablility AI 对 Stable Diffusion 进…

学习安卓APP开发,10年磨一剑,b4a/Android Studio

学习安卓APP开发 记得上次学APP都是在2016年前了&#xff0c;一晃就过去了10年。 当时用ANDROID studio打开一个空项目和编绎分别用了300秒&#xff0c;一下就用了10分钟。 后来买了一台一万多的电脑&#xff0c;CPU换成了I5 8600K 4.2GHZ*6核&#xff0c;再加上M2固态硬盘。 编…