应用层之HTTP非持久连接

来源:互联网 发布:网络招聘信息发布 编辑:程序博客网 时间:2024/04/30 14:59

非持久连接情况下,服务器到客户端传送一个WEB页面的步骤:

假设该页面由1个基本HTML文件和10个JPEG图像构成,且所有这些对象都放在同一台服务器主机中。

假设该基本HTML文件为:www.someSchool.edu/someDepartment/index.html


步骤:

1、HTTP客户(IE)初始化一个与主机www.someSchool.edu中的HTTP服务器的TCP连接。

  HTTP服务器使用默认端口号80监听来自HTTP客户的连接建立请求。

2、HTTP客户经由与TCP连接相关联的本地套接字(Socket)发出一个HTTP请求消息。这个消息中包含路径名/someDepartment/index.html

3、HTTP服务器经由与TCP连接相关联的本地套接字接受这个请求消息,再从服务器主机的内存或者硬盘中取出对象/someDepartment/index.html,经由同一个套件爱子发出包含该对象的相应消息。

4、HTTP服务器告知TCP关闭这个TCP连接。

5、HTTP客户经由同一个套接字接收这个相应消息。

  TCP连接随后终止。

  该消息标明所封装的对象是一个HTML文件。客户从中取出这个文件,加以分析后发现其中有10个JPEG对象的引用。

6、给每一个引用到的JPEG对象重复步骤1-4


非持久连接:每次服务器发出一个对象后,相应的TCP连接就被关闭。也就是说每个连接都没有持续到可用于传送其他对象。


实际上,现在大多数的浏览器可以打开5到10个并行的TCP连接,每个连接处理一个请求-相应事务。

如果把并行连接数设为1,那样的话这10个连接就是串行地建立。

使用并行连接可以缩短相应时间。


RTT(round-trip time,往返时间)是一个小分组从客户主机游动到服务器主机再返回给胡主机所花的时间。包含分组传播延迟、在中间路由器和交换机上的分组排队延迟、分组处理延迟。

我们可以考虑一下用户点击某个超链接会发生什么:

 用户的点击,导致浏览器发起建立一个与WEB服务器的TCP连接。这里涉及3次握手:

1、客户向服务器发送一个小的TCP消息

2、服务器向客户确认并相应一个小的TCP消息

3、客户向服务器回确认

3次握手的前两次结束时,流逝的时间为1个RTT。

此时客户把HTTP请求消息发送到TCP连接中,客户接着把三次握手过程的最后一次中的确认捎带在包含这个消息的数据分节中发送出去。

服务器收到来自TCP连接的请求消息后,把相应的HTML文件发送到TCP连接中,服务器接着把早先收到的客户请求的确认捎带在包含该HTML文件的数据分节中发送出去。

以上这个HTTP请求/相应交互也花去1个RTT时间。

因此,总的相应时间约等于2个RTT加上服务器发送这个HTML文件的时间。


非持久连接的缺点:

1、客户德为每个待请求的对象建立并维护一个新的连接。对于每个这样的连接,TCP德在客户端和服务端分配TCP缓冲区,并维持TCP变量。对于有可能同事为来自数百个不同客户的请求提供服务的WEB服务器来说,就会严重增加其负担。

2、每个对象都有2个RPP的相应延长:一个RTT用于建立TCP连接,一个RTT用于请求和接收对象。

3、每个对象都遭受TCP缓启动,因为么个TCP连接都开始于缓启动。

不过并行TCP连接的使用能够部分减轻RTT延迟和缓启动延迟的影响。

0 0
原创粉丝点击