美文网首页
浏览器一次完整的请求过程

浏览器一次完整的请求过程

作者: X1_blog | 来源:发表于2021-12-08 17:22 被阅读0次
    1. 浏览器检验URL, 判断协议, 解析域名

      1. dns 域名解析 : 浏览器缓存 - 本地host文件 - 本地dns 缓存 - 运营商dns 缓存 - 根域名服务器 - 顶级域名服务器 - 二级域名服务器 - ip返回到浏览器 (512字节) - 使用ip地址发起请求
    2. 建立 tcp 连接

      1. 三次握手 syc(发起同步) -> ack + syc (响应上一个请求,再发一个同步) -> ack + syc(响应上一个请求,确认同步)
    3. 建立http 连接

      1. http 协议

        1. 按请求格式解析请求内容

        2. http版本

        3. 请求方法

        4. 请求参数

        5. 请求头

      2. https 协议 ( http +ssl )

        1. ssl 协议

          1. 证书加密 : 非对称加密

          2. 数据加密 : 对称加密

    4. 请求到达反向代理服务器, 根据配置的负载算法进行分配, 请求转发到对应的服务器

    5. 服务器的php-fpm中, master进程负责监听请求, 空闲的worker竞争accpt请求获得本次请求处理; 如果没有空闲的worker, 根据fpm的配置回收空闲的子进程, 或者创建新的子进程

    6. worker连接到php程序, 接收并解析请求参数

    7. php接收到请求, 假设使用了mvc框架, 会进行路由解析

    8. (待补充)

    9. 找到对应的控制器, 方法

    10. 因为php是解释型语言, 系统会读取对应的php脚本到缓冲区

    11. Zend引擎对脚本进行语法分析, 输出Opcode(操作码), 如果开启了opcache对操作码进行缓存

    12. 执行操作码, worker得到执行结果, 关闭请求; worker又回到空闲状态, 等待下一次请求

    13. master负责监听请求, 使用共享内存读取worker状态, 监听到worker完成请求

    14. master将结果转发给反向代理服务器

    15. 反向代理服务器返回数据到用户主机

    16. 浏览器根据文件头决定行为, 下载文件, 渲染 还是解析脚本

    17. 样式相关

      1. 浏览器解析html 会生成DOM树, 请求资源文件

      2. css 解析样式表,生成CSS规则树

      3. 将 CSS Rule Tree 附着到DOM Tree 上

      4. 发生渲染

        1. 发生reflow : 布局

        2. repaint (重排和重绘) : 外观被改变

    18. js 脚本 : 和dom 同步解析

    worker处理请求的细节: https://blog.csdn.net/ST091ZSC/article/details/102150576


    补充: 使用 dig +traceroute命令查看dns解析的过程

    1. www.taobao.com. 等价于www.taobao.com, 省略了最高级域名

    2. www.taobao.com. 指向别名 www.taobao.com.danuoyi.tbcache.com.

    3. www.taobao.com.danuoyi.tbcache.com.解析得到两个ip : 47.246.16.234 和 47.246.16.233 , 默认使用第一个

    4. cname 指的是别名记录, 使用cname可以解耦ip和访问域名的联系, 且支持了多域名访问同一ip地址

    5. A记录, 指的是域名和ip之间的映射

    6. NS记录, 指的是域名对应的dns解析器的映射

    7. AAAA记录会将域名指向ipv6的ip地址

    ➜  ~ dig www.taobao.com
    
    ; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7 <<>> www.taobao.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 760
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0
    
    ;; QUESTION SECTION:
    ;www.taobao.com.                        IN      A
    
    ;; ANSWER SECTION:
    www.taobao.com.         75      IN      CNAME   www.taobao.com.danuoyi.tbcache.com.
    www.taobao.com.danuoyi.tbcache.com. 60 IN A     47.246.16.234
    www.taobao.com.danuoyi.tbcache.com. 60 IN A     47.246.16.233
    
    ;; Query time: 1 msec
    ;; SERVER: 183.60.82.98#53(183.60.82.98)
    ;; WHEN: Mon Dec 06 14:42:13 CST 2021
    ;; MSG SIZE  rcvd: 109
    

    接着trace路径

    D:\>tracert -h 100 -4 www.taobao.com
    
    Tracing route to www.taobao.com.danuoyi.tbcache.com [14.215.57.233] # 解析转移到www.taobao.com.danuoyi.tbcache.com这个别名,说明www.taobao.com.danuoyi.tbcache.com还存在其他ip
    over a maximum of 100 hops:
    
      1     *        *        *     Request timed out.
      2     2 ms     1 ms     1 ms  172.17.1.137
      3     2 ms     1 ms     1 ms  10.0.16.1
      4     1 ms     1 ms     1 ms  172.17.140.109
      5     2 ms     1 ms     1 ms  172.17.140.210
      6     1 ms    <1 ms    <1 ms  172.17.1.1
      7     1 ms     1 ms     1 ms  10.10.10.1
      8     1 ms     *        *     172.16.1.2
      9     4 ms     3 ms     3 ms  172.16.1.244
     10     2 ms     4 ms     2 ms  172.16.3.1
     11     *        5 ms     4 ms  172.16.3.12
     12     3 ms     2 ms     2 ms  172.16.1.253
     13     *        *        *     Request timed out.
     14     5 ms     5 ms     5 ms  202.104.167.225
     15     8 ms     *       11 ms  125.176.37.59.broad.dg.gd.dynamic.163data.com.cn [59.37.176.125]
     16     6 ms     5 ms     5 ms  113.98.6.57
     17    33 ms     8 ms     8 ms  113.108.208.26
     18    10 ms    10 ms     9 ms  94.96.135.219.broad.fs.gd.dynamic.163data.com.cn [219.135.96.94]
     19    11 ms    11 ms    11 ms  14.215.32.178
     20     7 ms     8 ms     7 ms  14.215.57.233
    

    相关文章

      网友评论

          本文标题:浏览器一次完整的请求过程

          本文链接:https://www.haomeiwen.com/subject/elvtfrtx.html