【浏览器原理-2】浏览器中的网络

ObjectKaz Lv4

课程链接:https://time.geekbang.org/column/intro/100033601?tab=catalog

浏览器的请求流程

发起请求

构建请求行

浏览器构建请求行信息,准备发起请求。

1
GET /index.html HTTP1.1

查找缓存

浏览器缓存策略

浏览器会寻找该请求是否有对应的缓存,如果有,则直接结束请求流程,并返回资源副本。

准备 IP 地址和端口

  • 如果发起请求的是域名,则需要先请求 DNS 服务器,返回域名对应的 IP 地址。
  • 浏览器同时提供了 DNS 缓存服务,对于已经解析过的域名则自动缓存,下次无需重新请求 DNS 服务器
  • HTTP 默认端口号是 80,HTTPS 默认端口号是 443

等待 TCP 队列

Chrome 对同域名请求的限制 对于同域名的请求,Chrome 最多维护 6 个 TCP 连接,其他的请求则进入等待状态,直至 6 个 TCP 连接中有某个连接被释放了。浏览器这么做,是为了避免短时间大量的请求给服务器造成巨大的负载。


性能优化技巧

可以将静态资源放在不同域名的服务器下,从而突破浏览器的请求限制,提高并行请求数量。


建立 TCP 连接

在 HTTP 工作开始之前,浏览器通过 TCP 协议建立连接。这会发生 TCP 的三次握手。

发送 HTTP 请求

  1. 发送请求行:包含请求方法、路径和 HTTP 协议版本
  2. 发送请求头部信息:如操作系统、内核、请求域名、Cookie 等信息
  3. 准备请求数据

服务器处理 HTTP 请求

返回信息

  1. 服务器会返回响应行,包含 HTTP 协议版本和状态码
  2. 发送响应头:响应的数据类型、要保存的 Cookie(Set-Cookie)等信息
  3. 发送响应体:HTML 内容、JSON 内容等

断开连接

  1. 这会经历 4 次挥手。
  2. 如果客户端或服务器端的响应头包含了 Connection:Keep-Alive,那么连接就不会关闭。

性能优化技巧

Connection:Keep-Alive 是 HTTP/1.1 协议中的新增内容。保持连接可以使得下次请求时无需再建立 TCP 连接,从而提高资源的加载速度。


重定向

如果服务器返回了 30x 状态码,那么浏览器会读取响应头的包含在响应头的 Location 字段,并使用 Location 字段重新发起导航。

  • 标题: 【浏览器原理-2】浏览器中的网络
  • 作者: ObjectKaz
  • 创建于: 2021-12-10 12:49:09
  • 更新于: 2022-07-23 08:31:27
  • 链接: https://www.objectkaz.cn/ddfb8c2aedc2.html
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
此页目录
【浏览器原理-2】浏览器中的网络