美文网首页
《趣谈网络协议》学习笔记 day04

《趣谈网络协议》学习笔记 day04

作者: 陈卧虫 | 来源:发表于2023-01-18 23:37 被阅读0次

    http1.1

    http1.1 是基于tcp实现的应用层协议,所以请求需要建立连接,由于建立连接和断开连接的过程很耗费资源,通过keep-alive机制可以让多个请求复用同一个连接。文本协议,每次请求都需发送完整的数据。

    虽然可以多个请求复用同一个连接,但实际是在一个队列中排队发送,当队头的请求出现问题时,就会堵塞整个发送,也就是队头堵塞问题。

    请求的格式

    由三部分组成:

    1. 请求头:用于表示本次请求的方法,路劲,协议版本
    2. 首部:配置信息
    3. 实体:具体参数


      image.png
    GET /search HTTP/1.1  
    Accept-Language: zh-cn  
    Accept-Encoding: gzip, deflate  
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; TheWorld)  
    Connection: Keep-Alive  
    

    响应的格式

    也是三部分组成:

    1. 响应头:协议版本,响应状态,描述信息
    2. 首部:配置信息
    3. 实体:响应结果


      image.png

    http 2.0

    是对http1.1的优化,主要有几个方面:

    1. 减少请求头的无效传输,通过在通信两端建立索引表,相同的头字段只需发送索引id即可。
    2. 将tcp连接虚拟成多个流,彼此互不干扰,不同的请求就可以通过不同的流发送,从而避免对队头堵塞问题。同时流也是有优先级的,确定不同请求的紧急程度。
    3. 内容编码,信息编程成二进制,分割成更小的帧,header帧传输Header,data帧传输实体内容。每一个header帧都代表着一个新的流。帧的发送是乱序的,目的是为了避免队头堵塞。

    quic

    1. tcp的包是严格有序的,仍然存在串行问题。所以为了彻底解决这个问题,quic选择使用udp作为底层的传输协议。
    2. 自定义连接机制:不再通过四元组表示一个连接(源ip,源端口,目标ip,目标端口),而是通过一个64位(8字节)的随机数标识一个连接。
    3. 自定义重传机制:通过包的序号持续递增的机制,哪怕包丢失,重发的包序号也会递增,从而确认更加准确的RTT(往返时间)。而发送的位置通过offset来确认。
    4. 无堵塞的多路复用: udp的多个流之间没有依赖,也不需要有序发送,做到了真正的并发。
    5. 自定义的流量控制:滑动窗口中位置不再依据最近一次连续递增的应答,而是依据实际应答的个数,哪怕中间有包丢失,应答依然有效,窗口右移。

    相关文章

      网友评论

          本文标题:《趣谈网络协议》学习笔记 day04

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