收藏 分销(赏)

支持HTTP协议的IPv4IPv6网关研究和实现.doc

上传人:快乐****生活 文档编号:1814424 上传时间:2024-05-09 格式:DOC 页数:5 大小:45KB
下载 相关 举报
支持HTTP协议的IPv4IPv6网关研究和实现.doc_第1页
第1页 / 共5页
支持HTTP协议的IPv4IPv6网关研究和实现.doc_第2页
第2页 / 共5页
支持HTTP协议的IPv4IPv6网关研究和实现.doc_第3页
第3页 / 共5页
支持HTTP协议的IPv4IPv6网关研究和实现.doc_第4页
第4页 / 共5页
支持HTTP协议的IPv4IPv6网关研究和实现.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、摘要:在IPv6各种方案中,翻译机制可以实现IPv4和IPv6的互通。IEFT提出了多种翻译机制的实现方案,本文基于IEFT提出应用层翻译机制,利用Java语言实现了支持HTTP协议的翻译网关。 关键词:IPv4;IPv6;互通;翻译;HTTP协议 中图分类号:TP393 文献标识码:A文章编号:1009-3044(2007)04-10978-02 1 研究和应用价值分析 HTTP是TCP/IP协议族中重要的应用层协议,是WWW实现的技术基础。WWW是目前互联网上最重要的应用,也是互联网发展和普及的重要推动力。据IAB统计,目前Internet上80的流量来自Web服务器。除了Web应用,其他

2、很多服务,如文件传输、音频视频流传输等,也可以使用HTTP协议实现。应用软件和SQL服务器之间的数据交互和互联网上大部分的数据服务都是HTTP数据流。随着B/S模式的应用软件逐渐成为主流,Web Service等技术的发展,Internet上的HTTP数据量还会进一步增加。 而由于IPv6和IPv4的不兼容,不同协议栈的主机间无法进行HTTP通讯,甚至在一台双栈主机内部,纯粹(Native)的IPv4的软件也无法访问纯粹的IPv6 HTTP服务。同样,纯粹的IPv4 HTTP服务也无法被纯粹的IPv6软件使用。而目前绝大多数HTTP相关的应用软件无法兼容IPv6,重新设计开发这些软件要耗费大量

3、的人力、物力和时间,同时造成现有软件资源的严重浪费,不符合IETF提出的IPv6过渡基本原则。 因此,如果能够设计一种支持HTTP协议的IPv4/IPv6应用层翻译网关,就能够在过渡阶段充分利用现有的大量软件资源,实现无缝的、高效的、低成本的过渡,是一种非常具有研究和应用价值的过渡解决方案。虽然只支持HTTP协议的应用层网关不能象网络层翻译网关一样实现所有数据的互通,但是能够实现至少80的数据通讯也是很具有实用价值的。而且只支持HTTP协议可以简化设计,在性能、安全性和可靠性等方面也更容易控制。 2 可行性分析 2.1 使用代理方式实现互通的可行性 代理服务器(Proxy)技术不仅可用于HTT

4、P协议,其他很多协议(如FTP和SOCKS等)也支持代理功能。目前代理技术应用最为广泛的是HTTP代理,代理服务器也是HTTP协议规范中重要的内容。在RFC1945(HTTP 1.0)和RFC2616(HTTP 1.1)中对代理服务器的定义和功能做了详细的规范。 目前HTTP代理服务器都是部署在两个网络之间,大部分情况是两个网络其一是内部网,另一个是互联网。由于大部分内部网使用IPv4内网地址(也被称为私有地址,如192.168.x.x),内联网上的主机无法和互联网上的主机直接通讯,所以使用代理服务器作为中介,同时起到网络防火墙的功能,对内部网进行保护,还能够对内部网和互联网之间的通讯进行控制

5、和记录。很多具有公网地址(也被称为合法地址)的内部网出于安全考虑也使用代理服务器和互联网连接。 运行代理服务器的计算机至少要有一个公网地址和一个内网地址。目前绝大多数代理服务器只接受来自内部网的请求,但是可以向两个网络发送请求。代理服务器接受请求时,将内部网不同地址不同端口映射到同一公网地址的不同端口,并在代理服务器内部保存这种地址端口映射关系,再通过公网地址的这些端口连接到内网计算机所请求的各个服务器。当服务器返回信息时,再查找映射列表,把返回信息转发到各个请求连接的内网计算机,从而实现了内部网多台计算机通过同一个公网IP地址访问互联网,互联网上的计算机也只能得到代理服务器所在计算机的地址,

