从输入网址到网页显示期间发生了什么?

发布于:2025-02-11 ⋅ 阅读:(180) ⋅ 点赞:(0)
1. 浏览器解析 url

      当你在浏览器的导航栏输入网址后,浏览器会对输入的 url 进行解析,从而发送给 web 服务器的请求信息。

2. 生成对应的 http 请求后,浏览器就会通过 DNS 去查询 web 服务器的真实 IP 地址

DNS 解析流程:(以www.baidu.com为例)

  1. 首先客户端 (浏览器) 会向本地 DNS 发送一条消息询问 web 服务器的地址,如果本地缓存表中有则直接返回
  2. 如果本地没有,本地 DNS 则会请求顶级 DNS(只指路不带路) ,询问是否有该域名信息
  3. 根 DNS 接受来自本地的请求后,根据对应的后缀(.com)将请求转发送给对应的顶级域名服务器
  4. 本地域名服务器收然后就会顺着根 DNS 给指明的道路来到顶级 DNS
  5. 顶级域名服务器又根据后缀(baidu.com)将请求转发给权威 DNS
  6. 本地 DNS 这是就会来到权威 DNS 询问该域名对应的 IP 地址
  7. 权威 DNS 查询后将查询结果告知本地 DNS
  8. 本地 DNS 再将 IP 地址返回客户端,客户端和目标建立连接
3. 浏览器通过本地 DNS 的一系列请求后拿到具体的 IP 地址,然后就会进行远程定位,通过 TCP 协议和远程服务器进行连接

TCP 建立连接的过程:(三次握手)

  • 刚开始客户端和服务器端都是 closed 状态
  • 服务器端主动监听某一端口处于 listening 状态。
  • 客户端主动发起连接 SYN,之后处于 syn-sent 状态。
  • 服务器端接收到发起的连接请求,返回 SYN ,并且返回客户端 SYN 的 ACK,然后处于 SYV-RCVD 状态
  • 客户端收到服务器端的 SYN 和 ACK 之后,就会发送对服务器端 SYN 的 ACK,之后处于 ESTABLISHED 状态
  • 服务器端收到自身 ACK 的 ACK 之后,处于ESTABLISHED 状态,至此,三次握手完成。
4. 进行 url 解析之后,浏览器就确定了具体的服务器地址和文件名,接下来就是根据这些信息来生成对应的 http 请求
5. 服务器接受到 http 请求后会解析这个请求,然后生成一个具体的响应头和响应内容。响应头就是服务器告诉浏览器的一些必要信息,响应内容就是请求对应的具体内容
6. 浏览器根据响应内容进行 HTML 的渲染,一部分一部分的显示,知道完全解析完毕
7. 当浏览器解析完服务器传来的全部内容后就会进行 TCP 四次挥手和服务器断开连接

四次挥手:

  • 客户端打算关闭连接,此时会发送一个 TCP 首部 FIN 标志位被置为 1 的报文,也即 FIN 报文,之后客户端进入 FIN_WAIT_1 状态。
  • 服务端收到该报文后,就向客户端发送 ACK 应答报文,接着服务端进入 CLOSE_WAIT 状态。
  • 客户端收到服务端的 ACK 应答报文后,之后进入 FIN_WAIT_2 状态。
  • 等待服务端处理完数据后,也向客户端发送 FIN 报文,之后服务端进入 LAST_ACK 状态。
  • 客户端收到服务端的 FIN 报文后,回一个 ACK 应答报文,之后进入 TIME_WAIT 状态
  • 服务端收到了 ACK 应答报文后,就进入了 CLOSE 状态,至此服务端已经完成连接的关闭。
  • 客户端在经过 2MSL 一段时间后,自动进入 CLOSE 状态,至此客户端也完成连接的关闭。

网站公告

今日签到

点亮在社区的每一天
去签到