浏览器中的网络

HTTP/0.9

  1. 只有请求行,因为一个请求行足够表达要获取的内容
  2. 只有响应体,因为只要返回数据即可,不需要告诉客户端编码、语言等信息
  3. 返回的文件内容是以 ASCII 字符流来传输的,因为是获取 HTML 文件

HTTP/1.0

  1. 加上了请求行,告诉服务器返回什么类型的文件、采取什么形式的压缩、提供什么语言的文件以及文件的具体编码
accept: text/html
accept-encoding: gzip, deflate, br
accept-Charset: ISO-8859-1,utf-8
accept-language: zh-CN,zh
  1. 加上了响应头,比如 content-encoding 字段告诉浏览器最终的压缩类型
    content-encoding: br
    content-type: text/html; charset=UTF-8

  2. 加上状态码

  3. Cache 机制,用来缓存已经下载过的数据

  4. 用户代理:用于服务器需要统计客户端的基础信息

HTTP/1.1

  1. 改成持久连接
    目前浏览器中对于同一个域名,默认允许同时建立 6 个 TCP 持久连接。
Connection: keep-alive
  1. 提供虚拟主机的支持: Host 字段
  2. 客户端 Cookie、安全机制
  3. 使用 CDN 的实现域名分片机制。

缺点:
HTTP/1.1对带宽的利用率却并不理想

  1. TCP 慢启动
  2. 同时开启了多条 TCP 连接,那么这些连接会竞争固定的带宽。又无法区分是关键资源还是普通资源,导致一律放慢速度
  3. HTTP/1.1 队头阻塞的问题。
    在一个 TCP 连接里,多个 HTTP 请求,前面的 HTTP 请求没结束之前,后面的 只能等待着

HTTP/2

一个域名只使用一个 TCP 长连接和消除队头阻塞问题。

TLS

一个域名只使用一个 TCP 长连接来传输数据,
实现资源的并行请求,服务器也可以随时返回处理好的请求资源给浏览器

  1. 多路复发: 带有 ID 编号的帧
    协议栈中添加二进制分帧层(加上 ID 编号),就实现了 HTTP 的多路复用技术。
    帧:HTTP/2 数据通信的最⼩单位消息:指 HTTP/2 中逻辑上的 HTTP 消息。例如请求和响应等,消息由⼀个或多个帧组成。
    流:存在于连接中的⼀个虚拟通道。流可以承载双向消息,每个流都有⼀个唯⼀的整数ID
  2. 可以设置请求的优先级
  3. 服务器推送,不需要浏览器发起请求,服务器主动将一些重要资源推送到浏览器
  4. 头部压缩

缺点:

  1. TCP 的队头阻塞:
    在 TCP 传输过程中,由于单个数据包的丢失而造成的阻塞称为 TCP 上的队头阻塞。
    管道中的任意一个数据丢失了,那之后的数据都需要等待该数据的重新传输
    在 HTTP/2 中,多个请求是跑在一个 TCP 管道中的,如果其中任意一路数据流中出现了丢包的情况,那么就会阻塞该 TCP 连接中的所有请求。
  2. TCP 建立连接的延时
    把从浏览器发送一个数据包到服务器,再从服务器返回数据包到浏览器的整个往返时间称为 RTT
    在这里插入图片描述

HTTP/3:

基于 UDP 实现了类似于 TCP 的多路数据流、传输可靠性等功能,我们把这套功能称为 QUIC 协议

QUIC 协议

  • 实现了类似 TCP 的流量控制、传输可靠性的功能。
  • 集成了 TLS 加密功能
  • 实现了 HTTP/2 中的多路复用功能

和 TCP 不同,QUIC 实现了在同一物理连接上可以有多个独立的逻辑数据流(如下图)。实现了数据流的单独传输,就解决了 TCP 中队头阻塞的问题。
在这里插入图片描述

实现了快速握手功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值