《网络编程》IPv4 与 IPv6 相互操作

本文介绍了如何实现IPv4客户端与IPv6服务器、IPv6客户端与IPv4服务器之间的通信。通过双栈主机和套接字编程,IPv4数据报可以被转换成IPv4映射的IPv6地址,使得不同协议的主机能够相互通信。建议在编程中使用getaddrinfo和getnameinfo函数以提高可移植性。

前言      

        由于互联网终端不断增加,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 数据,根据以太网首部中包含的类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值