ipv4和ipv6的兼容性问题

news2024/9/20 6:40:50

ipv4和ipv6的兼容

现今大多知名网站都是同时支持ipv6和ipv4,这种可以分为两种情况讨论:

  1. 一个IPv4的网络和一个IPv6的网络通信;
  2. 一个IPv6的网络和一一个IPv6的网络通信,但是中间需要经过一一个IPv4的网络。

先以第一种为例:

若一个ipv6服务器想要访问一个ipv4服务器,具体步骤如下:

  1. 客户端通过DNS64服务器查询AAAA记录:IPv6客户端向DNS64服务器查询目标域名的AAAA记录。DNS64是一种将IPv6地址和IPv4地址兼容的DNS服务。当目标域名只有IPv4地址时,DNS64服务器会合成一个伪造的AAAA记录。
  2. DNS64服务器返回含IPv4地址的AAAA记录:如果目标域名只有IPv4地址,DNS64服务器会查询该域名的A记录,然后将其转换为IPv6地址(通常以特定前缀,例如64:ff9b::/96 开头),并返回给客户端一个伪造的AAAA记录。如果目标域名本身有AAAA记录,DNS64服务器会直接返回这些记录。
  3. 客户端将请求发送给NAT64路由器:客户端接收到伪造的AAAA记录后,将其作为目标地址,并根据此地址生成IPv6报文。这个报文被发送到NAT64路由器。
  4. NAT64路由器将IPv6地址转换为IPv4地址,并访问IPv4网络:NAT64路由器识别出伪造的IPv6地址中的IPv4部分,将该地址转换为真实的IPv4地址,并将IPv6报文转换为IPv4报文。然后,NAT64路由器将IPv4报文发送到目标IPv4服务器。
  5. 消息返回到客户端:目标IPv4服务器处理请求并返回响应,响应报文到达NAT64路由器后,NAT64路由器将其转换回IPv6报文,然后将其转发给IPv6客户端。

整个过程的关键是DNS64和NAT64的协调工作,确保IPv6客户端能够通过伪造的AAAA记录访问仅有IPv4地址的服务器。这样,客户端对目标服务器的访问是透明的,无需知道其实际的IPv4地址。

(在这个过程中,其实dns64就相当于提前转换及生成ipv6,nat64相当于双方在进行数据交换过程中的转换)

image-20240711142416116

问题

大家可能在阅读中唯一的疑问就是,当客户端先前往dns64进行目标ipv4转假ipv6的过程中,并未事先通知nat64,为什么nat64能直接从假ipv6中获取到真ipv4呢?这是因为这个转换是可逆的。

具体规则如下(由IETF制定的 RFC 6146(NAT64)和 RFC 6147(DNS64)标准):

  1. IPv4 嵌入 IPv6 地址
    • 当 DNS64 服务器将 IPv4 地址转换为 IPv6 地址时,它会使用一个特定的前缀(例如 64:ff9b::/96)。这个前缀是预定义的,用于标识这些地址。
    • IPv4 地址的32位部分被嵌入到 IPv6 地址的后32位中。例如,一个 IPv4 地址 192.0.2.33 被转换为 IPv6 地址 64:ff9b::c000:0221。
  2. IPv6 地址中的 IPv4 提取
    • 当 IPv6 客户端向伪造的 IPv6 地址(例如 64:ff9b::c000:0221)发送请求时,NAT64 路由器会识别这个前缀(64:ff9b::/96)。
    • NAT64 路由器提取 IPv6 地址的后32位,将其转换回原始的 IPv4 地址(192.0.2.33)。
示例:

假设 IPv4 地址是 203.0.113.1,它在 DNS64 的转换下会变成如下的 IPv6 地址:

  • 原始 IPv4 地址:203.0.113.1
  • IPv6 地址前缀:64:ff9b::
  • 转换后的 IPv6 地址:64:ff9b::cb00:7101

当 NAT64 路由器接收到这个 IPv6 地址时,它会识别前缀 64:ff9b::,然后将后32位 cb00:7101 转换回 IPv4 地址 203.0.113.1。

是不是瞬间清醒了。

另一种:一个IPv6的网络和一个IPv6的网络通信,但是中间需要经过一个IPv4的网络。

这个时候需要用到隧道(tunnel)技术,隧道技术有很多种,但原理基本差不多,就选一种方式详细讲一下:

6to4 隧道工作流程

  1. 生成 6to4 地址
    • 每个 IPv6 节点使用其 IPv4 地址(公共ipv4地址)生成一个 6to4 地址。
    • 6to4 地址的前缀为 2002::/16,IPv4 地址嵌入在地址的后部分。
  2. 封装 IPv6 报文
    • 当节点 A 发送一个 IPv6 报文时,它将报文封装在 IPv4 报文中。封装后的 IPv4 报文包含 IPv6 报文数据。
  3. 通过 IPv4 网络传输
    • 封装后的 IPv4 报文通过 IPv4 网络传输到节点 B。
  4. 解封装 IPv6 报文
    • 节点 B 接收到 IPv4 报文后,将其解封装,提取出原始的 IPv6 报文。
