长连接,短连接及WebSocket介绍(含http1.0,1.1,2.0相关)

Posted 前端初学者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了长连接,短连接及WebSocket介绍(含http1.0,1.1,2.0相关)相关的知识,希望对你有一定的参考价值。

每天一篇好文章系列18年第97期

编者按

        文章作者通过解析http各个版本来说明长链接和短链接的区别。

01












http1.0和http1.1及http2.0区别

http1.0

HTTP 协议老的标准是HTTP/1.0,为了提高系统的效率,HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。但是,这也造成了一些性能上的缺陷,假如一个网页中包含很多图片和请求,每次都要断开重新连接,严重影响客户机和服务器的性能。基于此会发现,http1.0被抱怨最多的就是连接无法复用,和head of line blocking这两个问题。

连接无法复用会导致每次请求都经历三次握手和慢启动。三次握手在高延迟的场景下影响较明显,慢启动则对文件类大请求影响较大。

head of line blocking会导致带宽无法被充分利用,以及后续健康请求被阻塞。


HTTP2.0

http2.0新特性如下:

多路复用 (Multiplexing)

多路复用允许同时通过单一的 HTTP/2 连接发起多重的请求-响应消息。在 HTTP/1.1 协议中浏览器客户端在同一时间,针对同一域名下的请求有一定数量限制。超过限制数目的请求会被阻塞。

而 HTTP/2 的多路复用(Multiplexing) 则允许同时通过单一的 HTTP/2 连接发起多重的请求-响应消息。因此 HTTP/2 可以很容易的去实现多流并行而不用依赖建立多个 TCP 连接,HTTP/2 把 HTTP 协议通信的基本单位缩小为一个一个的帧,这些帧对应着逻辑流中的消息。并行地在同一个 TCP 连接上双向交换消息。

二进制分帧

HTTP/2在 应用层(HTTP/2)和传输层(TCP or UDP)之间增加一个二进制分帧层。在不改动 HTTP/1.x 的语义、方法、状态码、URI 以及首部字段的情况下, 解决了HTTP1.1 的性能限制,改进传输性能,实现低延迟和高吞吐量。

首部压缩(Header Compression)

HTTP/1.1并不支持 HTTP 首部压缩,为此 SPDY 和 HTTP/2 应运而生, SPDY 使用的是通用的DEFLATE 算法,而 HTTP/2 则使用了专门为首部压缩而设计的 HPACK 算法。

02















长连接,短连接

普及了这么多知识之后,再说长连接和短连接,大家应该很清楚了吧,长连接就是http1.1支持的链接。

长连接过程如下:

连接->传输数据->保持连接 -> 传输数据-> 。。。 ->关闭连接。 

短连接如下:

连接->传输数据->关闭连接 



03

websocket和轮询及长轮询区别

轮询如下:

客户端:啦啦啦,有没有新信息(Request)服务端:没有(Response客户端:啦啦啦,有没有新信息(Request)服务端:没有。。(Response客户端:啦啦啦,有没有新信息(Request)服务端:你好烦啊,没有啊。。(Response客户端:啦啦啦,有没有新消息(Request服务端:好啦好啦,有啦给你。(Response客户端:啦啦啦,有没有新消息(Request服务端:。。。。。没。。。。没。。。没有(Response ---- loop

长轮询如下:

客户端:啦啦啦,有没有新信息,没有的话就等有了才返回给我吧(Request服务端:额。。 等待到有消息的时候。。来 给你(Response客户端:啦啦啦,有没有新信息,没有的话就等有了才返回给我吧(Request -loop

websocket如下:

websocket解决了HTTP的这几个难题。 首先,被动性,当服务器完成协议升级后(HTTP->Websocket),服务端就可以主动推送信息给客户端啦。

所以上面的情景可以做如下修改。

客户端:啦啦啦,我要建立Websocket协议,需要的服务:chatWebsocket协议版本:17HTTP Request服务端:ok,确认,已升级为Websocket协议(HTTP Protocols Switched客户端:麻烦你有信息的时候推送给我噢。。服务端:ok,有的时候会告诉你的。服务端:balabalabalabala服务端:balabalabalabala服务端:哈哈哈哈哈啊哈哈哈哈服务端:笑死我了哈哈哈哈哈哈哈


点评

        文章详细介绍了http协议中的各种状态码的含义,对于刚刚接触http的初学者是一个不错的参考。


本文选自博客
作者: haorooms

相关阅读推荐





更多内容,请点击左下角阅读原文



以上是关于长连接,短连接及WebSocket介绍(含http1.0,1.1,2.0相关)的主要内容,如果未能解决你的问题,请参考以下文章

游戏网络编程——WebSocket入门及实现自己的WebSocket协议

HTTP长连接短连接使用及测试

HTTP长连接短连接使用及测试

php+websocket搭建简易聊天室实践

TCP 长连接和短连接的区别?

HTTP的长短连接介绍