最近写作完HTTP协议一节,略做总结:
非持久连接是在http/1.0中定义,而对于http/1.1中默认的是持久连接(带流水线),以下是详细描述:
非持久连接”的概念
某网页由最基本的 HTML 和10个JPEG 图像构成,10个JPEG 图像文件存放在同一台服务器中。设这个网页的URL为www.server.com/somepath/index.html。如果用户请求该网页并采用“非持久连接”,那么在HTTP 客户(通常是用户浏览器)和服务器之间将发生以下操作:
1. HTTP 客户端初始化一个与服务器主机www.server.com中的HTTP服务器的TCP 连接。服务器使用默认端口80监听来自HTTP客户的建立连接请求。
2. HTTP客户端经由与TCP关联的本地Socket发出一个HTTP请求消息(Request)。这个消息中包含路径名/somepaht/index.html。
3. HTTP服务器经由与TCP关联的本地Socket接收到这个请求消息,再从服务器主机的内存或者硬盘中取出文件/somepath/index.html,经由同一Socket向 HTTP客户端发送包含该文件的响应消息(Response Message)。
4. HTTP服务器通知TCP服务层关闭这个TCP连接;TCP服务层并不立即关闭这个连接,而是在客户收到刚才那个响应消息后才会真正终止这个连接。
5. HTTP客户端经由同一Socket接收这个响应消息(Response Message)。TCP连接随后终止。客户端所收到的消息中封装了客户端所请求的 HTML文件。客户端浏览器从中取出这个文件,加以分析后发现这个文件中还有有10个JPEG对象引用。
6. 对每个引用到的JPEG对象重复步骤1~4。
上述步骤之所以称为使用非持久连接,原因是每次服务器发送一个对象后相关的TCP连接就被关闭,也就是说每个连接没有持续到可以传输其他对象。每个TCP连接只能传送一个请求消息和响应消息。就上述例子,用户请求的那个Web页面就产生了11个TCP连接(1个网页请求连接和10个图象请求连接)。
在上述的例子中,并没有明确指出客户是依次打开10 逐一取得每个JPEG 对象,还是同时打开多个 TCP连接同时取得多个 JPEG对象。实际上,现今的浏览器允许用户通过配置来控制并行连接的程度。大多数浏览器默认可以打开5~10个并行TCP连接,每个连接处理一个请求/响应事务。如果把并行连接数设置为1,那样的话这个传送JPEG的10个连接是串行建立的。使用并行连接可以缩短响应时间。
非持久连接缺点
缺点(一)客户得为每个待请求的对象建立并维护一个新得连接。对于每个这个的连接,TCP必须同时在客户端和服务器端分配TCP缓冲区,并维护TCP变量。对于有可能同时为来自数百个不同客户的请求提供服务的Web服务器来说,这会严重增加服务器的负担;
缺点(二)对每个对象请求都有2个RTT的响应延迟:一个RTT用于建立TCP连接,另一个RTT用于请求和接收对象;
缺点(三)每个对象都要经历 TCP 缓启动,因为每个TCP连接都要起始于slow start 阶段。并行TCP连接的使用能够部分减轻RTT延迟和缓启动的影响。
在持久连接情况下,服务器在发出响应后保持TCP连接继续打开着。同一客户/服务器之间的后续请求和响应可以通过这个连接传递。整个Web页面上,比如 1个基本HTML和10个JPEG对象的页面,可以通过单个的持久TCP连接发送。甚至存放在同一个服务器中的多个Web页面也可以通过单个持久TCP连接发送。通常,HTTP服务器在某个连接闲置了一段时间后就关闭它,而这段时间通常是可以配置的。持久连接分为不带流水线(without pipeline)和带流水线(with pipeline)两个版本。如果是步带流水线的版本,那么客户只能在接收到前一个请求的响应后才会发送新的请求。这种情况下,Web页面所引用的每个对象(上例中的10个JPEG图像)都经历1个RTT延迟用于请求和接收该对象。于非持久连接中每个对象需要2个RTT相比,不带流水线的持久连接已经有所改善。不过,带流水线的持久连接还能进一步降低响应延迟。不带流水线版本的另一个缺点是,服务器送出一个对象后开始等待下一个请求,而这个新的请求却不能马上到达。这段时间服务器资源便闲置了。
HTTP/1.1的默认模式是使用带流水线的持久连接。这种情况下,HTTP客户每遇到一个对象引用就立即发出一个请求,因而HTTP客户可以一个接一个连续发出各个引用对象的请求。服务器收到这些请求后,也可以一个接一个连续发送各个对象。如果所有的请求和响应都连续发送的,那么所有引用到的对象供给经历1个RTT延迟,而不是像不带流水线版本那样,每个引用都必须有1个RTT延迟。另外,带流水线的持久连接中服务器空等待时间比较少。与非持久连接相比,持久连接,无论是否带流水线降低了1个RTT延迟外,缓启动延迟也比较小。其原因在于既然各个对象都使用同一个TCP连接,服务器发送第一个对象后就不必再以一开始的缓慢速率发送后续对象了。相反,服务器可以按照第一个对象发送完毕后的速率发送下一个对象。
本文来源于力天Blogger http://ordinarysky.cn/zblog/ , 原文地址:http://ordinarysky.cn/zblog/post/persistentinhttp.html
分享到:
相关推荐
RTSP通过保持持久连接来维持状态,避免频繁地建立和关闭连接,从而优化实时数据传输。 RTSP通常运行在554端口,不同于HTTP的80端口。由于安全策略,这个端口可能被防火墙或代理阻止,需要管理员配置以允许RTSP通信...
HTTP/1.1是HTTP协议的一个重要版本,相比之前的HTTP/1.0,它引入了许多改进和新特性,如持久连接、分块传输编码和更多请求方法(如PUT、DELETE)。 **HTTP请求方法** HTTP协议定义了多种请求方法,常见的有GET、...
HTTP是一个基于TCP/IP通信协议来传递数据的应用层协议,主要用于Web浏览器与Web服务器之间的信息传输。它采用请求/响应模型,即客户端发起一个请求,服务器根据请求返回响应。 二、HTTP工作原理 1. 建立连接:...
**HTTP协议详解** HTTP(Hypertext Transfer Protocol)超文本传输协议是互联网上应用最广泛的一种网络协议。它是Web浏览器和服务器之间通信的基础,用于在万维网上传输数据。HTTP1.1是HTTP协议的最新版本,相较于...
**HTTP协议详解** HTTP(Hypertext Transfer Protocol)是互联网上应用最为广泛的一种网络协议,它是万维网(WWW)的基础,使得用户能够通过浏览器访问和交换信息。RFC2616是HTTP/1.1版本的官方规范文档,详细定义...
这份"HTTP协议详解PDF"文档应该包含对HTTP协议的全面解析,涵盖了其核心概念、工作原理、请求与响应报文结构、状态码、首部字段等内容。 在HTTP协议中,主要有两种类型的操作:GET和POST。GET方法用于获取资源,而...
HTTP协议详解电子书 HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议,它的设计目的是为了传输数据,并且使数据交换变得简单、高效。HTTP协议是基于TCP/IP通信协议来传输数据的,主要负责客户端...
《超文本传输协议详解》 超文本传输协议(Hypertext Transfer Protocol,简称HTTP)是互联网上应用最为广泛的一种网络协议,它定义了客户端(浏览器)与服务器之间的通信规范,主要用于传输超媒体信息,如HTML文档...
【HTTP协议详解】 HTTP(超文本传输协议)是互联网上应用最广泛的一种网络协议,用于从WWW服务器传输超文本到本地浏览器。自最初的HTTP/0.9版本发展至今,HTTP经历了多个版本的迭代,其中HTTP/1.1是当前最常用的...
- 长连接与短连接:HTTP/1.0默认为短连接,HTTP/1.1支持持久连接。 - Keep-Alive:通过设置Header来保持连接的持久性,提高性能。 5. **HTTP首部字段**: - Cookie和Set-Cookie:用于管理客户端和服务器端的会话...
HTTP/1.0是最早的版本,每个TCP连接只能处理一个请求,而HTTP/1.1引入了持久连接,允许多个请求复用一个TCP连接,提高了效率。HTTP/2则进一步优化了性能,通过二进制分帧和多路复用技术解决了头部阻塞问题,使得并发...
**TCP/IP协议详解卷三**聚焦于网络应用层的一些关键协议,包括TCP事务协议、HTTP、NNTP和UNIX域协议。这些协议在互联网通信中扮演着至关重要的角色,理解它们的工作原理对于网络开发者和系统管理员至关重要。 **TCP...
HTTP 1.1引入了持久连接(Keep-Alive),允许在一次TCP连接中发送多个请求和响应,减少建立新连接的开销。而HTTP 2.0则引入了多路复用,允许多个HTTP请求在同一连接中并行处理,进一步提升了效率。 总结来说,理解...
- HTTP/1.0:引入了持久连接的概念,但默认非持久。 - HTTP/1.1:默认使用持久连接,支持管道和分块编码。 - HTTP/2:引入二进制分帧,多路复用,显著提升性能。 - HTTP/3:基于QUIC协议,解决TCP延迟问题。 7....
为了提高效率,HTTP/1.1引入了持久连接,允许在一次TCP连接上发送多个请求和响应,减少了建立和关闭连接的开销。 HTTP协议的主要组成部分: 1. 请求方法:常见的HTTP请求方法有GET、POST、PUT、DELETE等,每个方法...
### HTTP协议详解 #### 一、HTTP协议简介 HTTP(Hypertext Transfer Protocol)是一种用于分布式、协作式和超媒体信息系统的应用层协议。自1990年由蒂姆·伯纳斯-李提出以来,HTTP协议已经成为万维网(World Wide ...
这个压缩包文件"HTTP协议详解.rar"包含了一个名为"HTTP协议详解.pdf"的文档,很可能是对HTTP协议的详细解析和深入探讨。以下是关于HTTP协议的一些关键知识点: 1. **HTTP简介**:HTTP是一种无状态、基于TCP/IP通信...