2016 - 2024

感恩一路有你

如何适配IPv6网络环境?

浏览量:3991 时间:2024-08-08 23:02:43 作者:采采

自2016年6月1日起,苹果公司强制所有的App必须支持纯IPv6网络环境。这项措施将对IPv6网络的普及起到一定的推动作用,并体现了Apple作为国际大厂的担当。本文将给出一些适配IPv6网络环境的方法。

高级API vs. 底层API

首先,我们需要知道在iOS开发中,有高级API和底层API两种类型的网络库。高级API已经封装了底层适配IPv6的工作,使用起来更加方便,同时也避免了产生过多的bug。相反,使用底层API会让自己承担更多的工作量并且容易出现bug。

图示展示了蓝色部分的API不存在兼容性问题,而我们平时自己用的包括第三方的网络库大部分都是用的这些API。因此,在大多数情况下,我们可以使用高级API完全满足我们的需求。

如果你确实需要使用底层的POSIX socket API,请参考RFC4038: Application Aspects of IPv6 Transition的指导。例如,nodename参数不应该传IP地址,而应该使用域名。

搭建IPv6测试环境

最好的学习方法就是亲身实践。那么,如何搭建一个IPv6测试环境呢?只需要一台用非Wi-Fi方式上网的Mac电脑即可。接下来,我们将教您如何搭建测试环境:

1. 使用Mac做一个热点,并用iPhone连接这个Wi-Fi。

2. 产生的是一个本地的IPv6 DNS64/NAT64网络,这是OS X 10.11新增的功能。在“System Preferences”界面选中“Sharing”的同时,要按住“Option”键。

3. 在“Sharing”界面中,我们会看到“Create NAT64 Network”的选框,选中它。

4. 搜一下工程里有没有下面的API,这些都是只针对IPv4做处理的,有的话就删了。

5. 具体的对应字段可参考图示。

DNS64和NAT64的重要性

在适配IPv6网络环境时,最重要的两个概念是DNS64和NAT64。我们通常使用getaddrinfo函数来解析host。但是,如果端口号部分的输入参数是数字类型,会导致返回的结果里端口号被修改。修改办法是在DNS query结果里手动将端口号再改回。或者,您可以跳过DNS查询,直接自己将IPv4的地址转化成IPv6的地址。

总结

通过本文的介绍,我们知道了苹果从2016年6月1号开始,强制所有app必须支持纯IPv6的网络环境。我们也了解到了高级API和底层API两种类型的网络库,并了解到了如何搭建IPv6测试环境。最后,我们明白了DNS64和NAT64的重要性以及如何适配IPv6网络环境。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。