面试官问:输入URL发生了什么

老生常谈的面试题了

在浏览器地址栏输入URL发生了什么,主要有以下几个过程:

DNS解析

  • 浏览器校验输入内容是否为有效地址,否则发起搜索
  • 进行DNS解析,以此从浏览器缓存、系统缓存、路由器缓存、ISP缓存中获取服务器的IP地址,端口号
  • 利用IP地址和远程服务器建立TCP连接,三次握手
  • 构建请求头信息,发起请求

请求发送/响应

  • 发起请求时会检查浏览器缓存,涉及强缓存协商缓存,如果命中强缓存和协商后缓存未过期,直接从缓存中获取数据,否则获取响应数据
  • 检查响应类型Content-Type,字节流类型调用下载管理器,否则通知浏览器进程准备渲染进程准备进行渲染
  • 断开链接 四次挥手

浏览器渲染

  • 获取HTML原始字节,根据文件指定编码(UTF-8)进行转换
  • 词法分析
  • 构建DOM
    • DOM树跟CSSOM合成生成渲染树
    • 渲染树只包含渲染网页所需的节点
    • 布局计算每个对象的位置跟大小
    • 绘制,将渲染树渲染到屏幕上
作者: 果汁
文章链接: https://guozhigq.github.io/post/a3bb328d.html
版权声明: All posts on this blog are licensed under the CC BY-NC-SA 4.0 license unless otherwise stated. Please cite 果汁来一杯 !