[toc]
1. URL
URL统一资源定位符,用于互联网上不同的资源的标识,就像不同的人有不同的身份证一样。
2. URL的组成
- 协议
- 域名 (也可以是ip)
- 端口号(数字表示,若为HTTP的默认值“:80”可省略)
- 路径(以“/”字符区别路径中的每一个目录名称)
- 查询(GET模式的窗体参数,以“?”字符为起点,每个参数以“&”隔开,再以“=”分开参数名称与数据,通常以UTF8的URL编码,避开字符冲突的问题)
3. 在浏览器输入url后
3.1 域名解析
浏览器会把输入的域名解析成对应的ip,解析分为几部分进行。
- 查看浏览器内部缓存,如果查到域名对应的ip,就发送和接受参数和数据
- 查看本机的host文件,浏览器会在本机的hosts文件查看是否有对应的ip服务器地址。
- 查看本地路由器的DNS缓存,找到对应的ip
- 查看网络服务商中DNS服务器
- 查询根域名下是否存在。上述5步找到对应的ip地址后
3.2 建立连接&请求数据
- 询到目标IP地址后,则开始建立 TCP 三次握手 ,与目标服务器建立连接。
- 通过规定的协议(http)向目标主机发送请求
3.3 服务器接收到请求和返回数据
服务器:安装了系统和web-server的主机,可以理解为一台电脑,安装了系统和软件来处理数据(硬件)
- 服务器接收到了浏览器发送的请求后,根据某个协议,通过web-server把浏览器发送的数据进行打包(包含请求头,ip地址,请求路径和查询参数等)
- web-server把数据打包后,发送给网站代码(比如django、flask、node.js等后端服务)
- 后端服务软件会根据路径和查询参数进行相应处理,返回给浏览器对应的数据包(包括http协议组成的代码。里面包含页面的布局、文字。数据也可能是图片、脚本程序,反应头,反应数据,请求头等)
3.4 浏览器的接受数据和页面渲染
- 浏览器接收到返回的数据包,根据浏览器的渲染机制对相应的数据进行渲染。
- 渲染后的数据,进行相应的页面呈现和脚步的交互。
4. 解析服务器中网站代码处理处理的流程
主要是第三步到第七步解析(MVC模型)
- 用户的请求数据通过控制器交给模型来处理(图中的2)
- 模型根据用户的请求数据,在数据库中查询,调用相应的数据返回给控制器(图中的345)
- 控制器得到数据库返回数据后,交给视图模板填充形成页面的模板(页面基本的代码成型)
- 视图模板填充好后,把数据反馈给控制器
- 控制器将数据反馈给浏览器
- 浏览器得到数据后,进行相应的渲染,呈现给用户。