Http的持久连接和管线化

时间:2022-10-14 21:10:45

【要点】

1. 什么是持久连接?

2. 什么是管线化?

 

【总结】

1.什么是持久连接? (keep alive模式)


 HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接);数据传输完成了保持TCP连接不断开(不发RST包、不四次握手),等待在同域名下继续用这个通道传输数据;相反的就是短连接。

HTTP 1.1版本支持持久连接 1.0版本不支持

与非持久连接的区别:

持久连接使客户端到服务器端连接持续有效,避免了重新建立连接

大大减少了连接的建立以及关闭时延。HTTP连接是建立在TCP协议之上的,建立一条TCP连接需要三次握手,TCP连接关闭时需要四次挥手。这些都是需要时间的

 

2.什么是管线化

管线化机制须通过永久连接(persistent connection)完成,仅HTTP/1.1支持此技术(HTTP/1.0不支持)

在使用持久连接的情况下,某个连接消息的传递类似于

请求1 -> 响应1 -> 请求2 -> 响应2

管线化:某个连接上的消息变成了类似这样 

请求1 -> 请求2 -> 请求3 -> 响应1 -> 响应2 -> 响应3

【注】

  1. 那么持久连接和管线化的区别在于:

  持久连接的一个缺点是请求和响应式是顺序执行的,只有在请求1的响应收到之后,才会发送请求2,而管线化不需要等待上一次请求得到响应就可以进行下一次请求。实现并行发送请求。 

  2. 只有GET和HEAD要求可以进行管线化,而POST则有所限制

  3. 初次创建连接时也不应启动管线机制,因为对方(服务器)不一定支持HTTP/1.1版本的协议。

       4.HTTP1.1要求服务器端支持管线化,但并不要求服务器端也对响应进行管线化处理,只是要求对于管线化的请求不失败,而且现在很多服务器端和代理程序对管线化的支持并不好,现代浏览器Chrome和Firefox默认并未开启管线化支持。

 Http的持久连接和管线化