websocket和http的区别
http: 连接不持久,服务器不能主动推动内容
websocket: 连接持久,服务器可以主动推送内容
细节:
websocket数据格式轻量,性能开销小,数据交换时,包头的字节只有2-10字节,相比http的头部小很多
协议标识:ws、wss
建立连接
req头
response头
http1.0、http1.1、http2.0区别
http1.0:
- 每条请求都要建立连接,断开连接。
- 队头阻塞现象,即需要等一个请求响应完毕后,才能发起下一个请求
http1.1:
- 多个请求可以使用一个tcp的长连接
- 可以与服务端建立多个长连接,客户端可以并发请求数据,一定程度上缓解了队头阻塞的问题
http2.0:
- 浏览器针对同一个域名的资源,只建立一个tcp连接通道,所有的针对这个域名的请求全部在这个通道中完成
- 引入了流的机制,每个请求被切分成多个帧(frame)发送,每个帧记录了请求的streamid,接收端可以根据streamid拼接帧
- 这条通道可以同时处理多个request,http2的多路复用,对于request的响应并不会因为上一个request的响应未完成而阻塞,http2彻底解决了http层面的队头阻塞。
- 服务器主动推送:服务器可以主动推送资源,如在收到加载html的请求后,server可以主动推送js和css资源
- 头部压缩:
- 使用静态表,将常用的头部映射为数字,值部分采用哈夫曼(Huffman)编码,5位代替原来的8位,节省空间
- 动态表,缓存静态表以外的头部
- 动态表和静态表的设计会增加服务器的内存使用,所以会限制缓存的数量
参考:
https://www.jianshu.com/p/63fe1bf5d445
https://juejin.cn/post/6844903489596833800