在浏览器输入一个网址回车后发生了什么?

1.DNS解析

  • 在浏览器DNS缓存中搜索
  • 在操做系统DNS缓存中搜索
  • 读取系统hosts文件,查找其中是否有对应的ip
  • 将解析出的IP地址返回给浏览器

2.创建TCP链接(三次握手)

  • 第一次握手:客户端发送一个 SYN 包给服务器端,而后等待服务器端的回复。
  • 第二次握手:服务器端收到客户端发送的 SYN 包后发出 ACK 回复并同时返回一个 SYN 包,进入准备链接状态。
  • 第三次握手:客户端收到服务器端返回的 SYN+ACK 包后,确认了服务器端已经收到请求并作好链接准备,因而给服务器端发送 ACK包。链接成功,三次握手完毕。
    三次握手

3.客户端发送http请求

  • HTTP请求包括请求报头和请求主体两个部分,其中请求报头包含了相当重要的信息,包括请求的方法(GET / POST)、目标url、遵循的协议(http / https / ftp…),返回的信息是否须要缓存,以及客户端是否发送cookie等。

4.服务器处理请求并返回HTTP报文

  • 服务接收到客户端发送的HTTP请求后,查找客户端请求的资源,并返回响应报文给浏览器。响应报文中有状态码。状态码由三位数字组成,其中常见的是200,OK表示请求成功。301表示永久重定向,在返回301状态码的同时,响应报文也会附带重定向的url,客户端接收到后将http请求的url作相应的改变再从新发送。404 not found表示客户端请求的资源找不到。

5.浏览器将服务器返回的HTTP报文渲染到页面上

  • 处理 HTML 标记并构建 DOM 树。
  • 处理 CSS 标记并构建 CSSOM 树。
  • 将 DOM树 与 CSSDOM 树合并成一个渲染树。
  • 根据渲染树来布局,以计算每一个节点的几何信息。
  • 将各个节点绘制到屏幕上。

6.断开链接(四次挥手)

  • 当页面渲染完成后,客户端或服务器端将随时提出断开链接请求。此时会发生四次挥手,基本步骤与三次回收相同,但因为断开链接时数据可能还处于传输阶段,因此第二次挥手时会先返回 FIN 包再返回 ACK 断开链接确认报文。因此变成了四步。

三次握手
相关文章
相关标签/搜索