1、打开客户端提交过来的包,拿到包里面的请求路径2、根据请求的路径对应文件的扩展名找到文件的MIME Type3、判断文件类型是否为静态文件4、如果是静态文件,则直接读取这个文件的内容5、如果不是静态文件,就交给“外包公司”(交给PHP)6、服务端会把要发给客户端的数据打上一个“包”7、将这个“包”通过之前的连接通道发回给客户端
DNS系统调用1、检查操作系统缓存有没有这个域名2、找系统的hosts文件中有没有这个域名3、如果都没找到,会对DNS服务器发起一个系统调用
总结:(服务端)先打开客户端提交过来的”包“,拿到”包“里面的路径,有这个路径才能去找到本地磁盘上对应的文件,找到文件后,看文件的类型,找到类型后再去判断它是否为静态文件,如果是静态文件,就直接读取文件内容,如果不是则交给PHP这个”外包公司“去工作,它执行完了会得到一个结果Web Server一句话总结做的事情:收到一个”包“,返回一个”包“,当然不是相同的”包“
80端口
1、用户在浏览器中输入URL地址2、浏览器解析用户输入的URL地址 => 域名 + 端口3、浏览器会先检查本地缓存中有没有这个域名 => IP(从缓存中找到的IP)4、浏览器发起一个DNS系统调用 => IP(在DNS服务器中找到的IP)5、浏览器会通过一个本地的随机端口建立一个与服务端指定端口之间的连接通道6、浏览器会将客户端的一些信息打上一个“包”(请求体)7、将这个“包”通过这个连接通道发送到服务端8、打开服务端返回过来的”包“(解包),找到Content-Type9、根据Content-Type决定如何处理响应内容10、如果是HTML,则渲染到界面上
1.html静态文件
1、读取2.php文件中的代码2、执行代码3、将执行结果返回给Web Server(Apache)
浏览器
找github.com域名的IP
返回给5
IP:52.74.223.119:443
DocumentRoot
”包“(响应报文)
“包”
PHP
目的:找到对应域名的IP 会告诉操作系统,我不知道github.com域在什么地方,但是我知道com域,你去找com域,在com域中找到github,然后再返回github.com的IP (举例:www.baidu.com,顶级域为com,下面有baidu,再下面有www,找了三层服务器。域越深DNS的过程越长,用的时间越长,因为相当于要多走一道服务器)
DNS服务器
Web Server(Apache)
“包”(请求报文)
服务器
用户的操作系统
2.php动态文件
随机端口