IPv4 客户与IPv6服务器_UNP

1.让服务监听在ipv6的模式下(这样既可以接收ipv4客户端,也可以接收ipv6客户端。如果监听在ipv4模式下,则只能接受ipv4客户的连接)

2.客户端判断自己的网络环境,如果是ipv4则连接服务器的ipv4地址,若ipv6则连接服务器的ipv6地址即可。因为服务器监听在ipv6的模式下,所以ipv4的客户端到达服务器时,服务器主机内核的网络模块会自动将ipv4地址补齐到ipv6的地址格式(具体补齐方式是前面补充::ffff)。如下两个地址,分别表示ipv4客户端跟ipv6客户端通过tcp连接到服务器时,服务器的日志打印内容:

connection from [::ffff:47.91.73.215]:35768     

connection from [2001:470:1f04:10ce:a00:4dc1::]:47308
 

数据链路层通过查看以太网首部,0x0800//0x86dd 区分IPV4 OR IPV6 。将数据分发到不同的IP 模块,IPV4 根据端口信息获知这是一个IPV6 端口,IPv4 就将数据包伪造成一个IPV6数据包。

IPV4 客户端根据gethostbyname 获得A(or AAAA) 记录,即通过DNS查询IPV4。connect 发送SYN到达服务器时,发现是IPV4  设置一个标志 指示IPV4 应该被映射为ipv6。所以 只有在服务器端进行了IP的版本映射。

IPV4 客户端 和 IPV6服务器之间,发送IPV4数据包

IPV6 客户端 和IPV4服务器之间,发送IPV4 数据包

原因在于 iPV4 地址可以转换为一个唯一的IPV6 地址, 所以都采用降版本使用。

猜你喜欢

转载自blog.csdn.net/u012516571/article/details/88043799
今日推荐