首页 理论教育 HTTP连接:计算机网络

HTTP连接:计算机网络

时间:2023-11-05 理论教育 版权反馈
【摘要】:为解决HTTP/1.0的低效,现使用HTTP/1.1,采用持续连接机制,即客户端与服务器间建立起TCP连接后,一直维持连接,允许传送多个请求与响应,直到其中一方关闭连接为止。包含中介的HTTP连接如图11-4所示,客户端与服务器之间的请求或响应消息必须经过4个连接段。表11-8 常见HTTP响应头2.协商机制HTTP允许客户端与服务器使用报头进行协商,协商内容范围很广,包括连接特性、数据表示、内容和控制等。

HTTP连接:计算机网络

1.HTTP连接

HTTP/1.0为最重要的面向事务应用层协议。该协议对每一次请求/响应,建立并拆除一次连接。其特点是简单、易于管理,符合用户需要,因而得到广泛应用。但这种连接方式导致下列问题发生:对用户请求响应慢,网络拥塞严重,安全性差等。

为解决HTTP/1.0的低效,现使用HTTP/1.1,采用持续连接机制,即客户端与服务器间建立起TCP连接后,一直维持连接,允许传送多个请求与响应,直到其中一方关闭连接为止。

持续连接机制优点:减少需要建立TCP连接的数量,从而节省宝贵的CPU时间,也减少内存占用;减少不必要分组交换,并有足够时间用于确定网络状态,显著减少网络拥塞;HTTP请求与响应可采用流水线方式,大大提高传输效率

持续连接机制最主要优势在于流水线方式。由于多数网页都是由很多部分组成(如多张图片),流水线方式允许客户端连续发出多个请求,并在所有请求发送完毕之后才等待响应,这就大大节省了单独请求并响应的等待时间,更有效地利用TCP连接,从而加快网页显示速度。

持续连接机制也存在问题:即当多个请求与响应在持续连接上发送时,很难区分出每一项的头部与尾部。为解决这个问题,HTTP规定必须在每个报文中指定所传输数据的长度信息,如客户端或服务器不能在发送请求或响应序列之前确定长度,那么该报文在发送时报头中的Connection字段的值应设为close,表明当前报文序列传输结束后将关闭连接。

基于HTTP的客户端/服务器模式的传输可分为4个过程:建立连接、发送请求信息、发送响应信息与关闭连接。通常情况下,浏览器(客户端)与服务器建立连接,然后向服务器请求资源(如网页),服务器收到请求后响应浏览器,把数据传送给浏览器。持续连接一直维持,直到浏览器通知服务器关闭连接为止。

在最简单情况下,客户端与服务器之间可通过一个单独的连接来完成。实际情况要复杂得多,通常会有一个或多个中介出现在客户端与服务器之间,一般有3种类型的中介:代理(Proxy)、网关(Gateway)和通道(Tunnel)。

包含中介的HTTP连接如图11-4所示,客户端与服务器之间的请求或响应消息必须经过4个连接段。如在某个中介上启用了缓存,则效果上是请求或响应所经过的连接段减少(假定中介A启用了缓存,客户端可向A发出请求,而A则从缓存中取出数据响应客户端)。

978-7-111-43162-6-Chapter11-14.jpg

图11-4 包含中介的客户端到服务器的HTTP连接

(1)HTTP请求

客户端向服务器发送HTTP请求报文,目的在于从Web服务器上获取网页或其他资源。HTTP请求报文包含与所请求资源相关的信息,其结构(顺序)为:请求行—请求头—空白行—正文。其中,空白行以<CR-LF>对表示,用于分隔报头与正文。请求报文的正文部分可以空缺,或包含将要传送给服务器的信息。在传输某些敏感数据时,可能需要进行加密,这时需要在正文部分指定编码的相关信息。

下面是一个HTTP请求的例子:

978-7-111-43162-6-Chapter11-15.jpg

请求行是请求报文中的一个重要组成部分,由三部分构成:请求方法、URL和HTTP版本,各部分之间用空格(<SP>)分隔开,请求行以<CR-LF>为行结束符。

下面是一个请求行的例子:

GET http://rfc.net/rfc2616.html HTTP/1.1

请求方法包含了给服务器的指示,服务器按照不同的请求方法的指示来操作,以满足客户端的不同要求。上例中,为从服务器上获取网页,使用GET请求方法。

URL完整指定要访问的网络资源。当浏览器与服务器间建立起TCP连接后,可不必使用绝对URL地址,而改为使用相对URL地址。相对URL地址总以“/”开头,通常认为是相对于服务器的根目录而言。如使用相对URL地址,上例可表示为:GET/rfc2616.html HTTP/1.1

HTTP/1.1支持7种标准请求方法:GET、HEAD、POST、PUT、DELETE、OPTIONS和TRACE,见表11-5。在互联网应用中,最常用的请求方法是GET和POST。