6、因此可以对内部网起到保护作用。 由工作原理分析,代理服务器工作时,一个网络内部的通讯与另一个网络是没有任何关系的,理论上可以使用不同的IP协议。现在假设运行代理服务器的计算机是双栈主机,内部网是IPv6网络,而且代理服务器支持IPv6。代理服务器接受来自IPv6主机某端口的请求,将该请求通过IPv4地址某端口转发到IPv4网络上,并保存该地址端口映射关系。当IPv4服务器返回信息时再查找映射列表转发给IPv6主机,就实现了IPv6主机访问IPv4网络上的服务器。同理也可以实现IPv4主机访问IPv6网络上的服务器。如果代理服务器设计成可以接受来自两个网络的连接请求,就能够实现IPv4和IPv6

7、网络的互通。 对于应用软件,它和代理服务器间的通信和另一个网络使用何种IP协议是无关的,只需要将请求交给代理服务器处理就可以了。因此不需要对两种IP网络上的软件做任何更改,只需要配置代理服务器就可以实现无缝的互通。在一个既有IPv4主机又有IPv6主机的混合网络或者双栈主机内部,各种软件之间也可以通过这种方式互通。对于不能接受IPv6格式地址的软件,可以使用域名请求连接。 比如对于IE浏览器,当没有配置使用代理服务器时,IE对地址栏中输入的信息进行判断,如果是IP地址,就根据地址连接服务器,如果是域名就进行解析,然后再连接服务器。在此过程中,如果操作系统或者浏览器其中一个不支持IPv6,就无法

8、连接到IPv6服务器。而当在IE中使用代理服务器时,IE只是将域名发送给代理服务器,由代理服务器进行域名解析并连接到Web服务器,在整个通信过程中浏览器没有使用到最终Web服务器的IP地址。在访问IPv6服务器时,操作系统和浏览器可以都不支持IPv6,浏览器能够通过支持IPv6的代理服务器访问IPv6服务器,原因在于浏览器和网关之间的通信不牵扯到任何IPv6相关的信息。 由以上分析,使用代理方式实现IPv4和IPv6主机间互通理论上是完全可行的,同NAPTPT技术有很多相似之处,所不同的是只支持HTTP协议,需要对应用软件进行代理服务器设置。 2.2 Java语言对IPv6的支持Java从1.

9、4版(也被称为Java2 1.4)开始支持Unix和Linux平台上的IPv6。在2004年新发布的Java 1.5版(也被称为Java5)开始支持Windows平台上的IPv6。Java增加了一系列的类和方法对IPv6相关的网络编程给予支持,而且尽最大可能与IPv4兼容,与协议栈交互等复杂的底层工作由Java运行环境(JRE)和操作系统完成,无需程序员和用户参与,极大的降低了IPv6开发和应用难度。 IPv6专用的IP地址类Inet6Address与IPv4专用地址类Inet4Address是同一个类.InetAddress派生出来的,兼容性非常高。除此以外,网络其他操作如获取地址、打开端口

10、、建立和关闭连接等操作所使用的类和方法与IPv4是完全相同的,因此使用Java开发IPv6的网络软件与IPv4没有很大的区别,甚至一些IPv4软件无需重新编译就可以在新版JRE上支持IPv6。Java对IPv6的支持和兼容性是其他语言无法比拟的。 2.3 使用Java开发IPv4/IPv6代理网关的可行性 实现IPv4/IPv6代理网关的重点有两个方面: (1)能够在两种不同类型的IP地址上各打开一个端口进行监听,接受来自其中一种IP地址某端口的连接请求,并能够使用另一种IP地址的某端口连接到所请求的服务器上。 本文原文(2)能够建立和维护一个IPv4和IPv6地址端口的映射列表,并且能够根据

11、该映射列表将服务器的返回信息转发给发出请求的主机。 2.4 Java语言能够很好解决的两个方面问题 (1)Java使用ServerSocket(int port)创建服务器并打开端口进行监听连接请求,这一方法与IP地址类型是无关的,同时兼容两种IP地址。Java使用Socket(InetAddress address, int port)方法创建网络连接,其中InetAddress与IP地址类型也是无关的。因此使用同样的方法就能够实现在两种类型的IP地址上打开端口监听、建立连接等操作,兼容性非常高,在一个既有IPv4主机又有IPv6主机的混合网络中也一样能够很好的工作。 (2)Java支持多线

