标签:
IPv6是下一代互联网的协议,它的提出最初是因为随着互联网的迅速发展,IPv4定义的有限地址空间将被耗尽,地址空间的不足必将妨碍互联网的进一步发展。通俗的说就是,我们的网络ip地址不够用了, 我们每台电脑上internet都需要一个身份证明,就是说的IP地址, ipv4的可使用地址为 2的32次方个地址,而ipv6可使用的ip地址为 2的128次方, 哈哈,妈妈再也不用担心我们ip地址不够用啦,当然ipv6的好处远不止只是地址的增加。还有以下好处:
更小的路由表
IPv6的地址分配一开始就遵循聚类(Aggregation)的原则,这使得路由器能在路由表中用一条记录(Entry)表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。
增强的组播(Multicast)支持以及对流的支持(Flow-control)
这使得网络上的多媒体应用有了长足发展的机会,为服务质量(QoS)控制提供了良好的网络平台。
加入了对自动配置(Auto-configuration)的支持
这是对DHCP协议的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷。
更高的安全性
在使用IPv6网络中用户可以对网络层的数据进行加密并对IP报文进行校验,这极大的增强了网络安全
通过上面的了解,大家肯定明白苹果为什么要求我们的app要支持ipv6了把,并且态度强硬。 苹果这是为了以后发展上不受ipv的影响,所以提前快刀斩乱麻。
废话说了很多了: 参照:http://www.jianshu.com/p/69ed4489762c
进入正文:
我们用高级的API完全能够实现我们的需求,而且高级API封装的很便于使用,很多底层的像适配IPv6的工作都已经帮我们做好了。而用底层API会有大量的工作要我们自己来做,更容易产生bug。但你如果确实需要用底层的POSIX socket API。
这个方法在著名的Reachability类中是用到了的,而我们常用的网络库AFNetworking里面有Reachability。所以用到的同学得好好查一下了,大家没事可以去看看AFnetworking/issues,然后也可以问一问,暂时貌似是还没有解决这个问题点击打开链接 issues,
搜一下工程里有没有下面的这些API,这些都是只针对IPv4做处理的,有的话就删了。
inet_addr()
inet_aton()
inet_lnaof()
inet_makeaddr()
inet_netof()
inet_network()
inet_ntoa()
inet_ntoa_r()
bindresvport()
getipv4sourcefilter()
setipv4sourcefilter()
如果用到了下面左边的这些IPv4的类型,那么它们相应的IPv6类型也需要做处理
具体的对应字段为: 大家一定要查一查
最后一步:那就是请尝试搭建一个ipv6的环境,去测试整个项目,具体的搭建ipv6环境的步骤如下:
最后我们来搭一个IPv6的测试环境吧,你所需要的就是一台用非Wi-Fi的方式上网的Mac电脑。
我们的要做的其实就是用Mac做一个热点,然后用iPhone连接这个Wi-Fi,听起来很容易,我相信大家在公司就是这么干的吧。
区别是这次我们产生的是一个本地的IPv6 DNS64/NAT64网络,这项功能是OS X 10.11新加的。和我们以前开启热点方式不一样的地方在于,我们在“System Preferences”界面选中“Sharing”的同时,要按住“Option”键。
之后在“Sharing”界面中,我们会看到和之前不一样的地方,就是红框所标的地方,多了一个叫“Create NAT64 Network”的选框,选中它。
之后就是按照正常的创建热点的流程走完就行了。
现在我们用iPhone连接上这个刚创建好的热点就可以测试了,注意此时要把iPhone设成飞行模式,以保证只用Wi-Fi上网。
总结:
1.我相信陆陆续续肯定会有更多的开发者在兼容ipv6的过程中会出现各种各样的问题,到时候再去论坛,技术群中再探索把。
iOS开发之苹果应用6.1日起需兼容IPv6,那么作为开发者我们需要做些什么呢?【科普IPV6】
标签:
原文地址:http://blog.csdn.net/zhonggaorong/article/details/51362068