美文网首页
浏览器中的网络

浏览器中的网络

作者: 欢欣的膜笛 | 来源:发表于2021-03-22 23:58 被阅读0次

HTTP/1:HTTP性能优化

HTTP 是浏览器中最重要且使用最多的协议,是浏览器和服务器之间的通信语言,也是互联网的基石。

  1. 超文本传输协议 HTTP/0.9
    用来在网络之间传递 HTML 超文本的内容,所以被称为超文本传输协议。采用了基于请求响应的模式,从客户端发出请求,服务器返回数据。

    • 只有一个请求行,并没有HTTP 请求头和请求体
    • 服务器也没有返回头信息
    • 返回的文件内容是以 ASCII 字符流来传输的
  2. 被浏览器推动的 HTTP/1.0
    支持多种类型的文件下载是 HTTP/1.0 的一个核心诉求,而且文件格式不仅仅局限于 ASCII 编码,还有很多其他类型编码的文件。
    HTTP/1.0 引入了请求头和响应头、状态码、Cache 机制等。

HTTP/1.0 的请求流程
  1. 缝缝补补的 HTTP/1.1

    • 改进持久连接
      HTTP/1.1 中增加了持久连接的方法,它的特点是在一个 TCP 连接上可以传输多个 HTTP 请求,只要浏览器或者服务器没有明确断开连接,那么该 TCP 连接会一直保持。

    • 不成熟的 HTTP 管线化
      HTTP/1.1 中试图通过管线化的技术来解决队头阻塞的问题。HTTP/1.1 中的管线化是指将多个 HTTP 请求整批提交给服务器的技术,虽然可以整批发送请求,不过服务器依然需要根据请求顺序来回复浏览器的请求。

    • 提供虚拟主机的支持
      HTTP/1.1 的请求头中增加了Host 字段,用来表示当前的域名地址,这样服务器就可以根据不同的 Host 值做不同的处理。

    • 对动态生成的内容提供了完美支持
      HTTP/1.1 引入了 Chunk transfer 机制。服务器会将数据分割成若干个任意大小的数据块,每个数据块发送时会附上上个数据块的长度,最后使用一个零长度的块作为发送数据完成的标志。这样就提供了对动态内容的支持。

    • 客户端 Cookie、安全机制

  2. HTTP/1.1 为网络效率做了大量的优化,最核心的有:

    • 增加了持久连接;
    • 浏览器为每个域名最多同时维护 6 个 TCP 持久连接;
    • 使用 CDN 的实现域名分片机制。

HTTP/2:如何提升网络速度?

  1. HTTP/1.1 的主要问题
    HTTP/1.1对带宽的利用率并不理想。带宽是指每秒最大能发送或者接收的字节数。我们把每秒能发送的最大字节数称为上行带宽,每秒能够接收的最大字节数称为下行带宽。
    主要原因:TCP 的慢启动、同时开启了多条 TCP 连接,那么这些连接会竞争固定的带宽、HTTP/1.1 队头阻塞的问题。

  2. HTTP/2 的多路复用
    一个域名只使用一个 TCP 长连接和消除队头阻塞问题。

HTTP/2 的多路复用
  1. 多路复用的实现:引入二进制分帧层

    • 浏览器准备好请求数据,包括了请求行、请求头等信息,如果是 POST 方法,那么还要有请求体。
    • 这些数据经过二进制分帧层处理之后,会被转换为一个个带有请求 ID 编号的帧,通过协议栈将这些帧发送给服务器。
    • 服务器接收到所有帧之后,会将所有相同 ID 的帧合并为一条完整的请求信息。
    • 服务器处理该条请求,并将处理的响应行、响应头和响应体分别发送至二进制分帧层。
    • 二进制分帧层会将这些响应数据转换为一个个带有请求 ID 编号的帧,经过协议栈发送给浏览器。
    • 浏览器接收到响应帧之后,会根据 ID 编号将帧的数据提交给对应的请求。
  2. HTTP/2 其他特性

    • 可以设置请求的优先级
    • 服务器推送
    • 头部压缩