表11-5 HTTP/1.1的7种标准请求方法

978-7-111-43162-6-Chapter11-16.jpg

HTTP请求头信息是可选项,用于向服务器提供有关客户端环境和请求正文的相关信息。例如,请求头可声明浏览器所用的语言,请求正文的长度等。请求头一般由多行组成,每行遵循“标题域:值”的格式,并以<CR-LF>对作为行结束符。表11-6列出常见HTTP请求头。

表11-6 常见的HTTP请求头(www.xing528.com)

978-7-111-43162-6-Chapter11-17.jpg

如不是采用流水线方式,则HTTP请求发出后,浏览器等待从服务器传来的响应,否则在请求序列发送完毕之后,才等待响应。

(2)HTTP响应

HTTP响应报文与HTTP请求报文结构很相似,主要区别为报头部分,响应报文没有请求行,取而代之的是状态行,响应头中的字段也不相同。HTTP响应报文的结构(顺序)为:状态行—响应头—空白行—正文。

下面是一个HTTP应答的例子:

978-7-111-43162-6-Chapter11-18.jpg

978-7-111-43162-6-Chapter11-19.jpg

状态行由3部分组成,分别为:HTTP版本、状态码和描述文本。状态码是3位数字代码,第一位数字决定状态码的类型,具体见表11-7。

表11-7 HTTP状态码的类型

978-7-111-43162-6-Chapter11-20.jpg

响应头向客户端提供服务器或请求文档的信息。响应头和请求头一样,一般由多行组成,每行遵循“标题域:值”格式,并以<CR-LF>对作为行结束符。表11-8列出常见响应头。

表11-8 常见HTTP响应头

978-7-111-43162-6-Chapter11-21.jpg

2.协商机制

HTTP允许客户端与服务器使用报头进行协商,协商内容范围很广,包括连接特性、数据表示、内容和控制等。协商过程分3种类型:服务器驱动协商、代理驱动协商和透明协商。

服务器驱动协商以客户端(通常浏览器)的请求发起,请求报文在指定所请求资源URL的同时,包含一系列客户端的首选项信息,服务器将从中选择可用的一项以满足客户端的要求,如有多项同时满足要求,则服务器会做出“最佳猜测”。这种类型的协商其不足之处是,服务器做出的“猜测”并不总能满足客户端的需求。另外,要求客户端在请求中提供所有选项信息,会使得传输效率降低。

代理驱动协商解决了服务器驱动器协商的大多数问题。浏览器向服务器发送请求,询问服务器的可用特性,在服务器核实了自身能力后,返回可支持特征的列表。浏览器根据返回的响应做出首选项选择后,再向服务器发送一个包含该首选项的请求。

代理驱动协商优点是客户端选择过程完全具有主动权,缺点是需要两次服务器交互过程。透明协商实际上是服务器驱动协商和代理驱动协商的结合,可解决上述两者遇到的所有问题。在透明协商过程中,服务器将全部可支持特征的列表发送到代理服务器上维护的缓存中,这样代理服务器就可以为客户端的请求提供一个合适的响应,避免了客户端的二次请求,并保证了客户端所需的全部特征都可以在代理服务器的缓存中找到。

3.缓存

缓存是HTTP规范中提供的用于增强性能的重要措施之一,可降低传输延迟,减少网络流量,改善网络状态。缓存最重要的特征是存储,当首次访问某网页时,浏览器或代理服务器会将其保存在磁盘中,之后如有对同一网页请求,则不需从服务器处获取,只需从缓存中取出即可,提高访问速度。Web服务器也使用缓存,用于保存客户发送来的请求响应,如再次收到相同请求则自动发送被缓存的响应,而无需处理请求,节省时间与处理资源。

缓存涉及的主要问题是数据存储时限。如缓存中的副本保存时间过长,则其中数据可能会过时,即Web服务器相应内容可能已有新改动,但缓存中却还保持着旧内容。其次,如频繁更新缓存中内容,会使缓存对性能的改善降低,因为使用缓存目的就在于减少对服务器的直接访问。所以,缓存中数据需要存储多长时间,应该仔细考虑。

HTTP协议中提出两种更新缓存方式:过期模型和有效模型。

过期模型的工作原理:为存放在缓存中的响应设置有效时间,即数据在多长时间内是有效的,该时间值可由服务器在给客户端发送的第一个成功响应中指定,但服务器也可不指定过期时间,则需使用一定公式计算出这个时间值(RFC2616给出计算公式)。

在有效模型中,缓存需要使用某些报头字段来和服务器一起校验缓存中数据的有效性。如“最后修改”字段是其中一个被用做验证有效性的报头字段,若服务器上的内容自从该字段中规定的日期以来未曾更新过,则数据是有效的,否则需连接到服务器,以获取最新的数据。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