12、程编程,对于每一个连接请求可以派生出一代理服务器线程,接受连接请求并根据请求的服务器地址转发请求。该线程直到传输结束或者出现错误时才被结束,因此在一个线程内部存在一对源地址源端口和目标地址目标端口的映射。当存在多个连接请求时就会有多个代理服务器线程,自动建立多个映射。这种映射列表是动态的,由多线程机制自动维护的,无需额外的编程就能够实现。 由以上分析,使用Java设计和开发支持HTTP协议的代理服务器网关是完全可行的,而且由于Java语言本身对网络编程的良好支持和对两种IP协议的高度兼容,设计和开发难度不会很大,能够保证性能和可靠性。 3 功能模块介绍 该网关的总体功能模块结构如图1所示,其中

13、蓝色线表示控制流,红色线表示数据流,线端箭头表示控制或数据流向。 图1 总体功能模块图 3.1 启动管理管理器 该模块负责系统的初始化和启动工作,为其他模块提供各种必要的工作参数。该模块的运行是整个软件工作的第一步,也是其他模块运行的基础。 初始化操作包括从系统配置文件中读取各个配置参数,包括系统日志文件名、通信日志文件名、Web配置管理员口令、网关服务器端口号、是否记录通讯日志、是否打开调试模式等。如果系统配置文件不存在,启动控制器根据系统默认配置创建一个配置文件。 启动操作是在其所在的计算机所有IP地址上打开一个特定的监听端口,该端口号来自初始化操作,并将系统启动时间写入系统日志文件。 如

14、果初始化和启动过程中出现严重的错误,如Java运行环境(JRE)不存在、端口已被占用等,将错误出现的时间和相关信息在控制台显示,同时写入系统日志文件,并关闭系统。 当系统正常启动后,在所有IP地址的特定端口上监听,直到系统被关闭。如果由来自客户端软件的代理请求,则通知线程管理器,启动一个新的网关服务器线程,处理该代理请求。如果有来自Web配置服务器的重新启动或关闭指令,则重新启动整个系统或者关闭系统。 3.2 线程管理器 该模块负责接受启动管理器的指令,启动一个新的网关服务器线程。如果在启动新线程的过程中出现错误,将发生错误的时间和相关信息写入系统日志文件。 当线程管理器收到来自网关服务器线程

15、的结束信息时,结束该线程,并回收内存等系统资源。 3.3 网关服务器 该模块是整个系统的核心,负责处理来自客户端软件的连接请求,并向服务器转发该请求。当服务器返回数据时,再将数据转发给发出请求的客户端软件。该模块在线程管理器的控制下启动,系统中可以有多个网关服务器线程同时运行,每一个代理请求对应一个线程。当一次HTTP通信正确传输完毕或者由于错误通信无法继续时,网关服务器线程会产生结束信息,然后线程管理器会结束该网关服务器线程,并回收内存等系统资源。 该模块负责接受来自客户端的请求信息,获得来自客户端软件所请求的URI(Uniform Resource Identifier 同一资源定位符)和

16、HTTP报头后,对其进行检查,如果出现格式错误或者无法识别的报头和URI,则向客户端软件发送一个HTML格式的报告错误,并产生线程结束信息。 连接请求检查无误后,根据URI连接服务器,并请求URI中所表示的资源。如果URI中使用域名,还要进行域名解析获得服务器的IP地址。如果HTTP报头中携带POST方法所产生的数据,则将报头发送给服务器软件。如果系统还配置了使用上一级代理服务器,则将HTTP报头和URI转发给上一级代理服务器。如果发现请求的服务器地址是所在计算机地址时,则连接到Web配置服务器上。如果在连接服务器的过程中出现域名无法解析、服务器不存在、连接服务器超时等错误时,向客户端软件发送

17、一个HTML格式的错误报告,并产生线程结束信息与服务器连接正确后,产生一个数据流管道(Date Stream Pipe),管道一段连接到客户端软件,另一端连接到服务器软件。此时网关服务器只是一个简单的数据通道,不再对HTTP数据流进行任何操作和处理,实现了客户端和服务器间的透明传输。当客户端和服务器通信完毕正常关闭连接时,数据流管道会同时关闭,网关服务器产生线程结束信息。当网关服务器与客户端或服务器通信时发生无法连接、超时等错误,无法继续通信时,管道也会自动关闭,并向客户端发送错误信息。这种数据流管道的建立是实现IPv4和IPv6主机间HTTP互通的关键,是整个软件研究和设计的重点。 如果系统