HTTP/3:甩掉TCP、TLS 的包袱,构建高效网络

  1. HTTP/2 的缺陷

    • TCP 的队头阻塞
      在 TCP 传输过程中,由于单个数据包的丢失而造成的阻塞称为 TCP 上的队头阻塞。

    • TCP 建立连接的延时
      网络延迟又称为 RTT(Round Trip Time)。我们把从浏览器发送一个数据包到服务器,再从服务器返回数据包到浏览器的整个往返时间称为 RTT。RTT 是反映网络性能的一个重要指标。

    • TCP 协议僵化

  2. QUIC 协议
    HTTP/3 选择了一个折衷的方法—— UDP 协议,基于 UDP 实现了类似于 TCP 的多路数据流、传输可靠性等功能,我们把这套功能称为QUIC 协议。
    HTTP/3 中的 QUIC 协议集合了以下几点功能:

    • 实现了类似 TCP 的流量控制、传输可靠性的功能,它提供了数据包重传、拥塞控制以及其他一些 TCP 中存在的特性。
    • 集成了 TLS 加密功能,减少了握手所花费的 RTT 个数。
    • 实现了 HTTP/2 中的多路复用功能。和 TCP 不同,QUIC 实现了在同一物理连接上可以有多个独立的逻辑数据流。实现了数据流的单独传输,就解决了 TCP 中队头阻塞的问题。
    • 实现了快速握手功能。
HTTP/2 和 HTTP/3 协议栈
  1. HTTP/3 的挑战
    • 从目前的情况来看,服务器和浏览器端都没有对 HTTP/3 提供比较完整的支持。
    • 部署 HTTP/3 也存在着非常大的问题。因为系统内核对 UDP 的优化远远没有达到 TCP 的优化程度。
    • 中间设备僵化的问题。这些设备对 UDP 的优化程度远远低于 TCP,据统计,使用 QUIC 协议时,大约有 3%~7% 的丢包率。

相关文章

  • 浏览器中的网络

    HTTP/1:HTTP性能优化 HTTP 是浏览器中最重要且使用最多的协议,是浏览器和服务器之间的通信语言,也是互...

  • 浏览器专栏学习-浏览器中的网络

    此学习记录来自于极客时间专栏浏览器工作原理与实践,由于个人对这块内容比较感兴趣,所以花钱买了专栏,但看完总觉得什么...

  • QQ 浏览器的 Cookie 同步思路

    前言 本文主要记录下再逆向研究 QQ 浏览器的网络拦截中,QQ 浏览器是如何同步 WkWebView 和原生的 c...

  • 跨域问题解决

    跨域问题的产生:浏览器的同源访问策略, 网络请求或者frameset, 用户在浏览器中输入地址访问数据,或者url...

  • 18 js13 原生js升华1 小知识点

    1、浏览器基本组成:用户界面、浏览器引擎、渲染引擎、网络、UI后端、js引擎、数据存储; 网络:发送网络请求;UI...

  • 网络协议性能优化

    关于本书网络开发中要用到哪些协议,这些协议有什么固有的局限性,如何针对底层网络优化自己的应用,浏览器提供了哪些网络...

  • 抖音视频无水印下载

    复制分享链接 手机浏览器中打开,【手机浏览器!F12更改设备模式就OK】 从网络请求中找到含有https://aw...

  • 一直显示“下载中…”,怎么办?

    长时间显示“下载中…”的状态,一般都是网络延迟、网络不佳等原因导致。 可以尝试「关闭/更换浏览器」,重新下载;或者...

  • android实现分享,打开网页链接等简单功能

    分享 shareText里填充文字, url等内容; 2.在浏览器中打开网络链接

  • 白描 WIFI 识别功能简介

    WIFI 识别的意思是: 通过电脑和手机公用的 WIFI 网络,从电脑浏览器向手机中传输图片,在电脑浏览器上点击识...

网友评论

      本文标题:浏览器中的网络

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