zoukankan      html  css  js  c++  java
  • 用户在浏览器输入URL或者跳转到一个URL后发生了什么

    一、从URL到页面渲染的整个过程
    1)处理用户输入
    2)开始导航
    3)读取响应
    4)查找渲染进程
    5)确认导航
    6)渲染页面

    二、每一步做了哪些事情

    1)处理用户的输入

    浏览器的UI 线程处理用户的输入,判断是跳转过来的还是用户自己的输入。

    判断依据是请求报文中referer这个参数,值是NUll,用户自己手动输入

    2)开始导航

    用户敲了回车之后,监听用户行为的UI线程告诉network线程去获取网页;同时自己进入loading状态。

    network线程如何获取网页资源的呢?

    2.1)dns域名解析

    2.1.1)什么是dns域名解析?怎么进行的域名解析呢?
    因为网络通信是基于tcp/IP的,tcp/ip是基于IP地址的,所以对于域名是无法识别的,人们对于超过10位的IP地址记忆起来又有难度,所以就出现了域名;主机上用户配置了域名对应的子目录,当访问对应的域名时,就可以通过解析访问到对应子目录中的文件。


    2.1.2)域名解析:

      每个PC端或者手机端都是一个DNS客户端。

        浏览器将URL中的域名提取出来给DNS客户端;

        dns客户端向DNS服务器发起请求报文,报文中包含URL给的主机名;通过一系列的缓存查询和分布式DNS集群查询;

        dns客户端收到响应报文,里边包含主机名对应的IP地址;

        浏览器获取到IP地址,就可以向IP地址所在的Http服务器发送http请求了。

    2.1.3)建立http连接

       安全的数据传输必须建立tls连接,经过三次握手完成该项工作。

    2.1.4)发起http请求

    3)读取响应

    当请求响应返回的时候,network 线程会依据 Content-Type 及 MIME Type sniffing 判断响应内容的格式;

    常见的有text/html,text/css,text/javascript,image/gif,image/png,等等;

    HTML格式文件的处理network线程通知UI线程完成资源获取,UI线程会寻找渲染进程;

    其他格式的文件都交给下载管理器来做了,恶意站点和敏感字段的检查也会在该阶段完成。

    4)寻找渲染进程,确认导航

    network thread 确信浏览器可以导航到请求网页,network thread 会通知 UI thread 数据已经准备好,UI thread 会查找到一个 renderer process 进行网页的渲染。

    当 UI 线程发送 URL 请求给 network 线程时,浏览器其实已经知道了将要导航到那个站点。UI thread 会并行的预先查找和启动一个渲染进程,如果一切正常,当 network thread 接收到数据时,渲染进程已经准备就绪了,但是如果遇到重定向,准备好的渲染进程也许就不可用了,这时候就需要重启一个新的渲染进程。

    Browser Process 会给 renderer process 发送 IPC 消息来确认导航,一旦 Browser Process 收到 renderer process 的渲染确认消息,导航过程结束,页面加载过程开始。

    5)页面渲染

    经典的渲染过程

  • 相关阅读:
    3月14日进度博客
    构建之法阅读笔记01
    课堂练习-全国疫情统计3
    课堂练习-全球疫情统计2
    课堂练习-全国疫情统计1
    跟我一起写 Makefile(五)
    跟我一起写 Makefile(四)
    跟我一起写 Makefile(三)
    跟我一起写 Makefile(二)
    跟我一起写 Makefile(一)
  • 原文地址:https://www.cnblogs.com/dabai-wang09/p/11458402.html
Copyright © 2011-2022 走看看