IPv4与IPv6的互操作性

本文探讨了IPv4与IPv6的互操作性,重点介绍了双栈主机如何处理IPv4和IPv6的连接。IPv4客户端可以连接到支持IPv6的服务器,而IPv6客户端能通过IPv4映射地址与IPv4服务器通信。同时,文章还列举了IPv6地址测试宏用于判断不同类型的IPv6地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IPv4与IPv6的互操作性

双栈主机的一个基本特性是其上的IPv6服务器既能处理IPV4客户,也能处理IPV6客户,这是通过IPV4映射IPV6地址实现的

ipv4客户与ipv6服务器

>IPV6服务器创建一个ipv6监听套接字,IPV4客户端通过gethostbyname找到服务器的一个A记录,(虽然IPV6服务器有A记录和AAAA记录),IPv4客户端只使用A记录,客户端通过connect,导致客户端向服务器主机发送一个IPV4 SYN到服务器,  服务器(IPV6)接收这个IPV4 SYN,设置一个标志指示本链接使用IPV4映射IPV6地址,然后响应一个IPV4 SYN/ACK, 建立链接后,ACCEPT返回给服务器的地址就是个IPV4映射的IPV6地址
当服务器往这个ipv4映射的ipv6地址发送TCP分节时,,其IP栈产生的目的地址为所映射IPV4地址的ipv4载送数据包

IPV4监听套接字只能接受来自IPV4客户的连接
如果一个服务器绑定了一个IPV6监听套接字,而且该套接字未设置IPV6_V6ONLY套接字选项,那么该监听套接字既能接收来自IPV4客户端的请求,也能接受来自IPV6客户端的请求

IPv6客户和IPv4服务器

那么IPvc6的客户端会调用getaddrinfo() 查找IPv4的地址,,既然服务器值支持Ipv4,那么服务器主机只有A记录, getaddrinfo()返回给客户的是一个IPv4地址到ipv6地址的映射

IPv6地址测试宏

int IN6_IS_ADDR_UNSPECIFIED(const struct in6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值