IPv4和IPv6的互操作性
概述
在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服务端的步骤总结如下:
- 服务端创建v6监听套接字
- 客户端通过DNS获取服务端的A记录
- 客户端向服务端的v4地址发起请求
- 服务端协议栈通过v4地址和客户端完成三次握手,并将v4到v6的映射地址返回给服务端应用程序
- 服务端向客户端发送数据时,服务端协议栈将源目地址都转为v4地址
- 整个转换过程均由服务端的IP协议栈完成,客户端和服务端均无感知
- 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主机之间互访的总结如下:
- 纯v4客户端访问双栈服务端的v6服务时,通过v4网络传输,到服务端后由服务端协议栈将v4映射成v6进行通讯。
- 双栈客户端v6访问纯v4服务端的v4服务时,客户端需获取服务端v4映射v6地址,客户端程序访问该v6地址,客户端协议栈将源地址转成本机v4地址,目的地址转成服务端v4地址,通过v4网络传输,完成和服务端的通讯。
- 双栈客户端访问双栈服务端的服务时,可以选择不同的协议进行通讯。
IPv4和IPv6的互操作性相关推荐
- java ipv4和ipv6通信_IPv4和IPv6的差异;如何实现IPv4和IPv6双协议栈的通信
1 IPv4和IPv6的差异 1.1 地址空间 IPv6 与 IPv4 比较最显著的一个改动就是使用 128 比特上的地址来代替了 32 比特长的 IPv4 地址. IPv6 中取消了广播地址, 其功 ...
- java http ipv6_如何在Java上同时支持IPv4和IPv6
小编典典 我怀疑这不是Java编程问题,而是OS网络堆栈/ OS网络配置问题: 在某些操作系统上,单个本机TCP套接字可以同时侦听IPv4和IPv6上的端口.它能够接受来自远程IPv4和远程IPv6客 ...
- 记录一次nginx升级,支持ipv4和ipv6访问https
项目要求,需要让现有网站项目支持https,并同时支持ipv6访问,经过分析,现在nginx版本较老,所以决定升级nignx,并且同步配置https和ipv6. 升级准备 服务器网络环境需要支持ipv ...
- 漫话:全球 IPv4 地址正式耗尽?是时候说说到底什么是IPv4和IPv6了!
2019年11月25日,负责英国.欧洲.中东和部分中亚地区互联网资源分配的欧洲网络协调中心(RIPE NCC)宣布,其最后的 IPv4 地址空间储备池在 11 月 25 日 UTC + 1 15:35 ...
- IPv6相比IPv4在那些方面做出了改进?IPv4 to IPv6过渡的三种tunnel技术各自的特性...
改进 地址空间的扩容,地址容量为2^128(或(43亿)^4) 配置更加简单,支持非DHCP自动配置地址: 层次化网络结构,每个地区使用相同前缀的地址范围,更加容易管理: 报头格式简单灵活,去除了IP ...
- 【计算机网络】网络层 : 总结 ( 功能 | 数据交换 | IP 数据报 | IPv4 地址 | IPv6 地址 | 路由选择协议 | 路由算法 )★★★
文章目录 一.网络层功能 二.数据交换方式 ★ 三.IP 数据报 ★ 四. IPv4 地址 ★★ 1 . IP 地址 发展 : 2 . 分类 IP 地址 3 . NAT 转换 4 . 子网划分 5 . ...
- 【计算机网络】网络层 : IPv6 协议 ( IPv6 数据包格式 | IPv6 地址表示 | IPv6 地址类型 | IPv4 与 IPv6 协议对比 | IPv4 -> IPv6 过渡策略 )
文章目录 一.IPv6 发展 二.IPv6 数据报格式 三.IPv6 和 IPv4 对比 四.IPv6 地址表示 五.IPv6 地址 类型 六.IPv4 向 IPv6 过渡策略 一.IPv6 发展 I ...
- python 编写一个函数来验证输入的字符串是否是有效的 IPv4 或 IPv6 地址_产品 | 工信部发声IPv6即将部署,你的路由需要更换吗?...
提到说话算数不得不表扬一下工信部,从最早的"提速降费"到现在的"携号转网",每一件事情都办的有条不紊,件件落实到咱们老百姓的生活上. 最近两年工信部都在忙一件大 ...
- 厚积薄发,看腾讯云如何快速从IPv4向IPv6演进?
IPv6技术在国内沉寂数十年后,在国家推进下重新登上重要舞台.2018年工业和信息化部发布了关于贯彻落实<推进互联网协议第六版(IPv6)规模部署行动计划>的通知.不但展示国家推动IPv6 ...
最新文章
- 最新的全球编程语言,操作系统,web服务器等使用率分析报告
- PLSQL developer 连接不上64位Oracle 解决办法
- 如何用MLflow做机器学习实验效果比对
- 除了PS,原来这个也可以轻松实现图像处理!
- linux oracle流复制,oracle 流复制
- 【JS 逆向百例】转变思路,少走弯路,X米加密分析
- 在eclipse中使用hadoop插件
- C语言的“编译时多态”
- 支付宝研究员兼OceanBase总架构师杨传辉:我在数据库梦之队的十年成长路
- 爬虫神器:一条命令下载《复仇者联盟3:无限战争》
- 计算机组装已维护的学术报告,计算机硬件组装维护的策略研究
- python画柱状图-Python Excel 绘制柱形图
- pku 3592 Instantaneous Transference tarjan缩点重建图+spfa求最长路
- 论文笔记_S2D.63_2020-ICRA_LiStereo:从雷达和双目立体图像生成稠密深度图
- 这是阿里人手机里,这一年最舍不得删的照片
- 计算机算法常用英语,计算机术语 算法相关术语
- SLAM--位姿图优化和PnP求解
- Mysql授权root账户允许远程连接访问
- js彻底解决中文乱码问题
- .Net(C#)腾讯信鸽推送
热门文章
- SpringBoot整合Druid,开启druid监控平台
- Linux网络通信——TCP通信流程
- C# SHA1加密算法,并转为大写
- [Nacos] 业务实例如何指定IP注入Nacos
- ASP.NET中的过滤器
- 写个关于使用cocostudio Armature实现动画自由切换的小demo
- 机器学习算法系列(五)- Lasso回归算法(Lasso Regression Algorithm)
- opencv中的RGB改变通道的数值,而对整张图的影响
- email是指利用计算机网络及时地,2015石家庄信息技术中考选择题
- unity 中2d游戏游戏角色与场景物体层级关系问题解决