全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
网络编程之IPv4与IPv6相互操作由于互联网终端不断增加,IPv4 地址长度(32位)已不能够满足要求,所以出现了 IPv6地址(128位),但是现有应用程序大部分还是采用 IPv4 地址形式,所以必须解决 IPv4 与 IPv6 之间的相互操作,使现有基于 IPv4 的应用程序能够与基于 IPv6 的应用程序相互通信。那么我们怎么实现 IPv4 客户端与 IPv6 服务器、IPv6 客户端与 IPv4 服务器之间的通信。IPv4 客户端与 IPv6 服务器假设我们主机是运行双栈,即存在 IPv4 协议栈和 IPv6 协议栈,双栈主机上的 IPv6 服务器既能处理 IPv4 客户端,也能处理 IPv6 客户端,因为 IPv4 可以映射成 IPv6 地址。下图是 IPv4 客户端与 IPv6 服务器之间的通信过程:IPv6 服务器程序创建的套接字绑定到 IPv6 通配地址和 TCP 端口号 9999。假设客户端和服务器主机都处于同一个以太网,当左侧两个客户端都发送 SYN 报文段请求与服务器建立连接时,IPv4 客户端主机在一个 IPv4 数据报中载送 SYN,IPv6 客户端主机在一个 IPv6 数据报中载送 SYN。在以太网线上包含以太网首部、IP 首部、TCP 首部以及 TCP 数据,根据以太网首部中包含的类型字段区分 IP 类型是为 IPv4 还是 IPv6,因此 IP 首部中的目的 IP 地址格式根据以太网类型字段分为 IPv4 地址和 IPv6 地址。两者的 TCP 首部是一样的,TCP 首部中包含目的端口号(即 IPv6 服务器的端口号 9999)。服务器的接收数据链路通过查看以太网类型字段把每帧传递给相应的 IP 模块。IPv4 模块结合其上的 TCP 模块检测到 IPv4 数据报的目的端口对应的是一个 IPv6 套接字,于是把该数据报 IPv4 首部中的源 IPv4 地址转换成一个等价的 IPv4 映射的 IPv6 地址。当 accept 系统调用把这个已经接受的 IPv4 客户端连接返回给服务器进程时,这个映射后的地址将作为客户的 IPv6 地址返回给服务器的 IPv6 套接字(也就是说服务器根本不知道自己是在跟 IPv4 客户端通信,客户端也不知道自己和 IPv6 的服务器通信),该连接上其余的数据报都是 IPv4 数据报。对于 IPv6 客户端,当 accept 系统调用把接受的 IPv6 客户端连接返回给服务器进程时,该客户的 IPv6 地址就是原来 IPv6 首部中的源地址,不需要进行映射,该连接上其余的数据报都是 IPv6 数据报。IPv4 的 TCP 客户端与 IPv6 的 TCP 服务器之间通信的步骤如下:首先启动 IPv6 服务器,创建一个 IPv6 的监听套接字,并且该服务器把通配地址和端口号 9999 绑定到该套接字上;IPv4 客户端调用 gethostbyname 函数找到服务器主机的一个 A 记录,服务器同时包含 A 记录和 AAAA 记录,即同时支持 IPv4 和 IPv6,对于 IPv4 客户端来说只需要 A 记录即可;IPv4 客户端调用 connect 函数向服务器发出连接请求,即客户端主机向服务器主机发送一个 IPv4 的 SYN 数据报(该 IPv4 的 SYN 中的目的地是 IPv6 套接字);服务器主机接收到来自客户端的 IPv4 的 SYN 数据报后,设置一个标志指示本连接应使用 IPv4 映射的 IPv6 地址,并响应一个 IPv4 的SYN 和 ACK 数据报。当该链接建立后,由 accept 函数把这个 IPv4 映射的 IPv6 地址返回给服务器;当服务器主机往这个 IPv4 映射的 IPv6 地址发送 TCP 报文段时,其 IP 栈产生目的地址为所映射 IPv4 地址的 IPv4 载送数据报。即客户端和服务器之间所有通信都使用 IPv4 的载送数据报;IPv6 客户端与 IPv4 服务器IPv6 的 TCP 客户端与 IPv4 的 TCP 服务器之间通信的步骤如下:首先启动 IPv4 服务器,创建一个 IPv4 的监听套接字;IPv6 客户端调用 getaddrinfo 函数查找 IPv6 地址;IPv6 客户端在作为函数参数的 IPv6 套接字地址结构中设置这个 IPv4 映射的 IPv6 地址后调用 connect 函数向服务器发出连接请求,内核检测到这个映射地址后,自动向服务器主机发送一个 IPv4 的 SYN 数据报;服务器主机接收到来自客户端的 IPv4 的 SYN 数据报后,响应一个 IPv4 的SYN 和 ACK 数据报。连接通过使用 IPv4 数据报建立;总结双栈主机上的 IPv6 服务器既能服务于 IPv4 客户,又能服务于 IPv6 客户。IPv4 客户发送给这种服务器的仍然是 IPv4 数据报,不过服务器的协议栈会把客户主机的地址转换成一个 IPv4 映射的 IPv6 地址。类似地,双栈主机上的 IPv6 客户能够与 IPv4 服务器通信,客户的解析器会把服务器主机所有的 A 记录作为 IPv4 映射的 IPv6 地址返回给客户,而客户指定这些地址之一调用 connect 将会使双栈发送一个 IPv4 的 SYN 数据报。为了使套接字编程具有可移植性,在编程实现过程中,尽量避免使用 gethostbyname 和 gethostbya
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 关于追风筝的人读书心得体会范文十篇
- 个人之间保密合同协议书范本
- 工程合伙协议书范本二人范文
- 银行微信支付服务协议模版
- 五年级上册漫画老师作文十篇
- 部编版四年级下册道德与法治期末测试卷(全优)
- 人教版六年级下册数学期末测试卷及参考答案(培优)
- 人教版六年级下册数学期末测试卷及答案(有一套)
- 人教版六年级下册数学期末测试卷附答案【完整版】
- 人教版四年级下册数学期末测试卷【易错题】
- 隔离栅施工工艺及方法
- 《紫藤萝瀑布》比较阅读资料
- 电流互感器伏安特性试验
- 智慧体育馆信息化大数据平台整体集成设计方案
- 北京协和医院规章制度汇编
- 苏教版一年级下册数学 单元复习六
- 青年教师成长的案例研究课题研究总报告
- 四川省成都市成华区2021-2022学年五年级下学期期末数学试卷(word版无答案)
- 2022年《小猪唏哩呼噜》阅读测试题及答案
- 医院个人健康体检表
- 园林专业毕业设计任务书
评论
0/150
提交评论