18、配置中选择了记录通信日志,则将客户端请求时间、IP地址、请求连接的URI写入通信日志文件。如果系统配置中选择了调试模式,则将经过数据流管道的所有HTTP报头和HTML文件源代码写入系统日志文件,包括来自客户端的数据和来自服务器的数据,在软件调试时用来查找错误。 3.4 Web配置服务器 该模块提供Web远程配置功能,能够对系统参数进行更改,重新启动系统和关闭系统。该模块使用与网关服务器相同的端口进行Web服务,用户使用Web配置功能首先要使用管理员口令登录,然后Web配置服务器读取系统配置文件,将系统目前各项参数以网页的形式发送给浏览器,用户可以通过Web表单的形式将更改后的参数发送给Web配

19、置服务器,Web配置服务器改写系统配置文件并通知启动管理器重新启动系统。用户还可以通过Web管理器直接重启或关闭系统。 3.5 系统配置文件 系统配置文件记录了系统工作的各项初始参数,包括通信日志文件名、系统日志文件名、管理员帐号口令、网关服务器端口号、是否记录通信日志、是否打开调试模式等参数。 3.6 系统日志文件 系统日志文件记录了系统工作情况,如系统启动时间,启动和工作过程中出现的错误等。如果在系统配置中打开了调试模式,经过网关服务器的所有HTTP报头和HTTP源代码也记录在系统日志文件中,方便程序调试时查找和分析错误。 3.7 通信日志文件 通信日志文件记录了所有客户端的代理连接请求,

20、包括客户端的IP地址,请求时间和所请求的服务器的IP地址或者域名。 4 测试和分析 4.1 互通测试 本网关研究和开发的目的是实现IPv4和IPv6网络间的HTTP互通,因此互通性是测试的重点,测试方法包括:检测浏览器和Web服务器能否正确通信,分析网关系统日志和使用CommView捕获帧进行分析。本项测试中各计算机运行的操作系统是Windows XP(SP2)和Windows Server 2003,浏览器使用IE 6.0,Web服务器使用的是IIS 6.0,并在IIS服务器上运行一个简单的ASP程序,检测浏览器能否通过GET和POST方法向服务器发送数据和服务器是否能够读取浏览器的Cook

21、ies信息。经测试,通过该网关软件IPv4和IPv6主机间可以实现HTTP数据流的互通,实现了设计目标。 4.2 性能测试 在试验网上进行了IPv4和IPv6互通四种情况下的性能测试,测试中Client1为Web服务器,Client2为客户端,网关软件在Gateway上运行,服务器和客户端之间通过HTTP协议传输一个750M的文件。测试数据如表1。 测试数据显示使用该网关软件互通吞吐率能够达到50Mbps以上,达到了比较高的水平。由测试数据分析发现,在互通过程中,Gateway CPU利用率始终为100,可见互通的瓶颈出现在网关软件所在的计算机Gateway上,如果升级Gateway的CPU,

22、互通性能可能会有所提高。从测试数据中还发现,在网络硬件和CPU占有率相同的情况下,IPv6主机间通信时吞吐率最高,IPv4主机间通信时吞吐率最低,差距达到了18。以上测试数据再次说明IPv6协议比IPv4协议性能和效率上有较大优势。 参考文献: 1沙斐,程莉,周立译.Pete Loshin,IPv6详解M.北京:机械工业出版社,2000(4). 2Robert L. Fink, Robert M. Hinden. 6bone (IPv6 Testing Address Allocation) Phaseout, RFC3701S,2004(3). 3Joseph Davies著,张晓彤,晏国展

23、,曾庆峰译.理解lPv6M.北京:清华大学出版社,2004(3). 4Robert M. Hinden, Stephen E. Deering, Erik Nordmark. lPv6 Global Unicast. 5Address Format, RFC3587S,2003(8). 6Robert M.Hinden, Stephen E. Deering. Internet Protocol Version 6 (IPv6) Addressing Architecture, RFC3513 S,2003(4). 7Thomas Narten, Richard Draves. Privacy Extensions for Stateless Address Autoconfiguration in IPv6, RFC3041 S,2001(1). 8Stephen E. Deering, Robert M. Hinden. Internet Protocol, Version 6 (IPv6) Specification, RFC2460S,1998(12). 9Christian Huitema著,陶文星,胡文才译.新因特网协议IPv6(第2版)M.北京:清华大学出版社,2000(6).

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服