HTTP1.x&HTTP2.0&WebSocket区别

版权声明:转载请注明出处--mosterRan https://blog.csdn.net/qq_35975685/article/details/85331017

看了一些博客与文章,在这里总结一下,如有不对的地方请指正。

HTTP

HTTP协议(HyperText Transfer Protocol,超文本传输协议) ,是互联网上应用最为广泛的一种网络协议,OSI七层模型应用层的一种协议。所有的WWW文件都必须要遵守这个标准,默认端口为80。

HTTP请求响应模型

HTTP由请求和响应构成,是一个标准的客户端服务器模型(B/S) ,HTTP都是客户端发起请求,服务器回送响应。如下图:

在这里插入图片描述

主流版本区别

目前主流的版本有 Http1.0/Http1.1/Http2.0这三个版本的主要区别是什么呢

  • HTTP1.0 每建立一次TCP连接,只提供一次 request 请求和 response 请求,一次请求结束后,自动断开TCP连接
    • 弊端:连接无法复用,每次请求都要经历三次握手和慢启动
  • HTTP1.1 支持持续长连接(Response Headers头中出现Connection:keep-alive),添加了请求流水线串行化单线程处理可以同时在一个TCP连接上发送多个请求,但是只有响应是有顺序的,只有上一个请求完成后,下一个才能响应,并且后续任务仍然受到头部阻塞的影响
  • HTTP2.0 采用多路复用,大幅度提升了web心梗,在与HTTP/1.1语义完全兼容的基础上,进一步减少了网络延迟和传输的安全性,支持明文传输,消息头压缩,二进制分帧(在应用层http和传输层tcp/udp之间增加一个二进制分帧层,解决Http1.1性能限制,改进传输性能,实现低延迟和高吞吐量)
    • 头压缩:采用HPACK算法,当然解码的时候内部有两种字典来解码,第一种是静态字典一共有61种预定义字段,动态字典跟上下文有关,每个HTTP2.0都需要维护一份属于自己的动态字典
    • 二进制分帧:原来HTTP保温的形式是文本传输,而HTTP2.0改进的前提是保证原来的报文结构不发生改变,HTTP1.1头部信息封装在Headers帧中,而消息体封装在Data帧中,然后再对这些帧采用二进制格式的编码转换为0和1的组合,这一个个的帧就是HTTP2.0连接传输的最小单元。
    • 多路复用:HTTP1.1如果多次发送请求会根据FIFO的原则,第一个请求完成才会进行第二个,这也是会头部阻塞的原因,而HTTP2.0采用的是流的形式,一个请求对应一个流并分配一个流id,每个id表示不同的流,同时这个流是双向的,每一个帧都在这个流中进行传递,这也就提高了并发性。
      • 多路复用好处
        • 减少服务端连接压力,减少占用内存,提升连接吞吐量
        • 连接数的减少改善网络阻塞情况,慢启动时间减少,阻塞和丢包回复速度更快
        • 避免频繁创建和关闭(三次连接、四次挥手)
    • 连接、流和帧的关系
      • 一个连接同时被多个流所复用
      • 一个流代表一次完整的请求/响应的过程,可以包含多个帧
      • 一个消息被拆分/封装成多个帧进行传输

WebSocket

WebSocket是HTML5中的协议,本质上是基于TCP,先通过HTTP/HTTPS协议发起一条特殊HTTP请求进行握手后创建一个用于交换数据的TCP连接,也是支持长连接的。WebSocket是由HTTP先发起的,然后在转为WebSocket。当然在HTML5规范下还有SSE(Server-Sent Events,服务器推送事件)这种方式比长轮询(Long Polling)更高效,需要使用EventSource对象。

WebSocket优势:浏览器和服务器只需要做一个握手的动作,在建立连接之后,双方可以互相推送消息。

SSE与WebSocket区别

  • WebSocket是全双工通信,可以双向通信,功能更强;SSE是单向通信,只能服务器想浏览器推送。
  • SSE是一个轻量级协议,相对简单;WebSocket是一种较重的协议,相对复杂
  • SSE默认支持断线重连,WebSocket则需要额外部署
  • SSE支持自定义发送数据类型

总结:HTTP1.1使用Connection:keep-alive进行长连接,并不是永久保持连接,只是维持一段时间。WebSocket是真正实现长连接、全双工的通信。如果你的浏览器支持HTTP2.0可以点击这个连接就可以体验到HTTP/1.1与HTTP/2在图片加载的速度上的明显不同

在博客上看到一个websocket和轮询及长轮询的区别,很形象直接贴图了,如下:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_35975685/article/details/85331017
今日推荐