示例详细步骤

假设节点 A 和 B 的具体情况如下:

  • 节点 A
    • 公共 IPv4 地址:192.0.2.1
    • 生成的 6to4 地址:2002:c000:0201::/48
  • 节点 B
    • 公共 IPv4 地址:198.51.100.1
    • 生成的 6to4 地址:2002:c633:6401::/48
  1. 节点 A 向节点 B 发送数据
  • IPv6 报文
    • 源地址:2002:c000:0201::
    • 目的地址:2002:c633:6401::
    • 数据:Hello
  • 封装为 IPv4 报文
    • IPv4 源地址:192.0.2.1
    • IPv4 目的地址:198.51.100.1

封装后的 IPv4 报文通过 IPv4 网络传输到节点 B。

  1. 节点 B 接收并解封装
  • IPv4 报文
    • IPv4 源地址:192.0.2.1
    • IPv4 目的地址:198.51.100.1
    • 包含封装的 IPv6 报文数据
  • 解封装
    • 节点 B 提取出原始的 IPv6 报文:
      • 源地址:2002:c000:0201::
      • 目的地址:2002:c633:6401::
      • 数据:Hello
  1. 节点 B 发送响应
  • IPv6 报文
    • 源地址:2002:c633:6401::
    • 目的地址:2002:c000:0201::
    • 数据:Hi
  • 封装为 IPv4 报文
    • IPv4 源地址:198.51.100.1
    • IPv4 目的地址:192.0.2.1

封装后的 IPv4 报文通过 IPv4 网络传输回节点 A。

  1. 节点 A 接收并解封装
  • IPv4 报文
    • IPv4 源地址:198.51.100.1
    • IPv4 目的地址:192.0.2.1
    • 包含封装的 IPv6 报文数据
  • 解封装
    • 节点 A 提取出原始的 IPv6 报文:
      • 源地址:2002:c633:6401::
      • 目的地址:2002:c000:0201::
      • 数据:Hi

是不是很神奇,这个已经说的很清楚了,如果还是没有看懂,不妨下去再查一查相关的知识。

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

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

相关文章

好玩的卡牌游戏推荐:堆叠大陆 Stacklands(Win/Mac)中文版

《堆叠大陆》是一款非常有趣和富有创造力的游戏,玩家可以在游戏中通过堆叠不同种类的方块来创建自己的世界。 在游戏中,玩家可以探索广阔的地图,发现各种不同的方块和资源。这些方块可以被堆叠在一起,形成各种建筑、结构和其他创…

单链表--续(C语言详细版)

2.6 在指定位置之前插入数据 // 在指定位置之前插入数据 void SLTInsert(SLTNode** pphead, SLTNode* pos, SLTDataType x); 分为两种情况:1. 插入的数据在链表中间;2. 插入的数据在链表的前面。 // 在指定位置之前插入数据 void SLTInsert(SLTNode** …

Python实战演练——羊了个羊抓包通关教程及无限套娃通关次数!

1. 需求 最近热门的羊了个羊,听说通关率不到0.1% 第一关超级简单,第二关可就难倒了太多的小伙伴,往往是你以为快没了,结果还有好多层,有朋友分析过,地狱有十八层,而它有十九层。 博主也曾熬夜…

可视化传输机房设计方案

建筑可视化机房可视化(3D)机房可视化(2D)多机柜可视化单机柜可视化(3D)单机柜可视化(2D)设备与插槽可视化端口连线及链路可视化

栈和队列题目详解

前言: 在前面我们学习了栈和队列,栈的特性是后进先出,队列的特性是先进先出,当我们了解了这些之后,我们就可以用到栈和队列的特性来简单的做一些题目了。 1. 有效的括号 有效的括号:. - 力扣&#xff08…

ESP32驱动摄像头:1.驱动OV2640模块(待验证)

一、装ArduCam库和ESPAsyncWebServer库 二、参考代码 #include <Wire.h> #include <ArduCAM.h> #include <SPI.h> #include <WiFi.h> #include <ESPAsyncWebServer.h>#define CAM_CS 32 // modify according to your own wiring #define OV2640…

昇思25天训练营Day11 - 基于 MindSpore 实现 BERT 对话情绪识别

模型简介 BERT全称是来自变换器的双向编码器表征量&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;&#xff0c;它是Google于2018年末开发并发布的一种新型语言模型。与BERT模型相似的预训练语言模型例如问答、命名实体识别、自然语言推理、…

电焰灶:烹饪性能的深度剖析

在如今众多的厨房炉灶选择中&#xff0c;华火电焰灶以其独特的技术和性能吸引了不少消费者的目光。那么&#xff0c;华火电焰灶的综合烹饪性能究竟如何呢&#xff1f;让我们一起来深入探究。 首先&#xff0c;从火力方面来看&#xff0c;华火电焰灶展现出了强大的优势。其火焰强…

