IPv4和IPv6的互操作性

2023-11-09

概述

在IPv4到IPv6发展的过度阶段,必然出现v4和v6主机之间互操作的问题,下面从机制层面讨论互操作的可能性,并假设主机之间网络路由已经打通。

IPv4客户端访问IPv6服务端

IPv4客户端访问IPv6服务端指的是服务端是双栈主机,客户端是纯v4主机。

假设服务端在v6地址上起了一个服务,客户端通过DNS获取服务器的A记录,通过v4地址访问服务端该端口的服务,服务端收到v4报文后,内核发现目的端口绑定本机的一个v6套接字,于是会把源v4地址转换成v4映射v6的地址(将v4地址往前补齐,变成v6地址)。

  • 在应用程序调用accept的时候,内核返回v4–>v6的映射地址给应用程序。
  • 应用程序往该地址发送数据的时候,内核将目的地址改成客户端v4地址,源地址使用服务器的v4地址。

客户端应用程序认为自己在和v4服务通信,服务端应用程序认为自己在和v6客户通信,中间的转换过程由服务端协议栈完成,对于客户端和服务端是透明无感知的。

IPv4客户端访问IPv6服务端的步骤总结如下:

  1. 服务端创建v6监听套接字
  2. 客户端通过DNS获取服务端的A记录
  3. 客户端向服务端的v4地址发起请求
  4. 服务端协议栈通过v4地址和客户端完成三次握手,并将v4到v6的映射地址返回给服务端应用程序
  5. 服务端向客户端发送数据时,服务端协议栈将源目地址都转为v4地址
  6. 整个转换过程均由服务端的IP协议栈完成,客户端和服务端均无感知
  7. v4客户端能访问v6服务端的前提是v6客户端是双栈主机

上面是TCP的过程,UDP类似,当v4客户端访问v6服务时,recvfrom会返回v4映射v6地址,sendto的时候,协议栈也会把目的地址改成v4。

IPv6客户端访问IPv4服务端

IPv6客户端访问IPv4服务端指的是客户端是双栈主机,服务端是纯v4主机。

当IPv4服务端在指定端口启动服务后,一个双栈主机的客户端通过IPv6访问该服务时,首先通过DNS获取服务端v4地址的映射v6地址,然后用该地址作为参数调用connect,然后客户端协议栈识别出目的地址是映射的v6地址,将本机v4地址作为源地址,客户端的v4地址作为目的地址,发送v4的数据包给服务端。

客户端调用getaddrinfo获取服务端的AAAA记录时,hints必须设置AI_V4MAPPED,用以获取服务端v4映射v6地址。

双栈主机之间的互访

双栈主机之间互访场景包括:

  • v4客户端访问v4服务端:直接能通
  • v6客户端访问v6服务端:直接能通
  • v4客户端访问v6服务端:v4客户端访问服务端主机的v4地址,由服务端主机协议栈进行v4到v6的转换
  • v6客户端访问v4服务端:v4客户端通过getaddrinfo获取到服务端的AAAA记录,如果使用服务端的v6地址,那么通不了;如果使用服务端的v4地址的v6映射,那么可以通

v4、v6客户端分别指双栈客户端通过v4或v6套接字去访问;

v4、v6服务端分别指双栈服务端的服务在v4或v6套接字上监听。

总结

