美文网首页工程iOS DeveloperiOS
IPv6-only 你准备好了吗

IPv6-only 你准备好了吗

作者: invokefear | 来源:发表于2016-05-06 12:53 被阅读1563次

    WWDC 2015宣布iOS 9 网络服务切换到IPv6-only。从2016年6月1号开始,所有提交到App Store的App必须支持IPv6-only网络。

    1 无感情况

    你的App网络请求只采用 NSURLSession 和 CFNetwork API ,那么你的App不用关心IPv6-only的要求。

    使用以下第三方库,当然也是没有问题地:

    AFNetworking  - 为iOS 和 Mac OSX 设计的优秀网络库。构建在Foundation URL Loading System 之上,包含设计丰富,良好的API。

    Alamofire - 是采用Swift语言写的HTTP网络库。

    ASIHTTPRequest - 包装 CFNetwoking API 了的网络库,已经停止维护了。

    2 有感情况

    1 在协议中直接采用IP地址。许多通信协议,例如SIP,FTP, WebSockets, P2PP,在信息中直接采用IP地址。

    2 在配置文件中直接采用IP地址。

    3 网络检查。许多App在发起网络请求的时候会检查网络连接情况,采用network reachability APIs 是传递IP地址。

    4 使用 low-level 网络API。一些App中直接操控socket和其他基础的网络API,例如

    gethostbyname

    gethostbyname2

    inet_addr()

    inet_aton()

    inet_lnaof()

    inet_makeaddr()

    inet_netof()

    inet_network()

    inet_ntoa()

    inet_ntoa_r()

    bindresvport()

    getipv4sourcefilter()

    setipv4sourcefilter()

    5 使用small address family storage containers。一些app 和网络库采用小容量的存储单元存储地址。例如uint32_t,in_addr, sockaddr_in,这些是32bits或者更小。

    IPv4 vs IPv6

    6 你的Reachability 是否支持IPv6呢?

    Apple :2016-05-05Revised to clarify and document how Reachability supports IPv6.

    AFNetworking 3.0: Added support for IPv6 to Reachability Implemented by SAMUKEI and Kevin Harwood in#3174

    7 目前国内主流的第三方SDk  新浪,微信等都在为IPv6-only更新了版本

    3 分析 -- 确保 IPv6DNS64/NAT64 兼容

    App网络请求可以采用高级API框架,或者low-level POSIX socket APIs。在大多数情况下高级API已经足够我们的使用场景,并且简单易用。

    网络框架和API层次

    4 测试App是否兼容IPv6DNS64/NAT64

    最简单的方式是在本地Mac上部署IPv6DNS64/NAT64服务。

    A local Mac-based IPv6 DNS64/NAT64 network

    使用Mac建立本地IPv6 Wi-Fi 网络

    1 确保你的Mac连网,但不是通过Wi-Fi

    2 打开系统偏好设置


    系统偏好设置

    3 按住Option键,点击共享

    按照以上配置 

    4 不要忘了点击 Wi- i 选项进行配置你的Wifi

    最后选上 互联网共享

     5 是时候链接你的wifi进行测试你的App了。

    最终状态

    4 参考

    Supporting IPv6 DNS64/NAT64 Networks

    Your App and Next Generation Networks

    Supporting IPv6 in iOS 9

    The future is forever world Ipv6 Launch

    sockaddr

    Reachability

    5 广告时间

    欢迎对iOS感兴趣,保持学习心态,保持创业心态的同学,加入我们 - 今日头条

    简历发送至: liukegang@bytedance.com

    加我为好友:

    相关文章

      网友评论

      • vision_colion:对于afnetworking3.0没影响,是不是说如果用的3.0,以前怎么请求数据,IPv6下也是怎么怎么请求数据,是吧?还是AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
      • d214da088bee:我们使用了TCP的方式 连接 某一域名, 通过 IPV6测试环境, 发现 无法连接成功, 但是 使用 其他网络环境是正常的. 请问 这个需要 怎么 修改 ? 是因为 域名 解析 到 IPV4 地址上了吗?
      • 可可leaf:如果老项目 socket底层全是自己写的 只兼容ipv4 怎么办..
        d214da088bee:@可可leaf 这个只能自己 改掉啊
      • 05928c0c7c63:对AFNetworking框架没影响吗?
        05928c0c7c63: @invokefear 好的,谢谢
        invokefear:@我是帅帅的卡卡西 没有,3.0后基于NSURLSession,之前NSURLConnection也是没有问题的,都是高级API

      本文标题:IPv6-only 你准备好了吗

      本文链接:https://www.haomeiwen.com/subject/bwqjrttx.html