输入url到显示页面的过程

整个过程包括两个子过程:导航渲染

一、导航

  1. 用户输入url并回车
  2. 浏览器进程检查url,组装协议,构成完整的url
  3. 浏览器进程通过进程间通信(IPC)把url请求发送给网络进程
  4. 网络进程接收到url请求后检查本地缓存是否缓存了该请求资源,如果有则将资源返回给浏览器进程
  5. 如果没有,网络进程向服务器发起http请求(网络请求),请求过程如下:

    1. 进行DNS解析,获取服务器的ip地址,端口

      1. 本地域名服务器查看本地缓存
      2. 根域名服务器
      3. 顶级域名服务器
      4. 权威域名服务器
    2. 利用ip地址和端口构建进程间通信的接口socket套接字,后续TCP端到端的传输的端也是指的是socket套接字
    3. 建立tcp连接(三次握手)
    4. 构造请求行、请求头和请求体,利用建立好的tcp连接发送构建好的请求信息
    5. 服务器收到请求信息,构造响应行、响应头和响应体,利用建立好的tcp连接发送给客户端
    6. 客户端浏览器的网络进程接收响应头和响应信息,并解析响应内容
  6. 网络进程解析响应流程

    1. 检查状态码,如果是301/302,则需要重定向,从Location自动读取地址,重新进行第4步操作,如果是200,则继续处理请求
    2. 200响应处理

      1. 检查响应的Content-Type,如果是字节流类型,则将该请求提交给下载管理器,该导航流程结束,不再进行后续的渲染。如果是text/html类型,则通知浏览器进程准备渲染进程准备进行渲染
  7. 准备渲染进程

    1. 浏览器进程检查当前的url是否和之前打开的页面的url主域名是否相同,如果相同,则复用之前页面的渲染进程。如果不同,则创建新的渲染进程
  8. 传输数据,更新状态

    1. 渲染进程准备好后,浏览器进程向渲染进程发送“提交文档”信号
    2. 渲染进程接收到信号后建立“管道”与网络进程进行数据的传输
    3. 数据传输完毕后,渲染进程发送“确认提交”信号给浏览器进程
    4. 浏览器进程接收到确认信号后更新浏览器界面的状态:安全信息、地址栏url、前进后退的历史状态、更新web页面等

二、渲染

  1. 渲染进程将 HTML 内容转换为能够读懂的 DOM 树结构。(使用栈来实现,遇到“
  2. 渲染引擎将 CSS 样式表转化为浏览器可以理解的 styleSheets,计算出 DOM 节点的样式。构造渲染树
  3. 创建布局树,并计算元素的布局信息。
  4. 对布局树进行分层,并生成分层树
  5. 为每个图层生成绘制列表,并将其提交到合成线程。
  6. 合成线程将图层分成图块,并在光栅化线程池中将图块转换成位图。
  7. 合成线程发送绘制图块命令 DrawQuad 给浏览器进程。
  8. 浏览器进程根据 DrawQuad 消息生成页面,并显示到显示器上。

输入url到显示页面的过程_第1张图片

你可能感兴趣的:(计算机网络,http,tcp,浏览器)