4.7.2 IPv4与IPv6之间的通信编程
2025年09月21日
4.7.2 IPv4与IPv6之间的通信编程
IPv6的socket提供了与原来兼容的函数,使得用户可以透明的来编写支持IPv6的网络应用程序。在这里讨论时假设所有的主机都运行有双协议栈。通信的基本模型如图4.15所示,基本原理就是使用IPv4映射的IPv6地址与服务器通信。
结合图4.15可以把IPv4 Tcp客户与IPv6服务器之间的通信的步骤有如下几点:
(1)启动一个IPv6服务器,创建一个IPv6的监听套接口,假定改套接口绑定了通配地址。
(2)客户进程调用gethostbyname找到A记录也就是IPv4的地址,然后connect,客户主机向服务器发送一个IPv4的SYN。
图4.15 IPv4客户端与IPv6的服务器之间的通信图
(3)服务器主机收到这个发往IPv6监听套接口的IPv4 SYN,置一个标志,表明这个连接使用IPv4映射的IPv6地址,然后响应一个IPv4的SYN/ACK当这个连接建立后,accept返回给服务器的地址就是这个IPv4映射的IPv6的地址。
(4)在客户和服务器之间的所有通信都使用IPv4数据。