5G/4G加密边缘计算电力网关,开启智慧电力新篇章

计讯物联TG452&#xff0c;一款面向电力行业应用的工业级物联网网关&#xff0c;持电力协议及规约标准&#xff0c;支持采集、存储、算力、通信组网 、协议转换、控制等多功能。    电力应用   计讯物联电力网关TG452支持电力IEC101、IEC104、IEC61850、DL/T645等协议标准…

uniapp 微信小程序,最简单的流式输出:Transfer-Encoding: chunked

在GPT项目中&#xff0c;流式输出是实现流畅对话体验的关键技术之一。今天&#xff0c;我们将探讨如何在uniapp开发的微信小程序中优雅地实现这一功能。虽然WebSocket是一种常见的解决方案&#xff0c;但在某些场景下&#xff0c;我们可能寻求更轻量级且易于集成的替代方案。本…

unity使用 MQTT复现plant simulate仿真

unity使用 MQTT复现plant simulate仿真 一、plant simulate端配置 1、plant simulate MQTT组件配置&#xff0c;该组件在类库的信息流类目下&#xff0c;端口不变&#xff0c;填写ip即可&#xff1b; 2、设备配置界面&#xff0c;在控件入口和出口处各挂一个脚本&#xff0c;…

新手教学系列——MongoDB聚合查询的进阶用法

引言 MongoDB的聚合查询是其最强大的功能之一。无论是汇总、平均值、计数等标准操作,还是处理复杂的数据集合,MongoDB的聚合框架都能提供高效且灵活的解决方案。本文将通过几个实例,详细讲解如何在实际项目中使用MongoDB进行聚合查询。 标准应用:汇总、平均值、计数等 在…

认识string(一)详解

目录 标准库中的string类了解如何看文档Construct string (构造string)string()空字符串构造函数&#xff08;默认构造函数&#xff09;string (const string& str) 拷贝构造函数string (const string& str, size_t pos, size_t len npos)string (const char* s)复制构…

FiddlerScript Rules修改-更改发包中的cookie

直接在fiddler script editor中增加如下处理代码即可 推荐文档oSession -- 参数说明 测试笔记 看云

SSRF漏洞深入利用与防御方案绕过技巧

文章目录 前言SSRF基础利用1.1 http://内网资源访问1.2 file:///读取内网文件1.3 dict://探测内网端口 SSRF进阶利用2.1 Gopher协议Post请求2.2 Gopher协议文件上传2.3 GopherRedis->RCE2.4 JavaWeb中的适用性&#xff1f; SSRF防御绕过3.1 Url黑名单检测的绕过3.2 Url白名单…

公共安全和应急管理系统:提升社区韧性与危机应对能力

引言 公共安全和应急管理是现代社会不可或缺的组成部分&#xff0c;其核心目标是确保社会的稳定和居民的福祉。随着全球化、城市化和技术进步&#xff0c;社会面临的风险和威胁日益复杂多样&#xff0c;从自然灾害到人为事故&#xff0c;从公共卫生危机到恐怖袭击&#xff0c;公…

机器学习(V)--无监督学习(三)EM算法

EM算法 极大似然估计 极大似然估计&#xff1a;(maximum likelihood estimate, MLE) 是一种常用的模型参数估计方法。它假设观测样本出现的概率最大&#xff0c;也即样本联合概率&#xff08;也称似然函数&#xff09;取得最大值。 为求解方便&#xff0c;对样本联合概率取对…

强烈推荐!!李沐老师《动手学深度学习》最新Pytorch版!

动手学深度学习(PyTorch版)》是由李沐、Aston Zhang和孔德威共同编写的教材&#xff0c;专为深度学习初学者和实践者设计。本书使用PyTorch作为主要的深度学习框架&#xff0c;全面系统地介绍了深度学习的基本理论、常见模型和实际应用技巧。 书中内容包括深度学习的基础知识、…

【YOLOv8】 用YOLOv8实现数字式工业仪表智能读数(一)

上一篇圆形表盘指针式仪表的项目受到很多人的关注&#xff0c;咱们一鼓作气&#xff0c;把数字式工业仪表的智能读数也研究一下。本篇主要讲如何用YOLOV8实现数字式工业仪表的自动读数&#xff0c;并将读数结果进行输出&#xff0c;若需要完整数据集和源代码可以私信。 目录 &…

Html5+Css3学习笔记

Html5 CSS3 一、概念 1.什么是html5 html: Hyper Text Markup Language ( 超文本标记语言) 文本&#xff1a;记事本 超文本&#xff1a; 文字、图片、音频、视频、动画等等&#xff08;网页&#xff09; html语言经过浏览器的编译显示成超文本 开发者使用5种浏览器&#xf…