HTTP详解

本文概述了HTTP从1.0到1.1的关键优化,如长连接和管道传输,然后深入剖析HTTP2.0的改进,如头部压缩、二进制帧、数据流和多路复用,以及服务器推送。同时揭示了HTTP2.0的传输层问题和HTTP/3的解决方案。
摘要由CSDN通过智能技术生成

HTTP的演进

HTTP1.0到HTTP1.1的优化

  • 使用TCP长连接的方式改善了HTTP1.0短连接造成的性能开销
  • 支持网络管道传输,只要有一个请求发送,其他的请求不需要等其回来也就可以继续发送请求,减少整体的响应时间

HTTP1.1的弊端

  • 请求为被压缩就被发送出去,导致头部的信息过大,只能压缩到Body上
  • 头部重复字段发送多次造成资源的浪费
  • 没有优先级的控制(有一些请求比较急可以优先处理)
  • 只能由客户端发送给服务器,服务器只能被动的接收
  • 造成队头阻塞fas[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0fv4OiWF-1626017937001)(httpfa’sark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1h1a2FpeQ==,size_16,color_FFFFFF,t_70)]

HTTP2.0的优化

1. 头部压缩

  • HTTP2.0r如果你同时发送多个请求,他们的头部是一样的或者是相似的。那么协议会被你消除重复的部分
  • 消除原理:在客户端和服务器之间维护一个头信息表,所有的字段都存入这个表中,生成索引号,以后就可以不发送同样的字段了,只发索引号,这样便能够起到压缩的作用(HPACK算法)

2. 格式转换

  • HTTP2.0不在使用HTTP1.1一样的纯文本报文,而是采用二进制帧的方式,头信息和数据体都是二进制帧,虽然不方便我们阅读,但是对于机器很友好,能够加快机器的速度
    在这里插入图片描述

3. 数据流

  • 数据流:每一个请求或者响应的所有数据包都可称之为数据流
  • HTTP2.0的数据包不是按顺序发送的,同一个连接里面的数据包,可能属于不同的回应,所以必须对每一个数据包进行标记
  • 客户端可以通过指定数据流的优先级来设定请求的优先级别

4. 多路复用

  • HTTP2.0是可以在一个连接中并发多个请求或者响应的,而且不需要按照顺序一一对应,移除了HTTP1.1的串行处理,解决了HTTP1.1造成的队头阻塞问题

在这里插入图片描述

5. 服务器推送

  • HTTP/2 还在⼀定程度上改善了传统的「请求 - 应答」⼯作模式,服务不再是被动地响应,也可以主动向客户端发送消息。

HTTP2.0的弊端(传输层协议的弊端)

  • HTTP/2 主要的问题在于,多个 HTTP 请求在复⽤⼀个 TCP 连接,下层的 TCP 协议是不知道有多少个 HTTP 请求的。所以⼀旦发⽣了丢包现象,就会触发 TCP 的᯿传机制,这样在⼀个 TCP 连接中的所有的 HTTP 请求都必须等待这个丢了的包被重传回来
  • 这都是基于 TCP 传输层的问题,所以 HTTP/3 把 HTTP 下层的 TCP 协议改成了 UDP!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值