欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Http的持久连接和管线化

程序员文章站 2022-10-03 22:11:03
【要点】 1. 什么是持久连接? 2. 什么是管线化? 【总结】 1.什么是持久连接? (keep alive模式) HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接);数据传输完成了保持TCP连接不断开(不发RST包、不四次握手),等待 ......

【要点】

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的持久连接和管线化

上一篇: 即时通讯(I)

下一篇: 我用过