tcp

从浏览器地址栏输入URL到显示页面的步骤(http为例)

2016-10-31  本文已影响80人  骑着蜗牛去遛狗
  1. 在浏览器地址栏输入URL

  2. 浏览器查看缓存

    • 如果请求资源在缓存中并且新鲜,跳转到转码步骤如果资源未缓存,发起新请求
    • 如果已缓存,检验是否足够新鲜,足够新鲜直接提供给客户端,否则与服务器进行验证。
    • 检验新鲜通常有两个HTTP头进行控制 Expires和Cache-Control
      • HTTP1.0提供Expires,值为一个绝对时间表示缓存新鲜日期
      • HTTP1.1增加了Cache-Control: max-age=,值为以秒为单位的最大新鲜时间
  3. 浏览器解析URL获取协议,主机,端口,path

  4. 浏览器组装一个HTTP(GET)请求报文

  5. 浏览器获取主机ip地址,过程如下:

    • 浏览器缓存
    • 本机缓存
    • hosts文件
    • 路由器缓存
    • ISP DNS缓存
    • DNS递归查询(可能存在负载均衡导致每次IP不一样)
  6. 打开一个socket与目标IP地址,端口建立TCP链接,三次握手如下:

    • 客户端发送一个TCP的SYN=1,Seq=X的包到服务器端口
    • 服务器发回SYN=1, ACK=X+1, Seq=Y的响应包
  1. TCP链接建立后发送HTTP请求
  2. 服务器接受请求并解析,将请求转发到服务程序,如虚拟主机使用HTTP Host头部判断请求的服务程序
  3. 服务器检查HTTP请求头是否包含缓存验证信息如果验证缓存新鲜,返回304等对应状态码
  4. 处理程序读取完整请求并准备HTTP响应,可能需要查询数据库等操作
  5. 服务器将响应报文通过TCP连接发送回浏览器
  6. 浏览器接收HTTP响应,然后根据情况选择关闭TCP连接或者保留重用,关闭TCP连接的四次握手如下
  1. 浏览器检查响应状态吗:是否为1XX,3XX, 4XX, 5XX,这些情况处理与2XX不同
  2. 如果资源可缓存,进行缓存
  3. 对响应进行解码(例如gzip压缩)
  4. 根据资源类型决定如何处理(假设资源为HTML文档)
  5. 解析HTML文档,构件DOM树,下载资源,构造CSSOM树,执行js脚本,这些操作没有严格的先后顺序,以下分别解释
  6. 构建DOM树
  1. 解析过程中遇到图片、样式表、js文件,启动下载
  2. 构建CSSOM树
  1. **根据DOM树和CSSOM树构建渲染树
  1. js解析如下
  1. 显示页面(HTML解析过程中会逐步显示页面)
上一篇下一篇

猜你喜欢

热点阅读