BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

如何确保你的 APP 支持 IPv6

| 作者 百占辉 关注 0 他的粉丝 发布于 2016年8月29日. 估计阅读时间: 4 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

由于移动互联网服务商拥有的 IPv4 地址即将耗尽,他们只能给出 IPv6地址或者电信级 NATted 的 IPv4 地址,Apple 在今年五月四日宣布,从六月1日起,所有提交至 AppStore 的应用必须支持 IPv6 协议。同时,在 Google IPv6 使用统计中可以看出,当前 IPv6 的采用率已经接近 13%。所以,使你的 App 支持 IPv6变得越来越重要,尤其是移动 App。IPv6 已经开始出现在 EMail Headers、SIP、DNS 等地方,你的 App 需要能够解析这些在 URL、头部字段和数据中的 IPv6 地址。至少得保证 App 第一次遇到这些 128 位或者更长的字符串时不会崩溃。

App支持 IPv6 并不意味着它仅仅支持 IPv6。相当大一部分网络依然使用 IPv4 并且将持续很长一段时间,你得确保你的 App 依然支持 IPv4。同时,一些互联网服务商早已耗尽 IPv4 地址,从而选择将电信级 NATted 的 IPv4 地址分配给客户。而有的干脆选择仅部署 IPv6。这部分客户连接到 IPv4 网络的唯一方法是通过 6to4 隧道进行数据传输,它的原理是使用 IPv6 作为 IPv4 的传输层。基于以上原因,当前最好的方式是支持双协议栈。

在 Web 服务应用中,常常会使用正则表达式来识别 IPv4,这些表达式遇到 IPv6 将会失效。事实上,由于 IPv6 地址有许多不同的格式,不推荐使用正则式来识别 IPv6。可以尝试使用一些开源库来做这部分工作。另外,应检查一下存放 IP 地址的数据库字段是否已经扩展到 128 位,确保你的应用部署到了支持双协议栈的操作系统中,确保你使用的库也支持 IPv6,否则可能出现不必要的错误。总而言之,之前所有涉及 IP 的地方都需要检查以确保其能够支持 IPv6。

移动 App 经常使用 RESTful URL 与 服务端 App 进行通信,而服务端 App 可能使用 URL 与 LDAP 服务数据库或其他 RESTful 服务通信。由于 IPv6 地址以 ":" 为分隔符,而 host和端口也是同样的分隔符,所以在 URLs 中使用 IPv6 需要使用方括号加以区分:https://[2111:500:4:13::128]:443/

在 IPv4 网络中,DNS 记录可以将域名翻译成 IPv4 地址,这个地址称之为 A 记录。同样在 IPv6 网络中,返回的 IPv6 地址的长度是 IPv4 地址的四倍,称之为 AAAA 记录。在进行 DNS 查询时,一个单独的域名可以同时拥有一个 A 记录和一个 AAAA 记录,所以域名可以被翻译为一个 IPv4 地址和一个 IPv6 地址。如果你同时获得了一个 A 记录和一个 AAAA 记录,你需要同时使用两个地址进行访问,并选取访问速度更快的那个地址。另外,当一些网络服务使用 IPv6 时,IP 地理位置系统需要及时更新其数据库。

当一些客户端程序使用 IP socket 进行跨进程通信和一些服务端程序访问同一个主机中的其他服务时,就要使用到被称为环回地址的 IP 地址,通常是 localhost。在 IPv4 中,localhost 可以为 127.0.0.0 至 127.255.255.255 之间的任意地址。而在 IPv6中,有且仅有一个环回地址 ::1。所以最好使用 localhost 当做环回地址而不是特定的 IP 地址。

测试,当一切条件完备以后,还需要一些测试。如果你是公共网站,可以使用类似于 internet.nl 的开放工具进行 IPv6 访问测试。


感谢夏雪对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT