iOS ipv6
这当中最重要的两个概念是DNS64和NAT64。
DNS64
DNS64说白了是用来帮助host获取IPv6地址的,传统的DNS服务器可以把域名转换成IPv4地址,但我们的iPhone设备如果处于IPv6环境下,只能去获取IPv6的地址。DNS64就像一个中间代理,把传统服务器返回的IPv4地址通过特殊的映射方式转换成一个看着像IPv6地址的地址(IPv4的核,IPv6的壳),转换其实很简单,用公式可以这样表达:
64:ff9b::IPv4 = IPv6
NAT64
DNS64帮助拿到IPv6的地址后,接下来就是NAT64登场,帮助IPv6的Packet顺利接入IPv4的公网当中。IPv4的公网环境路由器只认识IPv4的地址,所有这里当然也需要一个中间设备来做协议转换。NAT64就扮演这个角色。
我在上面的流程图当中已经比较清晰的画出了NAT64的工作方式。其实就是内部同时有IPv4和IPv6的网卡,IPv4的网卡配了一个IPv4的地址池子,再通过端口映射的方式将IPv4地址和IPv6地址对应,同时再做一些协议的转换,毕竟IPv4和IPv6的header完全不同。说白了就是一个内部路由的功能,将奔向IPv4公网的包做了地址和协议的转换。
也可以跳过DNS查询,直接自己将IPv4的地址转化成IPv6的地址。类似这样:
const char* ipv4mapped_str ="64:ff9b::121.43.xx.xxx";