摘要 随着Internet网络在全球范围内的迅速扩大,应用日益增加,IP地址即将耗尽的矛盾更加突出,同时为解决IPV4的设计缺陷,国际互联网工程任务组开发了新一代Internet协议-IPV6,但由于IPv4与IPv6之间存在着很大的差异,同时存在众多基于IPv4协议的网络及应用,因此,要用新的IPv6代替旧的IPv4必然存在一个过渡时期。针对上述问题我们研究了一种过渡机制,并针对该过渡机制设计实现了浏览器模式的IPv4客户机对 IPv6服务器的访问。
关键词 IPv4 IPv6 过渡机制 双协议栈 代理服务 Java
前 言
如今,Internet在全球范围内的普及应用超过了历史上的任何一项新技术所产生的影响和带来的变化,实践证明,IPv4不仅是健壮的、而且是易于实现的,并具有很好的互操作性。这些都充分肯定了IPv4协议(IPv4 protocol)初始设计的正确性。但是随着Internet迅速发展,接入Internet的网络设备和运行在其上的应用程序急剧增加,由此带来了 IP地址的迅速耗尽与路
1 IPv4向IPv6的过渡
1.1 过渡的必然性
随着Internet应用范围的扩大,发现IPv4有着很多不可克服的问题,必须通过新的协议来最终替代。通常,协议的过渡是很不容易的,从IPv4向 IPv6的过渡也是如此。目前由于IPv4协议已经成功的使用了将近20年,基于IPv4的应用程序和设备已经相当成熟和具有相当的规模,不可能一夜之间完成所有升级变更。而另一方面,IPv6的应用程序和设备还不成熟完备,这样必然会出现许多孤立的IPv6网络。那么如何完成从IPv4向IPv6的过渡,是发展IPv6首要解决的问题。由此在相当长时间内,IPv6节点之间的通信还要依赖于原有IPv4网络的设施,同时IPv6节点也必不可少的要与 IPv4节点通信,因此过渡是不可避免的,并且过渡[3]必将是分布式的、渐进的进行。据专家的预测,过渡初期的 Internet将由少量运行 IPv6协议设备组成小的网络“孤岛”和大量运行 IPv4协议的设备组成的“海洋”组成。如图1所示:
图1:IPv4网络海洋中的IPv6孤岛
而随着时间的推移,IPv4的海洋将会逐渐变小,而IPv6的小岛不仅会越来越多,而且越来越大 ,并最终完全取代IPv4形成新的下一代Internet网络。
1.2 过渡策略的主要原则
考虑到网络技术的飞速发展和现实世界的商业需求,在进行IPv4网络向IPv6网络过渡策略的设计中,如下方向性问题必须遵循,在“下一代协议建议规范”(RFC1752)中,明确定义了以下的过渡原则:
1. 过渡方式应该是逐步的和渐进的,保护IPv4网络设备的投资,确保在一个相当长的历史阶段,IPv4网络设备可以在过渡时期中正常地独立使用。
2. IPv4网络世界和IPv6网络世界相互渗透,长期并存,这就要求IPv4和IPv6网络设备彼此可以互连互通,实现互操作。
3. IPv4网络世界向IPv6网络世界过渡过程中,IPv4向IPv6升级的费用应尽可能地低,过渡技术应尽可能地简单,以尽快地吸引广大用户主动的向IPv6过渡。
由于IPv4协议和IPv6协议之间不具有相关性,因此IPv4和IPv6体系结构之间还需要构建相关的过渡机制来支持二者无缝地并存。
2 过渡方案设计与实现
2.1 IPV4/IPV6双协议栈代理服务器原理
借鉴传统的IPv4代理服务器原理,联想到在一台代理服务器上安装具有IPv4/IPv6双协议栈,那么代理服务器就可以作为IPv4客户端向IPv6服务器的“中转站”,从而实现两者间的间接通信。其具体实现原理如图2。
图2 IPv4应用程序通过代理访问IPv6服务器
2.2 IPv4/IPv6过度方案设计与实现
本方案立足于应用最为普遍的浏览器技术,而直接改写浏览器本身的代码是不现实的,因此我们采用一种比较直接的解决方案:在双协议栈主机的传输层中,借鉴传统IPv4的传输层代理机制对IPv4和IPv6协议进行“转换”,从而让仅支持IPv4的应用程序无需升级就能够“无缝”地访问纯IPv6服务。这样我们只需对代理服务器编程,同时利用socket的独立于网络协议的特性,通过编写程序完成对socket套接字中某些参数的修改,让代理服务器调用系统的 IPv6协议栈来通信,实现接入IP
//在给定Socket上创建一个代理线程。
public HttpProxy(Socket s) { socket="s"; start(); } public void writeLog(int c, boolean browser) throws IOException { log.write(c); } public void writeLog(byte[] bytes,int offset, int len, boolean browser) throws IOException { for (int i="0";i<len;i++) writeLog((int)bytes[offset+i],browser); } public String processHostName(String url, String host, int port, Socket sock) { java.text.DateFormat cal="java".text.DateFormat.getDateTimeInstance(); System.out.println(cal.format(new java.util.Date()) + " - " + url + " " + sock.getInetAddress()+"<BR>"); return host;
//执行操作的线程
public void run() { Socket outbound="null"; try { socket.setSoTimeout(TIMEOUT); InputStream is="socket".getInputStream(); OutputStream os="null";   ; …… outbound.setSoTimeout(TIMEOUT); os="outbound".getOutputStream(); os.write(line.getBytes()); os.write(' '
3 结论
Internet的发展趋势将证明IPV4必将会被IPV6所替代,但其过渡过程也一定会是一个漫长的、艰难的。因此,对过渡问题的研究不仅有利于完成过渡,而且还能保障Internet网络长期稳定运行。本设计不仅能够完成转换同时采用较低成本模式,形成一个解决方案,系统测试的结果表明所采取的技术是合理的,能够满足实际运行需要。
参考文献
[1]周玲,尹霞, 吴建平. 实现IPv4向IPv6过渡的隧道技术.计算机工程与应用,2002:156
[2]Jim Bound, L aurent Toutain. Dual Stack transition mechanism(DSTM) http://www.ietf.org/interner-drafts/draft-ietf-ngtrans-dstm-00.txt, October,1999
[3]R.Hinden . RFC2732: Format for Literal IPv6 Address in URL’s , 2002-12