var appInsights=window.appInsights||function(config){
function r(config){t[config]=function(){var i=arguments;t.queue.push(function(){t[config].apply(t,i)})}}var t={config:config},u=document,e=window,o="script",s=u.createElement(o),i,f;for(s.src=config.url||"//az416426.vo.msecnd.net/scripts/a/ai.0.js",u.getElementsByTagName(o)[0].parentNode.appendChild(s),t.cookie=u.cookie,t.queue=[],i=["Event","Exception","Metric","PageView","Trace"];i.length;)r("track"+i.pop());return r("setAuthenticatedUserContext"),r("clearAuthenticatedUserContext"),config.disableExceptionTracking||(i="onerror",r("_"+i),f=e[i],e[i]=function(config,r,u,e,o){var s=f&&f(config,r,u,e,o);return s!==!0&&t["_"+i](config,r,u,e,o),s}),t
}({
instrumentationKey:"b2e35952-fd24-45c1-a4c5-1b24703d79e7"
});
window.appInsights=appInsights;
appInsights.trackPageView();

【微信要跪】 iOS 应用如何完全支持 IPv6-ONLY 网络?

警告

您当前查看的页面是未经授权的转载!
如果当前版本排版错误,请前往查看最新版本:http://www.cnblogs.com/qin-nz/p/ipv6-only-ios-application.html

if (document.domain.match("cnblogs.com") !=null){document.getElementById("none-cnblogs-attention").hidden="hidden"}

提示

更新时间:2016年05月07日。

最近一条新闻引起了我的注意:

注解

5月5日消息,苹果昨日向开发者发出提醒,App Store将于今年6月1日实施全新策略,届时所有提交至苹果App Store的iOS应用申请必须要兼容面向硬件识别和网络路由的最新互联网协议–IPv6-only标准。

什么是 IPv6-ONLY ?

以前,大家都在用 IPv4,就是地址看起来是 114.255.40.66 的样子。然而,这样的地址已经不够用了,就有了类似 2001:da8:215:4009:250:56ff:fe97:40c7 这样的 IP 地址。

目前,一个网卡会同时使用这两张地址;在未来,一个网卡将仅有后面这样的 IPv6 地址。
使用这两种地址的设备是不能互相访问的,后来有了一些过渡技术让他们在某些情况下可以互相访问了。(如 DNS64/NAT64)

如何满足苹果要求?

?苹果公司为什么要这么做?

现在有极小一部分用户处在IPv6-ONLY的环境中,未来这个比例会扩大。

苹果这样要求,对于大多数开发者而言,并不困难。目前大多数应用无需任何操作即可满足要求。

?我不太懂这些,我该怎么做呢?

在你的应用中使用域名(如 www.bupt.edu.cn),不要在任何地方使用 IPv4地址(114.255.40.66)。

?我的服务器必须有 IPv6 地址么?

不是的,服务器只需要有公网 IPv4 地址即可,但要求必须使用域名(FQDN)来表示服务器。

如何创造 IPv6-ONLY 测试环境

MacOS 提供了这个功能。
使用 Mac 把有线网络共享到 WiFi,中间勾选 创建NAT64网络 即可。

详情可参看 Apple Support

IPv6客户端访问IPv4服务器原理

首先,这个是无法直接访问的,必须网络的提供商支持过渡技术。

  • 第一步:DNS 污染

    例如我们想要访问 example.com ,假设这个网站只有 IPv4 地址(93.184.216.34,用16进制表示为 5d b8 d8 22)
    那么,被“污染”的DNS返回的 IP 地址是 64:ff9b::5db8:d822
    其中 `64:ff9b::/96`是IANA分配用于DNS64的前缀。

  • 第二步:IPv6 转 IPv4

    访问 64:ff9b::5db8:d822 时,IPv6 包头被替换为 IPv4 包头,继续访问。
    同时回来的数据包会被做反向处理。

详情可参看
RFC6146
RFC6147

现有应用的支持情况

  • QQ 【支持】
  • 淘宝 【支持】
  • 高德地图 【支持】
  • Worktile 【不支持】
  • Wechat 【不支持】

我本人不用微信很久了,但我知道,微信的DNS查询,使用的 HTTP 协议自己封装的,这样在 IPv4 网络下可以避免相当多的问题。
如图,微信直接查询 A 记录,即使我的设备在 IPv6-ONLY 的网络环境下。
因此,微信就跪掉了……



声明

【微信要跪】 iOS 应用如何完全支持 IPv6-ONLY 网络? 由 勤奋的小孩 创作,采用 知识共享 署名-非商业性使用-禁止演绎 4.0 国际 许可协议进行许可。
本许可协议授权之外的使用权限可以从 http://space.cnblogs.com/msg/send/qin-nz 处获得。

【微信要跪】 iOS 应用如何完全支持 IPv6-ONLY 网络?的更多相关文章

  1. iOS应用支持IPV6,就那点事儿

    原文连接   果然是苹果打个哈欠,iOS行业内就得起一次风暴呀.自从5月初Apple明文规定所有开发者在6月1号以后提交新版本需要支持IPV6-Only的网络,大家便开始热火朝天的研究如何支持IPV6 ...

  2. iOS应用支持IPV6

    一.IPV6-Only支持是啥? 首先IPV6,是对IPV4地址空间的扩充.目前当我们用iOS设备连接上Wifi.4G.3G等网络时,设备被分配的地址均是IPV4地址,但是随着运营商和企业逐渐部署IP ...

  3. iOS 上线因iPv6被拒,查询服务器是否支持iPv6,mac设置iPv6网络,手机测试iPv6

    一. iOS----如何检查域名是否支持ipv6 iOS----------如何检查域名是否支持ipv6 1.检查你所用到的库,像af 3.0以上什么的(不用改),其他的库自己去搜下是否支持ipv6吧 ...

  4. iOS 应用如何完全支持 IPv6-ONLY 网络?

    iOS 应用如何完全支持 IPv6-ONLY 网络?¶ 警告 您当前查看的页面是未经授权的转载! 如果当前版本排版错误,请前往查看最新版本:http://www.cnblogs.com/qin-nz/ ...

  5. iOS 支持 IPv6

    苹果的规定:2016年6月1日提交到App Store必须支持IPv6-only网络. 官方文档:https://developer.apple.com/library/mac/documentati ...

  6. 关于移动端input框 在微信中 和ios中无法输入文字的问题

    这个是一个提交的页面但是总是无法输入进去文字 在uc中是可以的 但是在微信中 或者ios自带浏览器是无法输入的  绞尽脑汁  找了半天  才发现自己多加了一段代码(这个代码是模版中自带的   我靠) ...

  7. 解决在微信中部分IOS不能自动播放背景音乐

    前言在做各种HTML5场景页面的时候,插入背景音乐是一个很普遍的需求.我们都知道,IOS下的safari是无法自动播放音乐的,以至一直以来造成一种错误的认识,iso是无法自动播放媒体资源的.直到微信火 ...

  8. 微信内置浏览器对于html5的支持

    微信内置浏览器对于html5的支持 来源: 作者: 热度:102 日期:14-06-10, 09:10 AM 我在做针对微信的HTML5应用, 目前遇到的几个问题是 一. 安卓版微信直接调用系统浏览器 ...

  9. 关于微信豆苹果(IOS)用户1比10充值方法

    ​ 微信iOS端微信7.0.20版本之后就上线了微信豆功能,相比大家对微信豆已经不陌生了. 微信官方现在给出了微信豆的含义,微信豆是用于支付微信内虚拟物品的道具,支持在视频号中购买虚拟礼物.也可以对公 ...

随机推荐

  1. cf732f

    思路:先缩点,再以最大连同分量为根dfs,代码太垃圾不想贴

  2. Breakpoint is not hit

    新拿到一个Silverlight项目,能够正常运行,但是一旦运行起来,断点处由实心点变成了空心的,并警告:The breakpoint will not currently be hit. No sy ...

  3. VS中展开和折叠代码

    VS2005代码编辑器的展开和折叠代码确实很方便和实用.以下是展开代码和折叠代码所用到的快捷键,很常用: Ctrl + M + O: 折叠所有方法 Ctrl + M + M: 折叠或者展开当前方法 C ...

  4. 常见绘图框架-(Charts)

    swift 出来后有很多优秀的第三方绘图.动画框架,最近项目需要使用了 Charts Github: https://github.com/danielgindi/Charts 因为是在Object- ...

  5. CentOS 安装rz和sz命令

    虚机装了CentOS7.2最小版本, 结果上去后发现rz命令不能用 yum install lrzsz  安装完成:

  6. VS2010 使用WebService

    vs2010上面找不到直接创建webservice模板方式了.可以通过一下方式创建. 1.如果直接选择 .NET 4.0,可以选择 ASP.NET Empty Web Site/Application ...

  7. 跟我一起玩Win32开发(转自CSDN-东邪独孤)

    跟我一起玩Win32开发(1):关于C++的几个要点 跟我一起玩Win32开发(2):完整的开发流程 跟我一起玩Win32开发(3):窗口的重绘 跟我一起玩Win32开发(4):创建菜单 跟我一起玩W ...

  8. String、StringBuffer、StringBuilder的区别

    在日常开发过程中String字符串估计是被用到最多的变量了,最近看了一些String.StringBuffer和StringBuilder的东西,三者都可以对字符串进行操作,他们究竟有什么区别,以及适 ...

  9. centos7搭建samb

    1,smb配置文件 [global] workgroup = WORKGROUP netbios name = LinuxSir05 server string = Linux Samba Serve ...

  10. Windows 2012 R2图标以及字体颜色发生变化更改成默认设置

    1. 在桌面按"Win+R",然后输出regedit.2. 定位到HKEY_CURRENT_USER\Control panel\Colors3. 对照下面提供给您的初始化颜色的注 ...