http2协议之多路复用

http2多路复用解决的问题,由于浏览器的限制访问网站资源的时候浏览器在同一个域名下最多开启6个线程,这样如果前几个线程执行比较慢的任务或者需要等待服务器端响应,后面的资源就被阻塞住了 .以往的做法是把静态资源如图片 css等文件放在不同的域名下以提高页面加载速度.

另外一点就是明显减少了tcp连接的3次握手4次挥手,和ssl(tsl)协议中反复的client hello servier hello与证书传输的浪费.

插入待补充

这张图片就可以描述多路复用的情况,同一域名下所有访问都是从同一个tcp连接中走,ssl的数据包是并发的,原来http1.1的机制是client发出请求后必须等到服务器响应后才能发出第二个请求.现在所有请求都是同时发送的不需要等待.另外在http2包中还有服务器响应优先级的设置位.

http2采用二进制分帧,把header与data分成二进制帧    

 

下面分析一下为什么HTTP2协议可以多路双向并发了.

通过wireshark抓包可以看到

1.发送的是headers包

2.发送的headers data包

length字段分配在前三个字节标示整个流的长度

type字段标示流的类型 分别为 HEADERS ,DATA ,MAGIC,SETTINGS 如果比较小的话headers与data可以放在一个包里.

magic 第一次传输之前client端都会发送magic让服务器端确认使用http2协议

3.Stream Identifier  4个字节 标志同步发送中的包属于哪一个请求 通过这个服务器判断是哪个请求的数据.

 

 

 

 

 

 

 

CMUX(Channel Multiplexer)多路复用协议是一种网络协议,用于在传输层将多个独立的串行数据流复用到一个单一的通信链路上。 CMUX协议主要用于解决串行通信中的带宽利用问题。在传统串行通信中,每个串口只能连接一个设备或进行单个数据流的传输。而使用CMUX协议后,可以将多个串口的数据流复用到一个物理通信链路上,实现了多个数据流同时传输,从而提高了带宽利用率。 CMUX协议的工作原理如下:首先,通过一个控制信道进行通信链路的建立和管理。然后,将传输数据流分为多个虚拟通道,每个虚拟通道都有一个唯一的标识符。在发送端,将来自不同串口的数据分别封装在不同的虚拟通道中,并添加相应的标识符进行区分。在接收端,根据标识符将接收到的数据流分配到对应的串口中进行处理。 CMUX协议的优点在于它可以有效地利用串行通信的带宽资源,提高通信效率。同时,它能够支持多种串行通信协议,使得不同类型的设备可以共享同一个物理通信链路。此外,CMUX协议还具备良好的扩展性,可以根据实际需求自由添加或删除虚拟通道。 总之,CMUX多路复用协议是一种可以将多个串行数据流复用到一个单一通信链路上的网络协议。它通过提高带宽利用率、支持多种串行通信协议以及具备良好的扩展性等特点,为串行通信领域带来了更高效、更灵活的解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值