计算机应用研究
APPLICATION RESERCH OF COMPUTERS
2000  Vol.17　No.1　P.61-62




下一代HTTP协议
黄宏涛　王慧
摘 要 为了克服当前HTTP协议的缺点，W3C(World Wide Web consortium)开始研究制定下一代HTTP协议TTP-NG。它分三个层次：应用层、消息层、传输层。现有WEB上应用将转换到HTTP-NG平台上，最后整个平台都会更新为HTTP-NG。
关键词 WWW HTTP HTTP-NG
1　引言
　　WWW取得了巨大成功，HTTP是取得成功的核心，它用于在Web上交换信息。当前Web遵循的HTTP/1.X，但它缺乏模块化的特点，性能也因而较差。
　　HTTP/1.X包括三层，但它并没有清楚地区分开来：消息传输、通用远程方法调用和一系列用于文档处理的方法。缺乏模块化使得HTTP的发展非常困难，并且为其它应用带来问题，应用位于HTTP之上，因而不管技术是否合适都必须包括许多HTTP的设计。其它一些通用调用系统(如CORBA、DCOM、JAVA RMI)也位于HTTP之上。HTTP/1.X缺乏模块化引起的问题包括：
　　。HTTP/1.1中，消息界限的划分不是在一个单独的层中进行，而是与其它功能混在一起，导致有五种不同方法划分消息的界限，非常复杂。
　　。一般的应用利用隧道(Tunneling)技术通过HTTP文档获取和表格处理方法(GET和POST)完成，这对于防火墙来说很难发现给定通信的语义内容，因而很难实施安全政策。
　　。HTTP的调用层与文档处理应用很难区分开来，其它应用的设计者在理解如何为自己的应用使用调用层功能方面要做很多工作。
　　另一方面HTTP协议在每次HTTP会话(一个请求和回应的过程)都打开一个新的TCP连接，这是对系统和网络资源的浪费。
　　为了克服这些问题，W3C(World Wide Web consortium)从1997年开始研究制定下一代HTTP协议TTP-NG。
2　HTTP-NG的结构
　　HTTP-NG的结构是一个三层系统如图1所示，最上层是应用层，中间是消息层，最下面是传输层。应用层和消息层的接口被称为⒔涌，消息层与传输层的接口被称为“传输接口”
2.1 应用层
　　HTTP 1.1中定义的应用包括获取WEB页面，处理代理和缓存，使用CGI描述提交表格。它使用GET、HEAD、POST和PUT等方法。在HTTP-NG中，这些应用被抽象为传统WEB应用he Classic Web Application?TCWA)。系统使用一种机制决定哪种方法适用于哪种资源。一种支持TCWA的WEB资源支持TCWA对象，只接受由TCWA API指定的方法。
　　定义新方法的机制既支持静态类型又支持动态类型，动态类型支持当参数类型在将来需要扩展或者参数具有多个类型时非常有用。一个动态类型参数的实际类型，可以在运行时才确定。HTTP-NG的类型系统与Java RMI，CORBA和DCOM协议的类型系统合作，使得这些系统中的API不需要使用隧道(Tunneling)技术，直接映射到HTTP-NG。它提供了与其它类型系统的功能兼容性。
　　HTTP-NG的应用层是基于特定应用的，不同的应用具有不同的界面。它允许多个应用能共同存在，支持添加新的应用而不妨碍原有的应用。HTTP-NG将现存应用转换到一个更好的技术基础之上。
2.2　消息层
　　消息系统描述了一种对应用层中类型系统可表示类型的值的编组(Marshaling)方法。编组方法是直接的，它独立于调用方法或当前支持的应用。编组方法是基于IETF的外部数据表示XDR，XDR在分布式系统中广泛被实现。所有方法的参数和结果在系统中被表达，因而不管有多少应用或者应用系统中定义了多少方法，都没有增加编组一个请求或应答消息的复杂性。
　　消息层主要是一个请求应答消息协议，就像HTTP 1.1一样，但它在几个方面提高了性能，比如说它使用缓存和二进制消息格式来减少实际传输的字节数，同时也减少了编组消息所需的CPU时间，HTTP-NG消息层使用附加的控制信息，通过建立会话特征更进一步减少带宽要求。另一个性能提高来源于利用应用层的类型系统，消除每个头之间的依赖性，从而减少了实现的复杂性。
　　消息格式现在被称为W3NG，它利用了会话缓存的技术，已经用于DCE RPC、JAVA RMI中。举例来说，当一个方法或资源第一次被调用时，整个标识在应答消息中传输，此时连接双方都将它缓存。在后来的方法调用中，只需要一个很小的对应特定连接的整数值在传输中用来代替原来的标识。更进一步，这些缓存可被连接双方在建立连接时加载，这对于一些标准应用特别有用。
　　一个方法调用的目标资源的传递是相对于前一个目标的。系统并不是传递整个资源的标识，而是传递与连接上一次资源标识中的不同部分。接受方通过在上次接受的标识中修改这些不同之处重新构建标识。
　　HTTP-NG的消息格式是二进制的，不像HTTP-1.1中基于文本的格式，二进制格式在两个方面提高了性能。第一，非字符串值不需要由发送方转换为串，然后接受方解码。相反，可以使用有效的操作如memcpy直接从这些值的内存表示中进行拷贝。第二，这些值使用二进制表示要比用串表示所花字节数要少。
　　与现存协议相比，HTTP-NG消息层所用技术能显著地减少开销。
2.3 传输层
　　HTTP-NG支持由传输栈构成的特定应用，这些传输栈能操作那些通过它们的消息。传输层允许传输栈组成成分以多种顺序安排，它可以在一个可靠的字节流如TCP/IP之上提供多个虚拟连接，同时它还可以提供一个单一字节流的双向使用，这样服务器不需要打开附加的字节流就可以对客户进行回叫。它也提供在一个底层字节流之上的消息界限的标记，这可以用来支持高层基于消息的系统。它允许消息成块或分片传输，既可以复用同时发生的消息，又可以快速发送一个数据段开始部分的数据值(如GIF文件开始的文件大小信息)。
　　用于HTTP-NG的WEBMUX栈是传输成分的非常有用的合成。它直接位于TCP/IP之上而位于编组层之下，但它也可以和其它传输成分如压缩和安全成分连接。WEBMUX层进行记录标记，并且支持消息的分片。它提供可选的传输流控制，所以接受者能控制发送方的传输率。它支持在一个单一的底层连接上复用最多252个虚拟连接。每个虚拟连接允许在WEBMUX层上有不同的传输栈。除此之外，WEBMUX层为连接双方提供端点(Endpoint)标识，这使得服务器使用同样的连接回叫客户更加容易。既然传递端点标识方法已经定义，防火墙也可以在必要时插入其中。
3　WEB浏览器和服务器结构
　　在WEB中应用到至少两种参与者：WEB浏览器及WEB服务器。在HTTP-NG协议中的WEB浏览器和WEB服务器的可能结构如图2、3所示。WEB服务器为了处理许多类型的客户具有更多种类的协议和传输组成成分。图2中服务器即支持HTTP又支持HTTP-NG协议，而图3中WEB浏览器只支持HTTP-NG。服务器能在一个普通TCP/IP传输上支持HTTP-NG消息，而浏览器希望每个服务器上具有MUX协议。图中的浏览器可以支持数字符签名文档处理，而服务器不能。浏览器和服务器都在消息流中使用压缩。当然也可以应用许多其它可能的传输协议。一个代理服务器既具有客户端功能又具有服务器端的功能。

图2　一个Web Server的结构

图3　一个Web Server的结构
4　结束语
　　HTTP-NG作为下一代HTTP协议被设计用来克服HTTP协议的缺点，HTTP-NG三层结构：传输层、消息层、应用层使得HTTP-NG具有良好的模块化特点，核心的简单性，分布式扩展性，全球伸缩性，并且具有良好的传输效率，它可以支持分布对象技术，支持CORBA应用，更好地进行分布计算。
　　HTTP-NG还在设计当中，但它将给现有WEB分布式计算结构带来巨大的变化，现有WEB上应用转换到HTTP-NG平台上，最后整个平台都会更新为HTTP-NG。
黄宏涛（广东省财税高等专科学校 广州 510420）
王慧（武汉大学计算机科学系 武汉 430072）
参考文献
1，William C. Janssen, JR. A "next generation" architecture for http, IEEE internet computing, Jan-Feb, 1999: 69～73
2，HTTP-NG project, http://www.w3.org/protocols/HTTP-NG/, http://www.w3.org/TR/WD-HTTP-NG-architecure
收稿日期：1999年7月7日
