1.DNS域名解析(本地浏览器缓存、操作系统缓存或者DNS服务器)

  1. 首先会搜索浏览器自身的DNS缓存(缓存时间比较短,大概只有 1 分钟,且只能容纳 1000 条缓存)
  2. 如果浏览器自身的缓存里面没有找到,那么浏览器会搜索系统自身的DNS缓存
  3. 如果还没有找到,那么尝试从hosts文件里面去找
  4. 在前面三个过程都没获取到的情况下,就去域名服务器去查找

    2.三次握手建立tcp连接

    在 HTTP 工作开始之前,客户端首先要通过网络与服务器建立连接,HTTP 连接是通过 TCP 来完成的。HTTP 是比 TCP更高层次的应用层协议,根据规则,只有低层协议建立之 后,才能进行高层协议的连接,因此,首先要建立 TCP 连接,一般 TCP 连接的端口号是 80;

    3.客户端发起http请求

    4.服务器响应http请求

    5.客户端解析html代码,并请求html代码中的资源

    浏览器拿到 html 文件后,就开始解析其中的 html 代码,遇到 js/css/image 等静态资源 时,就向服务器端去请求下载

    6.客户端渲染展示内容

    7.关闭tcp连接

    一般情况下,一旦服务器向客户端返回了请求数据,它就要关闭TCP连接,然后如果客户端或者服务器在其头信息加入了这行代码 Connection:keep-alive ,TCP 连接在发送后将仍然保持打开状态,于是,客户端可以继续通过相同的连接发送请求,也就是说前面的3到6,可以反复进行。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。