使用Java开发兼容IPv6的网络应用程序 - 编程入门网
使用Java开发兼容IPv6的网络应用程序时间:2011-09-04 IBM 朱益盛 杨晖 傅啸简介:根据现有 IPv4 地址的部署速度,剩余的地址将在 10 到 20 年被使用殆尽。因此网络逐渐从 IPv4 向 IPv6 转换是不可避免的,相应的各种网络应用程序都将支持 IPv6。对于 Java,从其 1.4 版开始对 IPv6 提供了较好的支持,对程序员基本屏蔽了 IPv4 和 IPv6 的差异,但其中仍有一些 IPv6 引起的变化需要我们小心处理。针对这一情况,本文介绍了如何运用现有的 Java 技术应对这些变化。 IPv6 背景介绍 目前我们使用的是第二代互联网 IPv4 技术,它的最大问题是网络地址资源有 限,从理论上讲,可以编址 1600 万个网络、40 亿台主机。但采用 A、B、C 三 类编址方式后,可用的网络地址和主机地址的数目大打折扣,以至目前的 IP 地 址近乎枯竭。网络地址不足,严重地制约了全球互联网的应用和发展。 一方面是地址资源数量的限制,另一方面是随着电子技术及网络技术的发展, 计算机网络将进入人们的日常生活,可能身边的每一样东西都需要连入全球因特 网。在这种网络空间匮乏的环境下,IPv6 应运而生。它的产生不但解决了网络地 址资源数量的问题,同时也为除电脑外的设备连入互联网在数量限制上扫清了障 碍。 如果说 IPv4 实现的只是人机对话,那么 IPv6 则扩展到任意事物之间的对话 ,它不仅可以为人类服务,还将服务于众多硬件设备,如家用电器、传感器、远 程照相机、汽车等,它将是无时不在,无处不在的深入社会每个角落的真正的宽 带网,它所带来的经济效益也将非常巨大。 当然,IPv6 并非十全十美、一劳永逸,不可能解决所有问题。IPv6 只能在发 展中不断完善,也不可能在一夜之间发生,过渡需要时间和成本,但从长远看, IPv6 有利于互联网的持续和长久发展。目前,国际互联网组织已经决定成立两个 专门工作组,制定相应的国际标准。 Java 对 IPv6 的支持 随着 IPv6 越来越受到业界的重视,Java 从 1.4 版开始支持 Linux 和 Solaris 平台上的 IPv6。1.5 版起又加入了 Windows 平台上的支持。相对于 C++,Java 很好得封装了 IPv4 和 IPv6 的变化部分,遗留代码都可以原生支持 IPv6,而不用随底层具体实现的变化而变化。 那么 Java 是如何来支持 IPv6 的呢? Java 网络栈会优先检查底层系统是否 支持 IPv6,以及采用的何种 IP 栈系统。如果是双栈系统,那它直接创建一个 IPv6 套接字(如图 1)。 图 1. 双栈结构 使用Java开发兼容IPv6的网络应用程序(2)时间:2011-09-04 IBM 朱益盛 杨晖 傅啸对于分隔栈系统,Java 则创建 IPv4/v6 两个套接字(如图 2)。如果是 TCP 客户端程序,一旦其中某个套接字连接成功,另一个套接字就会被关闭,这个套 接字连接使用的 IP 协议类型也就此被固定下来。如果是 TCP 服务器端程序,因 为无法预期客户端使用的 IP 协议,所以 IPv4/v6 两个套接字会被一直保留。对 于 UDP 应用程序,无论是客户端还是服务器端程序,两个套接字都会保留来完成 通信。 图 2. 分隔栈结构 如何验证 IPv6 地址 IPv6 地址表示 从 IPv4 到 IPv6 最显著的变化就是网络地址的长度,IPv6 地址为 128 位长 度,一般采用 32 个十六进制数,但通常写做 8 组每组 4 个十六进制的形式。 例如: 2001:0db8:85a3:08d3:1319:8a2e:0370:7344 是一个合法的 IPv6 地址。如果 四个数字都是零,则可以被省略。 2001:0db8:85a3:0000:1319:8a2e:0370:7344 等同于 2001:0db8:85a3::1319:8a2e:0370:7344。 遵从这些规则,如果因为省略而出现了两个以上的冒号的话,可以压缩为一个 ,但这种零压缩在地址中只能出现一次。因此:
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |