1.输入网址 www.php.net
http 默认访问的是80端口
https 默认访问的是443端口
2.DNS
1.在浏览器的缓存里查找
2.如果没有,就去查看hosts文件是否有对应的ip
3.如果hosts文件没有,就去查询本地DNS服务器
3.socket
找到域名对应的ip地址,开始三次握手,建立连接
4.浏览器发送请求
GET / HTTP/1.1
Host: php.net
[其他头部]
5.web服务器监听 端口(80或者其他)
1.web服务器根据浏览器发送的Request Header 看出缓存时间还没到 返回, 304 NOT Modified
2. 请求php-pfm,成功返回 200 ok
6.CGI
cgi : common gateway interface 公共网关接口 ,是一个web server(nginx,apache)与脚本语言的一个通信标准 ,是一个协议
fastcgi : 是cgi的升级版本,也是一个协议
php-cgi: 实现cgi的php脚本解析器,是一个程序
php-fpm: 是一个fastcig的进程管理器,是一个程序
7.php-fpm启动进程将请求的query,header,url,数据传递给php脚本,php脚本处理
8.如果需要数据,在请求mysql数据库,再把结果返回给php脚本
9.fastcig进程将标准输出和一些错误信息返回给web服务器
10.web服务器返回给浏览器,关闭socket连接
11.浏览器加载html->解析dom,css,js->渲染dom->绘制dom(绘制在浏览器上)
css ,解析css,产生规则树
js ,脚本解析
https://www.html5rocks.com/zh/tutorials/internals/howbrowserswork/
12.用户看到了浏览器绘制的结果。