HTTP协议:pipeline、持久连接、非持久连接

HTTP协议:pipeline、持久连接、非持久连接

1.  简介

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。

2.1 不带流水线(without pipelining)、带流水线(with pipelining)

      1.  不带流水线(with pipelining):客户只在收到前一个请求的响应后,才发出新的请求。

           与非持久连接2个RTT的延迟相比,不带流水线的持久连接已有所改善。

      2.  带流水线(with pipelining):HTTP客户没碰到一个引用就立即发送一个请求,即HTTP客户可以一个接一个挨着发送各个引用对象的请求。服务器收到这些请求后,也可以一个接一个的发送各个对象的响应。

           带流水线,所有引用到的对象一共只经历1个RTT的延时,而不带流水线,每个引用到的对象各有1个RTT的延迟。

           带流水线的持久连接中服务器空等请求的时间较少。   

2.  范例
      TODO
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值