zoukankan      html  css  js  c++  java
  • IPv6-only 的兼容性解决方案【摘抄】

    原文地址:http://www.jianshu.com/p/8837739251ad?utm_campaign=hugo&utm_medium=reader_share&utm_content=note&utm_source=weixin-friends

    前几天Apple宣布 6月1日后所有应用必须支持IPv6-only网络 今天抽空看了下这方面的知识

    首先解释下IPv6的是什么?

    维基百科的定义如下:
    IPv6是Internet Protocol version 6的缩写 全名为互联网通讯协议第6版 是互联网协议的最新版本,用于分组交换互联网络的网络层协议,旨在解决IPv4地址枯竭问题
    IPv6具有比IPv4大得多的编码地址空间。这是因为IPv6采用了128位的地址,而IPv4使用的是32位。因此新增的地址空间支持2128(约3.4 ×1038)个地址

    优点如下:

    1. IPv6具有更大的地址空间
    2. IPv6使用更小的路由表 (更快的路由)
    3. IPv6具有更高的安全性

    APP中如何使用IPv6

    1. 使用更高层次的网络API(Use High-Level Networking Frameworks) 避免使用socket API

    蓝色部分API 默认都支持IPv6


    API

    也就是说
    .WebKit
    .(NSURLSession NSURLRequest NSURLConnection)
    .CFNetwork
    这些API默认都已经支持IPv6
    而值得庆幸的时 我们使用的大多数第三方网络库使用的也是这些API
    比如AFNetWorking 我特意找了一段代码


    AFNetWoring DEMO

    下图是Alamofire创建请求的代码


    Alamofire DEMO

    Alamofire使用的是High-Level Networking Frameworks(NSURLRequest) 也不存在兼容性问题
    这意味着大多数情况下 我们不需要做什么 就可以兼容IPv6

    如果你不能避免使用socket API 请参考这个指南
    RFC4038: Application Aspects of IPv6 Transition
    或者参考谷歌的开源库CocoaAsyncSocket

    2. 不要使用IP地址
    比如使用SCNetworkReachabilityCreateWithName API 时

      func SCNetworkReachabilityCreateWithName(_ allocator:     CFAllocator?, _ nodename: UnsafePointer<Int8>) -> SCNetworkReachability?

    使用主机名或者主机域名访问

    3.检查IPv4代码
    项目中不能使用如下代码:

    inet_addr()
    inet_aton()
    inet_lnaof()
    inet_makeaddr()
    inet_netof()
    inet_network()
    inet_ntoa()
    inet_ntoa_r()
    bindresvport()
    getipv4sourcefilter()
    setipv4sourcefilter()

    IPv4->IPv6类型对照表

    如何测试?

    利用Mac创建一个 IPv6 WIFI 热点 手机连接该WIFI即可测试
    (必须保证你的Mac已连接到Internet 并且不是通过WIFI的方式)
    1. 创建 IPv6 WIFI热点
    点击系统设置(System Preferences)-> 按住Option键 -> 点击共享(Sharing


    共享

    选择互联网共享(Internet Sharing


    互联网共享

    选中 创建NaT64网络 (Create NAT64 Network)


    systempreferences_sharing_internetsharing_ipv6_2x.png

    选择 一个共享来源连接


    共享来源连接

    配置WIFI选项


    WIFI选项配置

    输入你的热点名称和密码 最后启用互联网共享(Internet Sharing)选中checkbo


    启用 互联网共享

    热点开启效果

    之后通过手机连接该热点 完成测试



    文/sprint(简书作者)
    原文链接:http://www.jianshu.com/p/8837739251ad
    著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
  • 相关阅读:
    Portal技术介绍
    DBlibrary 常用函数
    【转】如何让你的WinForm嵌入桌面
    【转】Windows快捷方式文件格式解析(中文)
    合理安排时间
    javascript脚本压缩工具JSEncoder实现
    【转及整理】C#管理快捷方式文件创建
    【转】房产崩盘路线图
    【转】关于个人知识管理(PKM)的一些基本概念
    Javascript代码压缩、加密算法的破解分析及工具实现
  • 原文地址:https://www.cnblogs.com/weitaozi/p/5818980.html
Copyright © 2011-2022 走看看