38、IPv6过渡技术
本节内容作为IPv6相关知识的最后一节内容,同时也作为我们本专栏网络层知识的最后一节内容,主要介绍从IPv4地址到IPv6地址过渡的相关技术。在这里我们只学习各类考试中常考的三种技术。
IPv4向IPv6的过渡
在前面的知识中,我们学习到了两种IP地址,一种传统的IP地址(也就是我们常见的以点分十进制表示的IPv4地址),另一种是为了解决IPv4地址数量耗尽问题而开始部署的以冒分十六进制表示的IPv6地址。
根据前面的学习,我们了解到IPv6地址空间巨大,是IP地址发展演进的趋势。可同时,IPv4地址已经长期存在并成熟应用多年,网络上的各类计算机、路由器等设备都是以IPv4地址进行互联互通。互联网的网络规模如此庞大、如此复杂,要把所有网络设备的IP地址改用IPv6绝非易事,不可能在短时间全部替换成IPv6通信。因此,要采用一种IPv4向IPv6平滑过渡的方法,逐步推进,直至IPv6的大规模应用。
IPv4向IPv6平滑过渡的技术,主要包括三种,分别是:双协议栈技术、隧道技术、NAT-PT技术。下面我们就这三种展开学习。
双协议栈
协议栈的概念,我们之前虽没有提到过,但是我们在一开始学习了TCP/IP模型,之后通过学习数据链路层、网络层,知道每个层次都有自己的协议。例如PPP协议、CSMA/CD协议等都是数据链路层的协议,IP协议、ICMP协议、ARP协议等都是网络层的协议。这样按照TCP/IP层次的“协议排列”,就称为协议栈。“栈”是一种计算机数据结构,可以形象地表达出TCP/IP模型的协议组织形式,想深入了解的同学可以看看数据结构中对“栈”的介绍。
理解了协议栈的概念,那么双协议栈也就不难理解了。双协议栈也就是有两个协议栈,这两个协议栈同时装在同一个设备上,也就是这个设备同时具有IPv4和IPv6两种协议栈。
现在我们大部分的计算机的网卡上,几乎都有这两种协议栈。以windows 10系统为例,具体查看的方法是:打开控制面板,找到“网络和Internet”,点击“网络和共享中心”,进入界面后在左侧找到“更改适配器选项”,找到自己的网卡,右击选择“属性”,在这个界面中,可以看到如下信息:

这说明,我们的计算机网卡上同时装有IPv4和IPv6两种协议栈,可以同时在IPv4、IPv6两种网络上通信,在和IPv4网络的主机通信时采用IPv4地址,在和IPv6网络中的主机通信时采用IPv6地址。由此也可见,如果网卡本身没有安装TCP/IPv6协议栈的话,就使用不了IPv6地址,只能使用IPv4地址通信。另外,个人宽带想使用IPv6地址通信,要开通ipv6的外网带宽业务,还要在自己的光猫和路由器上做一些其它的设置,以开启IPv6网络访问的功能。
这时候又产生一个新的问题:双协议栈的主机如要访问一个网站,怎么才能知道该网站是否支持IPv6呢?一般情况下,能够支持IPv6访问的网站,都在自己的网站页面上标有“本站已支持IPv6”等字样。如要查询,最简单的方法,是通过一些第三方工具来测试,例如 boce 等在线网站的“IPv6测试”功能即可检测一个网站是否支持IPv6。
隧道技术
第二种过渡的方法是使用隧道技术,这种方法适用于IPv6“孤岛”的情况,也就是说,IPv4网络规模巨大,就像一片海洋,而其中有几个使用IPv6协议栈的主机就像海洋里面一个个小的“孤岛”一样。
比如有两台主机A和B,这两台主机都只有IPv6协议栈,两者之间可以直接用IPv6地址通信的,但关键的问题在于它们之间的网络是IPv4的网络。这样情况下,主机A发送的IPv6的数据包该如何跨越“IPv4的海洋”到达主机B呢?这就是隧道技术产生的问题背景。
“隧道”是一个虚拟的概念,就像日常生活中的火车如何穿越大山一样,要在大山里面挖出一条隧道。那么IPv6的数据包如何穿越IPv4的网络,也是这个道理。这种方法的原理是:当IPv6的数据包进入IPv4网络的时候,就加上IPv4的首部,封装成IPv4的数据包,离开IPv4网络的时候再把加上的首部去掉,还原回IPv6的数据包交给目的主机。这个过程就像是在IPv4网络中“挖出了一条隧道”可以让IPv6数据包“穿越过去”。原理图如下:

由此可见两个特点:第一,在隧道中传输的时候,整个IPv6的数据包都是作为外面一层IPv4数据包的数据部分存在的,也就是把IPv6数据包封装进了IPv4数据包里面。第二,虽然要通信的两台主机并不是双协议栈的主机,但是必须要求两台同时连接着IPv4和v6网络的边界路由器(如图中展示的两台路由器)具有双协议栈,因为这样才能够完成隧道中封装的整个工作。
另外一个问题是,双协议栈的路由器怎么能够知道IPv4数据包里面封装的数据是一个IPv6的数据包呢?这就要依靠IPv4数据包首部中的“协议”字段的值了,将“协议”字段的值设置为41,就表示其数据部分是一个IPv6的数据包。
NAT-PT
通过前面学习NAT技术,我们知道这是一种地址转换技术。在路由器上配置NAT,用于公网和私网IP地址之间的映射和转换。既然NAT技术具有这种地址转换的“翻译”功能,那么能否利用这个功能,用于IPv4和IPv6之间地址的“翻译”呢?这种技术就是NAT-PT。
NAT-PT全称“Network Address Translator - Protocol Translator”,即“带有协议转换器的网络地址翻译”,它的功能就是让IPv6的节点可以和IPv4的节点之间可以互通。
NAT-PT的原理和NAT类似,出口路由器上配置一个IPv4地址池,当IPv6的主机发出数据包,经过出口路由器,路由器根据预先配置好的信息,将数据包源地址转换成一个IPv4的地址。和NAT一样,NAT-PT也可以分为“一对一”的转换和“一对多”的转换。同理,一对多的转换被称为NAPT-PT。(如果不知道“一对多”的含义,请参看本专栏中第33节——NAT的内容)
另外需要指明的是,NAT-PT的主要功能是IPv6的节点发起向IPv4的节点的通信,但反过来,IPv4的节点要访问IPv6的节点则比较复杂。NAT-PT的路由器除了要具有IPv4地址池以外,还要有应用层网关的支持,否则不能实现IPv4节点对IPv6节点的访问。(应用层网关是一种防火墙,学习网络安全时会详细介绍)。
以上的内容,就是IPv4向IPv6地址过渡的三种技术,有关IPv6的内容就介绍完了,这也就意味着网络层的内容介绍完了。从下面一节开始,我们学习传输层的相关内容。
参考教材:谢希仁《计算机网络》第八版
相关文章:
38、IPv6过渡技术
本节内容作为IPv6相关知识的最后一节内容,同时也作为我们本专栏网络层知识的最后一节内容,主要介绍从IPv4地址到IPv6地址过渡的相关技术。在这里我们只学习各类考试中常考的三种技术。 IPv4向IPv6的过渡 在前面的知识中,我们学习到了两种IP地…...
HMMER-序列分析软件介绍
HMMER是一个软件包,它提供了制作蛋白质和DNA序列域家族概率模型的工具,称为轮廓隐马尔可夫模型、轮廓HMM或仅轮廓,并使用这些轮廓来注释新序列、搜索序列数据库以寻找其他同源物,以及进行深度多重序列比对。HMMER是已知蛋白质和DN…...
【项目学习1】如何将java对象转化为XML字符串
如何将java对象转化为XML字符串 将java对象转化为XML字符串,可以使用Java的XML操作库JAXB,具体操作步骤如下: 主要分为以下几步: 1、创建JAXBContext对象,用于映射Java类和XML。 JAXBContext jaxbContext JAXBConte…...
nginx负载均衡
负载均衡:反向代理来实现 正向代理的配置方法。 1、NGINX的七层代理和四层代理: 七层是最常用的反向代理方式,只能配置在nginx配置文件的http模块。而且配置方法名称:upstream 模块,不能写在server中,也…...
【毕业项目】自主设计HTTP
博客介绍:运用之前学过的各种知识 自己独立做出一个HTTP服务器 自主设计WEB服务器 背景目标描述技术特点项目定位开发环境WWW介绍 网络协议栈介绍网络协议栈整体网络协议栈细节与http相关的重要协议 HTTP背景知识补充特点uri & url & urn网址url HTTP请求和…...
关于安卓jar包修改并且重新发布
背景: 对于某些jar包,其内部是存在bug的,解决的方法无外乎就有以下几种方法: (1)通过反射,修改其赋值逻辑 (2)通过继承,重写其方法 (3࿰…...
Java课题笔记~ AspectJ 对 AOP 的实现(掌握)
AspectJ 对 AOP 的实现(掌握) 对于 AOP 这种编程思想,很多框架都进行了实现。Spring 就是其中之一,可以完成面向切面编程。然而,AspectJ 也实现了 AOP 的功能,且其实现方式更为简捷,使用更为方便,而且还支…...
npm 报错 cb() never called!
不知道有没有跟我一样的情况,在使用npm i的时候一直报错:cb() never called! 换了很多个node版本,还是不行,无法解决这个问题 百度也只是让降低node版本请缓存,gpt给出的解决方案也是同样的 但是缓存清过很多次了&a…...
finally有什么作用以及常用场景
在Java中,finally是一个关键字,用于定义一个代码块,该代码块中的代码无论是否发生异常都会被执行。finally块通常用于确保在程序执行过程中资源的释放和清理。 使用场景: 1. 资源释放:finally块经常用于释放打开的资…...
Python web实战之Django URL路由详解
概要 技术栈:Python、Django、Web开发、URL路由 Django是一种流行的Web应用程序框架,它采用了与其他主流框架类似的URL路由机制。URL路由是指将传入的URL请求映射到相应的视图函数或处理程序的过程。 什么是URL路由? URL路由是Web开发中非常…...
10-数据结构-队列(C语言)
队列 目录 目录 队列 一、队列基础知识 二、队列的基本操作 1.顺序存储 编辑 (1)顺序存储 (2)初始化及队空队满 (3)入队 (4)出队 (5)打印队列 &…...
面试之快速学习C++11 - 右值 移动构造 std::move
C11右值引用 字面意思,以引用传递的方式使用c右值左值和右值,左值是lvalue loactor value 存储在内存中,有明确存储地址的数据, 右值rvalue read value , 指的是那些可以提供数据值的数据(不一定可以寻址,…...
vue实现5*5宫格当鼠标滑过选中的正方形背景颜色统一变色
vue实现5*5宫格当鼠标滑过选中的正方形背景颜色统一变色 1、实现的效果 2、完整代码展示 <template><div id"app" mouseleave"handleMouseLeave({row: 0, col: 0 })"><div v-for"rowItem in squareNumber" :key"rowItem…...
2023-08-09 LeetCode每日一题(整数的各位积和之差)
2023-08-09每日一题 一、题目编号 1281. 整数的各位积和之差二、题目链接 点击跳转到题目位置 三、题目描述 给你一个整数 n,请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。 示例1: 示例2: 提示: 1 …...
EditPlus连接Linux系统远程操作文件
EditPlus是一套功能强大的文本编辑器! 1.File ->FTP->FTP Settings; 2.Add->Description->FTP server->Username->Password->Subdirectory->Advanced Options 注意:这里的Subdirectory设置的是以后上传文件的默认…...
JVM 垃圾回收
垃圾回收算法 标记-清除算法(Mark and Sweep) 标记-清除算法分为两个阶段。在标记阶段,垃圾收集器会标记所有活动对象;在清除阶段,垃圾收集器会清除所有未标记的对象。标记-清除算法存在的问题是会产生内存碎片&#…...
编程中的宝藏:二分查找
二分查找 假设你需要在电话簿中找到一个以字母 “K” 开头的名字(虽然现在谁还在用电话簿呢!)。你可以从头开始翻页,直到进入以 “K” 打头的部分。然而,更明智的方法是从中间开始,因为你知道以 “K” 打头…...
计算机网络 数据链路层
...
如何维护自己的电脑
目录 1、关于电脑选择的建议 1.1、价格预算 1.2、明确需求 1.3、电脑配置 1.4、分辨率 1.5、续航能力 1.6、品牌选择 1.7、用户评测 1.8、各个电商平台对比 1.9、最后决策 2、我的选择 3、电脑保养 3.1 外部清洁 3.2 安装软件 3.3 优化操作系统 3.4 维护硬件设…...
智能优化算法——哈里鹰算法(Matlab实现)
目录 1 算法简介 2 算法数学模型 2.1.全局探索阶段 2.2 过渡阶段 2.3.局部开采阶段 3 求解步骤与程序框图 3.1 步骤 3.2 程序框图 4 matlab代码及结果 4.1 代码 4.2 结果 1 算法简介 哈里斯鹰算法(Harris Hawks Optimization,HHO),是由Ali As…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
GitFlow 工作模式(详解)
今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...
莫兰迪高级灰总结计划简约商务通用PPT模版
莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...
STM32HAL库USART源代码解析及应用
STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...