IPv4和IPv6主机之间互访的总结如下:

  1. 纯v4客户端访问双栈服务端的v6服务时,通过v4网络传输,到服务端后由服务端协议栈将v4映射成v6进行通讯。
  2. 双栈客户端v6访问纯v4服务端的v4服务时,客户端需获取服务端v4映射v6地址,客户端程序访问该v6地址,客户端协议栈将源地址转成本机v4地址,目的地址转成服务端v4地址,通过v4网络传输,完成和服务端的通讯。
  3. 双栈客户端访问双栈服务端的服务时,可以选择不同的协议进行通讯。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IPv4和IPv6的互操作性 的相关文章

  • Python采集猎聘网站招聘数据内容,看看现在职位风向

    嗨喽 大家好呀 这里是爱看美女的茜茜呐 环境使用 Python 3 10 Pycharm 模块使用 第三方模块 需安装 requests gt pip install requests pandas gt pip install panda
  • 6类典型场景的无线AP选型和部署方案

    你们好 我的网工朋友 前段时间刚给你们来了篇解决无线频繁断网的技术文 解决无线频繁断网 这个办法值得收藏 不少朋友私聊 说想再聊聊无线AP的选型和部署方案 这不就安排上了 无线网络覆盖项目中 无线AP的合理选型和部署非常重要 在设计施工中
  • 【OpenCV学习笔记02】- 图像入门

    内容 这里介绍了图像处理的入门操作 你将学习如何读取图像 如何显示图像以及如何将其保存回去 你将学习以下功能 cv imread cv imshow cv imwrite 简单使用OpenCV 读取图像 使用 cv imread 函数读取图
  • 内网穿透的应用-使用Net2FTP轻松部署本地Web网站并公网访问管理内网资源

    文章目录 1 前言 2 Net2FTP网站搭建 2 1 Net2FTP下载和安装 2 2 Net2FTP网页测试 3 cpolar内网穿透 3 1 Cpolar云端设置 3 2 Cpolar本地设置
  • 这些专利知识你知道吗?

    专利作为一种重要的知识产权保护形式 专利不仅成为了企业核心竞争力的重要组成部分 也成为了国家创新发展的重要支撑 专利是指国家专利主管机关授予发明创造申请人的一种专有权 这种专有权具有独占性 排他性和法律强制性 能够为持有者带来经济利益和竞争
  • 前端必备的 web 安全知识手记

    前言 安全这种东西就是不发生则已 一发生则惊人 作为前端 平时对这方面的知识没啥研究 最近了解了下 特此沉淀 文章内容包括以下几个典型的 web 安全知识点 XSS CSRF 点击劫持 SQL 注入和上传问题等 下文以小王代指攻击者 话不多
  • 2024年网络安全十10大发展趋势发布

    2023年网络安全十10大发展趋势发布 近日 中国计算机学会 CCF 计算机安全专委会中 来自国家网络安全主管部门 高校 科研院所 大型央企 民营企业的委员投票评选出2023年网络安全十大发展趋势 福利 趋势一 数据安全治理成为数字经济的基
  • 【VUE毕业设计】基于SSM的在线课堂学习设计与实现(含源码+论文)

    文章目录 1 项目简介 2 实现效果 2 1 界面展示 3 设计方案 3 1 概述 3 2 系统流程 3 3 系统结构设计 4 项目获取
  • 通俗易懂,十分钟读懂DES,详解DES加密算法原理,DES攻击手段以及3DES原理

    文章目录 1 什么是DES 2 DES的基本概念 3 DES的加密流程 4 DES算法步骤详解 4 1 初始置换 Initial Permutation IP置换 4 2 加密轮次 4 3 F轮函数 4 3 1 拓展R到48位 4 3 2
  • 【信道估计】【MIMO】【FBMC】未来移动通信的滤波器组多载波调制方案(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码及文章
  • 【网安神器篇】——WPScan漏洞扫描工具

    目录 一 Wordpress简介 二 WPScan介绍 三 安装 四 获取token 1 注册账号 2 拿到token 五 使用教程 1 常用选项 2 组合命令 1 模糊扫描 2 指定扫描用户 3 插件漏洞扫描 4 主题漏洞扫描 5 Tim
  • 用CHAT写一份标题为职业教育教师教学能力提升培训总结

    CHAT回复 标题 职业教育教师教学能力提升培训总结 一 活动概述 本次由学校组织的职业教育教师教学能力提升培训于8月15日至8月20日顺利进行 来自全校的60位职业教育教师参与了此次培训 主讲人为享有盛名的教育专家马丁先生 二 培训内容与
  • 独家 | 鸿蒙(HarmonyOS)开发详细学习笔记免费分享

    前言 华为宣布 将在1月18日 在北京 上海 杭州 南京 成都 厦门 武汉 长沙 8 大城市同时召开大会 届时将揭秘鸿蒙生态和 HarmonyOS NEXT 进阶新篇章 简单的来说就是 纯血鸿蒙系统 即将彻底揭晓 鸿蒙系统自推出来以来 就一
  • 国外拨号VPS指南:开启你的全球网络之旅

    在当今数字化时代 互联网已经成为了我们生活的一部分 而要在全球范围内畅通无阻地访问互联网 拥有一个可靠的国外拨号VPS是非常重要的 无论您是为了工作 学习还是娱乐 国外拨号VPS都可以为您提供更广泛的网络体验 本文将为您提供国外拨号VPS的
  • Mysql中设置只允许指定ip能连接访问(可视化工具的方式)

    场景 Mysql中怎样设置指定ip远程访问连接 Mysql中怎样设置指定ip远程访问连接 navicat for mysql 设置只有某个ip可以远程链接 CSDN博客 前面设置root账户指定ip能连接访问是通过命令行的方式 如果通过可视
  • 为什么我强烈推荐大学生打CTF!

    前言 写这个文章是因为我很多粉丝都是学生 经常有人问 感觉大一第一个学期忙忙碌碌的过去了 啥都会一点 但是自己很难系统的学习到整个知识体系 很迷茫 想知道要如何高效学习 这篇文章我主要就围绕两点 减少那些罗里吧嗦的废话 直接上干货 CTF如
  • 手把手教你使用HarmonyOS本地模拟器

    我们通过下面的动图来回顾下手机本地模拟器的使用效果 本期 我们将为大家介绍HarmonyOS本地模拟器的版本演进 并手把手教大家使用HarmonyOS本地模拟器 一 本地模拟器的版本演进 2021年12月31日 经过一个版本的迭代优化 随D
  • 【js学习之路】遍历数组api之 `filter `和 `map`的区别

    一 前言 数组是我们在项目中经常使用的数据类型 今天我们主要简述作用于遍历数组的api filter 和 map 的区别 二 filter和map的共同点 首先 我们主要阐述一下 filter 和 map 的共同点 api的参数都是回调函数
  • 【安全】简单解析统一身份认证:介绍、原理和实现方法

    深入解析统一身份认证 介绍 原理和实现方法 导语 统一身份认证是什么 统一身份认证的原理 统一身份认证的实现 结语 导语 随着互联网的发展和各种在线服务的普及 用户在不同的应用和平台上需要进行多次身份验证 为了简化用户的登录和减少重复操作
  • 网络安全行业热门认证证书合集

    网络安全认证证书 就和学历一样是敲门砖 拿到了可以用不到 但不能没有 技术大牛可以没有证书 但普通人不能没有 1 初级入门 就像学历在职场上展示一个人的基本素养一样 网络安全认证证书可以展示一个人在网络安全领域具备的基本知识和技能 它为初学

随机推荐

  • SpringMVC+Freemarker+jQuery实现多语言(国际化)切换

    一 spring启动配置文件修改 其中
  • cuda与driver对应版本

    CUDA Toolkit Toolkit Driver Version Linux x86 64 Driver Version Windows x86 64 Driver Version CUDA 11 4 Update 1 gt 470
  • 数据结构-带头节点的单链表(C语言)超详细讲解

    前面我们学到线性表的顺序存储结构 顺序表 发现它有着明显的缺点 插入和删除元素时需要频繁的移动元素 运算效率低 必须按事先估计的最大元素个数申请连续的存储空间 存储空间估计大了 造成浪费空间 估计小了 容易产生溢出 空间难以扩大 采用链式存
  • 每天Leetcode 刷题 初级算法篇-杨辉三角

    题目要求 力扣题解 代码 import java util ArrayList import java util List program mydemo description this is a class author Mr zeng
  • GraphEdit 的作用和使用

    GraphEdit 是一个用于建立和测试Filter graph 的可视化工具 在DirectX SDK 中附带一个可执行程序版本 在SDK目录中的Bin DXUtils graphedt exe 你可以快速测试你建立的Filter gra
  • ORACLE存储层次以及彻底删除数据的方式

    ORACLE的存储层测氛围四层 表空间 就是实际的数据文件 对应操作系统上的一个数据文件 段 回滚段 数据段 索引段 区 ORACLE分配磁盘空间的最小单元 块 ORACLE操作数据库的最小IO单元 user tables user ind
  • 【手撕代码系列】JS手写实现深拷贝

    公众号 Code程序人生 分享前端所见所闻 深拷贝是在计算机科学中非常重要的概念 尤其是在处理数据结构和对象的时候 深拷贝的目的是创建一个新的对象 它有自己的内存空间 并且其中的所有值都是原始对象的副本 这样做的好处是 可以避免在修改新对象
  • java中字符型常量的表示方法_Java中的常量,常量的表现形式和进制的转换及有符号数据表示法(原码,反码,补码)...

    1 常量 在程序执行的过程中 其值不发生改变的量 分类 1 字面值常量 字符串常量 用双引号括起来内容 字符常量 用单引号括起来的内容 整数常量 所有整数 小数常量 所有小数 布尔常量 true 或 false 空常量 null 2 自定义
  • 游戏行业未来发展趋势分析?

    未来游戏的方向与趋势 今天听了 哥的课程 我更加深入的了解了游戏行业的整体发展历程 这对于我们这一群即将进入游戏行业的校招生而言 无疑是受益匪浅的一节课 我 一个刚刚准备进入游戏行业的小白 大致猜想了游戏未来的几个发展方向与趋势 我认为 游
  • 3椭圆曲线密码学:ECDH和ECDSA

    原文链接 Elliptic Curve Cryptography ECDH and ECDSA 这篇文章是ECC系列的第三篇 在之前的文章中 我们已经知道了椭圆曲线是什么 并且为了对椭圆曲线上的点做一些数学运算我们定义了群公理 然后我们将椭
  • 静态方法中调用非静态方法

    1 常见现象 静态static方法中不能直接调用非静态non static方法 但可以通过将对象引用传入静态方法内 进而再调用该对象非静态 non static 方法 在主函数 static方法 中 我们经常需要创建某个类的实例 再引用其非
  • Mysql高级部分

    1 索引 索引 index 是帮助Mysql高效获取数据的数据结构 索引的目的在于提高查询效率 可以类比字典 可以简单理解为 排好序的快速查找数据结构 在数据之外 数据库系统还维护着满足特定查找算法的数据结构 这些数据结构以某种方式引用 指
  • tslib1.4的交叉编译

    tslib是touch screen lib 即支持触摸屏的库文件 要交叉编译qte4 5 2 就必须先要编译tslib1 4 今天做了这个工作 记录一下 平台 VMware Centos5 4 交叉编译器 arm linux 3 4 1
  • windows下使用cmake编译c++

    好久没有更新博客了 最近在做c 相关的 编译起来确实很痛苦 所以心血来潮 继续更新一下 主要还是一些跨平台的库 比如zlib libpng opencv ffmpeg 编译工具使用mingw作为主要编译环境支持 使用msys进行编译 一 下
  • R语言实战笔记--第八章 OLS回归分析

    R语言实战笔记 第八章 OLS回归分析 标签 空格分隔 R语言 回归分析 首先 是之前的文章 数理统计里面的简单回归分析 这里简单回顾一下 简单回归分析的原理 最小二乘法 即使回归函数与实际值之差的平方和最小 所以它在R中也称为OLS模型
  • 人工智能可以用来预测人口增长吗?

    人工智能可以用来预测人口增长 利用人工智能技术 可以对历史人口数据进行分析 并根据这些数据建立预测模型 从而预测未来的人口增长趋势 此外 人工智能还可以用于预测人口结构变化 人口流动趋势等方面的问题 这些预测结果可以为政府制定人口政策提供参
  • java读写文件大全(字节流读取得方法)

    原文地址 http blog sina com cn s blog 6a4af8630101et2t html 使用Java操作文本文件的方法详解 摘要 最初java是不支持对文本文件的处理的 为了弥补这个缺憾而引入了Reader和Writ
  • Ubuntu下的终端产生多标签和多标签切换快捷键

    ctrl alt t是打开一个terminal ctrl shift t是在terminal中打开多个标签 在多个标签中切换的方法 方法1 alt 1 alt 2 alt 3 方法二 ctrl pageUp ctrl pageDown ct
  • 【vision transformer】DETR原理及代码详解(四)

    本节是 DETR流程及 构建backbone和position embedding 相关部分的代码解析 一 DETR代码流程 STEP 1 Create model and criterion 构建模型和标准 STEP 2 Create t
  • IPv4和IPv6的互操作性

    概述 在IPv4到IPv6发展的过度阶段 必然出现v4和v6主机之间互操作的问题 下面从机制层面讨论互操作的可能性 并假设主机之间网络路由已经打通 IPv4客户端访问IPv6服务端 IPv4客户端访问IPv6服务端指的是服务端是双栈主机 客