http的持久连接和管线化

yulia
yulia 原创
2018-09-08 17:45:00 1671浏览

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

【注】

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

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

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

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

以上就是http的持久连接和管线化的详细内容,更多请关注php中文网其它相关文章!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。