基于双栈协议的IPV4向IPV6过渡方案设计与实现
来源:岁月联盟
时间:2010-08-30

| 图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服务器 |
//在给定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(' '); os.write(host0.getBytes()); os.write(' ');……
…… 和所有线程对象一样,HttpProxy类的主要工作在run方法内完成。run方法实现了一个简单的状态机,从Web浏览器每次一个读取字符,持续这个过程直至有足够的信息找出目标Web服务器。然后,run打开一个通向该Web服务器的Socket(如果有多个代理服务器被链接在一起,则run方法打开一个通向链里面下一个代理服务器的Socket)。打开Socket之后,run先把部分的请求写入Socket,然后调用pipe方法。pipe方法直接在两个Socket之间以最快的速度执行读写操作。完成了代理服务器程序的设计后,要使得客户端能使用代理,还需要在客户端的浏览器进行相应的设置,即在浏览器中配置代理服务器,这样就完成了全部过程。3 结论 Internet的趋势将证明IPv4必将会被IPv6所替代,但其过渡过程也一定会是一个漫长的、艰难的。因此,对过渡问题的研究不仅有利于完成过渡,而且还能保障Internet网络长期稳定运行。本设计不仅能够完成转换同时采用较低成本模式,形成一个解决方案,系统测试的结果表明所采取的技术是合理的,能够满足实际运行需要。 [1]周玲,尹霞, 吴建平. 实现IPv4向IPv6过渡的隧道技术.机工程与应用,2002:156[2]Jim Bound, L aurent Toutain. Dual Stack transition mechanism(DSTM) , October,1999[3]R.Hinden . RFC2732: Format for Literal IPv6 Address in URL’s , 2002-12