美文网首页
漫谈HTTP长短连接(5.30更新)

漫谈HTTP长短连接(5.30更新)

作者: 温岭夹糕 | 来源:发表于2020-01-04 20:48 被阅读0次

    资料参考:1.HTTP的长连接和短连接 - 烛秋 - 博客园

    2.极客时间详解HTTP

    什么是长连接

    一次HTTP请求是建立在一次TCP  连接

    在早期如1.0是如此,

    但现在1.1以上,一次TCP连接上可以建立多个HTTP请求

    一次HTTP请求建立一次TCP连接,我们称为短连接

    反之多次我们称为长连接

    而且 从HTTP1.1协议以后,连接默认都是长连接

    用网络面板抓包工具访问百度首页

    connection:keep-alive

    请求和响应的header-field 的 Connection 为keep-alive即长连接

    以前我就有一个误解,不是说HTTP请求是无状态的吗,怎么又是长连接

    1.HTTP协议底层是TCP,这里的长短连接是TCP的长短连接,长连接指不断开会话

    2.无状态是指两次HTTP请求之间的依赖关系,不是指HTTP和TCP

    3.需要客户端和服务端都设置Connection:keep-alive (不需要即为close)

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

    长连接的过期时间

    服务器有时候会回复客户端超时时间,将数据存在响应头的Keep-Alive中

    如Keep-Alive:timeout=20  即保持20s的会话

    长连接的数据传输完成识别

    1.如果传输数据的大小达到了Content-Length大小

    2.分块传输需要根据chunk编码

    注意:一些场景情况

    如果一个资源需要经过多个代理服务器,其中有些代理服务器用的HTTP/1.0的

    即不支持长连接

    这时你携带Connection想要去保持长连接怎么办?

    1.首先中间旧的代理服务器无法处理Connection头部,原样转发给目标服务器(上游服务器)

    2.上游服务器认识Connection,试图处理并保持连接,返回给代理服务器一个Connection

    3.代理服务器还是不认识原样转发给客户端,同时关闭连接

    4.客户端以为长连接,仍在该连接上上发起请求,代理服务器出错,短链接无法发起两次请求

    解决方法:

    就需要使用Proxy-Connection来替换Connection

    比如我利用chorme浏览器的代理模式将阿里云服务器设为代理

    相关文章

      网友评论

          本文标题:漫谈HTTP长短连接(5.30更新)

          本文链接:https://www.haomeiwen.com/subject/cwyfactx.html