URL解析到网页渲染全过程

Posted by Leon Ling on October 9, 2019

[toc]

1. URL

URL统一资源定位符,用于互联网上不同的资源的标识,就像不同的人有不同的身份证一样。

2. URL的组成

  1. 协议
  2. 域名 (也可以是ip)
  3. 端口号(数字表示,若为HTTP的默认值“:80”可省略)
  4. 路径(以“/”字符区别路径中的每一个目录名称)
  5. 查询(GET模式的窗体参数,以“?”字符为起点,每个参数以“&”隔开,再以“=”分开参数名称与数据,通常以UTF8的URL编码,避开字符冲突的问题)

3. 在浏览器输入url后

3.1 域名解析

浏览器会把输入的域名解析成对应的ip,解析分为几部分进行。

  1. 查看浏览器内部缓存,如果查到域名对应的ip,就发送和接受参数和数据
  2. 查看本机的host文件,浏览器会在本机的hosts文件查看是否有对应的ip服务器地址。
  3. 查看本地路由器的DNS缓存,找到对应的ip
  4. 查看网络服务商中DNS服务器
  5. 查询根域名下是否存在。上述5步找到对应的ip地址后

3.2 建立连接&请求数据

  1. 询到目标IP地址后,则开始建立 TCP 三次握手 ,与目标服务器建立连接。
  2. 通过规定的协议(http)向目标主机发送请求

3.3 服务器接收到请求和返回数据

服务器:安装了系统和web-server的主机,可以理解为一台电脑,安装了系统和软件来处理数据(硬件)

  1. 服务器接收到了浏览器发送的请求后,根据某个协议,通过web-server把浏览器发送的数据进行打包(包含请求头,ip地址,请求路径和查询参数等)
  2. web-server把数据打包后,发送给网站代码(比如django、flask、node.js等后端服务)
  3. 后端服务软件会根据路径和查询参数进行相应处理,返回给浏览器对应的数据包(包括http协议组成的代码。里面包含页面的布局、文字。数据也可能是图片、脚本程序,反应头,反应数据,请求头等)

3.4 浏览器的接受数据和页面渲染

  1. 浏览器接收到返回的数据包,根据浏览器的渲染机制对相应的数据进行渲染。
  2. 渲染后的数据,进行相应的页面呈现和脚步的交互。

4. 解析服务器中网站代码处理处理的流程

主要是第三步到第七步解析(MVC模型)

  1. 用户的请求数据通过控制器交给模型来处理(图中的2)
  2. 模型根据用户的请求数据,在数据库中查询,调用相应的数据返回给控制器(图中的345)
  3. 控制器得到数据库返回数据后,交给视图模板填充形成页面的模板(页面基本的代码成型)
  4. 视图模板填充好后,把数据反馈给控制器
  5. 控制器将数据反馈给浏览器
  6. 浏览器得到数据后,进行相应的渲染,呈现给用户。