Emily's blog

从浏览器输入一个地址到渲染出网页的过程

  1. http://abc.com:80/z/c?i=1#b
    http协议 uri 端口号 路径 参数 片段

  2. 域名通过dns解析成ip

    • 首先查询浏览器缓存
    • 再查询系统缓存
    • 再递归查询dns服务器
  3. 建立tcp链接,三次握手

    • syn-》
    • 《- syn/ack
    • ack -》
  4. http报文生成

    • 报文首部
      1. 请求行 PUT example.html HTTP1.1
      2. 请求首部字段:Accept等
    • 报文体
  5. 包装报文,经过链路层(mac),传输层(tcp),网络层(ip),应用层(http)
  6. 服务器接收到HTTP请求

服务器接收到数据之后,会经过链路层,网络层,传输层逐层将该层对应的首部信息去掉

7. 服务器根据收到的HTTP数据,生成对应的响应报文,结构如下:

状态行:由HTTP 版本 状态码 原因短语构成
响应首部字段 通用首部字段 实体首部字段 都可以查手册得知其具体内容以及含义这里不再展开

  1. 客户端接收到了响应报文之后,浏览器渲染呈现
    1. 浏览器通常的主要组件分为以下几部分:
      • 用户界面:如地址栏 书签菜单等等
      • 浏览器引擎:在用户界面和呈现引擎之间传送之类
      • 呈现引擎:负责显示请求的内容。例如HTMLhe CSS
      • JAVAScript解释器:用于解释和执行JavaScript 代码
      • 数据存储
    2. 渲染文档主要使用呈现引擎。
      过程如下:
      1. 呈现引擎从网络层获取请求文档的内容HTML文件,内容大小一般在8000个块以内。
      2. 引擎解析HTML文档 将各个标记转化为内容树上的DOM节点 ,同时解析CSS文件 样式数据
      3. 样式信息和 内容树共同构建成为 呈现树
      4. 呈现树构建完毕以后,进入布局阶段, 为每一个节点分配一个应该出现在屏幕上的确切坐标
      5. 呈现引擎遍历呈现树 由用户界面后端层将每个节点绘制出来。