HTTP协议:pipeline、持久连接、非持久连接
来源:互联网 发布:如何打开电脑端口 编辑:程序博客网 时间:2024/05/16 14:35
一、HTTP持久连接、非持久连接
1.1 定义
1. 非持久连接:每个连接处理一个请求-响应事务。
2. 持久连接:每个连接可以处理多个请求-响应事务。
持久连接情况下,服务器发出响应后让TCP连接继续打开着。同一对客户/服务器之间的后续请求和响应可以通过这个连接发送。
3. HTTP/1.0 使用非持久连接。 HTTP/1.1 默认使用持久连接。
1.2 非持久连接示例
非持久连接下,客户端请求一个页面。假设该页面包含1个HTML文件和10个JPEG图像,所有这些对象在同一台服务器主机中。再假设该节本HTML文件的URL为:www.yesky.com/sompath/index.html。
1. HTTP客户端与服务器主机www.yesky.com中的HTTP服务器建立一个TCP连接。
2. HTTP客户端发送HTTP请求消息。 包含/sompath/index.html。
3. HTTP服务器接收请求消息,从服务器主机内存或硬盘拿去除对象/sompath/index.html,发出该对象的响应消息。
4. HTTP服务器告知TCP关闭这个TCP连接(TCP要等客户收到这个响应消息后,才会真正终止这个连接)。
5. HTTP客户接收响应消息。TCP连接终止。 该消息标明所拆装的对象是一个HTML文件。客户取出文件,分析后发现10个JPEG对象的引用。
6. 给每一个引用到的JPEG对象重复步骤1~4。
二、非持久连接、串行TCP连接、并行TCP连接、响应时间
2.1 串行TCP连接、并行TCP连接
10个JPEG对象,可以通过10个串行的TCP连接先后取到,也可以通过并行的TCP连接同时取到其中的某些对象。
使用并行TCP连接,可以缩短响应时间。
2.2 响应时间
客户端请求1个基本HTML文件,要耗时2个RTT(round trip time)。
1. “三次握手”时,客户向服务器发送连接请求,服务器发送确认。
2. “三次握手”时,客户向服务器发送确认,并携带请求消息,服务器发送响应消息。
2.3 非持久连接的缺点
1. 每个连接,TCP得在客户端和服务端分配TCP缓冲区,并维持TCP变量。 对于同时为来自数百个不同客户的请求提供服务的web服务器来说,这会严重增加其负担。
2. 每个对象都有2个RTT的延迟。
3. 每个对象都遭受TCP缓启动,因为每个TCP连接都起始于缓启动阶段。
三、持久连接、不带流水线(without pipelining)、带流水线(with pipelining)
3.1 不带流水线(without pipelining)、带流水线(with pipelining)
1. 不带流水线(with pipelining):客户只在收到前一个请求的响应后,才发出新的请求。
与非持久连接2个RTT的延迟相比,不带流水线的持久连接已有所改善。
2. 带流水线(with pipelining):HTTP客户没碰到一个引用就立即发送一个请求,即HTTP客户可以一个接一个挨着发送各个引用对象的请求。服务器收到这些请求后,也可以一个接一个的发送各个对象的响应。
带流水线,所有引用到的对象一共只经历1个RTT的延时,而不带流水线,每个引用到的对象各有1个RTT的延迟。
带流水线的持久连接中服务器空等请求的时间较少。
参考资料:
http pipeline:http://blog.csdn.net/dodo_check/article/details/8672976
- HTTP协议:pipeline、持久连接、非持久连接
- HTTP协议:pipeline、持久连接、非持久连接
- Http持久连接、非持久连接和pipeline连接
- HTTP非持久连接和持久连接
- HTTP非持久连接和持久连接
- http的持久连接和非持久连接区别
- http的持久连接和非持久连接
- 应用层之HTTP非持久连接
- 非持久连接和持久连接
- HTTP之持久连接
- http 长连接 短连接 持久连接
- HTTP/1.1 协议 8-10 持久连接( Persistent Connections)
- http协议与分块传输,持久连接及反向ajax
- 持久连接
- http persistent Connections 持久化连接
- 应用层之HTTP持久连接
- HTTP请求过程(http是一种无状态协议,即不建立持久的连接)
- 关于MYSQL持久连接
- 写今目标自动签退的记录
- 详解大端模式和小端模式
- 你真的知道blocks在Objective-C中是怎么工作的吗?
- weblogic配置:<prefer-web-inf-classes>true</prefer-web-inf-classes>
- A+B for Input-Output Practice (II)
- HTTP协议:pipeline、持久连接、非持久连接
- 类
- 如何实现WCF与EnterLib PIAB、Unity之间的集成
- 数据结构——串的堆分配存储
- Linux下 Python升级
- JS实现表头冻结
- A+B for Input-Output Practice (III)
- 怎样恢复微信历史聊天记录
- Tips Tricks