图解HTTP:从输入网址到呈现
图解HTTP:从输入网址到呈现
欢迎访问我的博客,祝码农同胞们早日走上人生巅峰,迎娶白富美~~~
那首先上图,看下图参照下面的说明
说明:
下面以按具体流程讲解:
- 当用户需要请求
github.com
的时候,首先要打开浏览器,输入URL
地址,即输入github.com
- 浏览器发起 DNS 调用去解析
URL
中的域名字段:- 先检查本地缓存中有没有这个域名
- 如果有,浏览器将接收到的
URL
中抽取出域名字段,就是访问的主机名,比如https://github.com
,并将这个主机名传送给DNS
应用的客户端 - 如果没有查找系统
hosts
文件有没有这个域名,如果有,解析出IP
- 如果没有,
DNS
客户机端向DNS
服务器端发送一份查询报文,报文中包含着要访问的主机名字段 - 该
DNS
客户机最终会收到一份回答报文,其中包含有该主机名对应的IP
地址
- 一旦该浏览器收到来自
DNS
的IP
地址,就可以向该IP
地址定位的HTTP
服务器发起TCP
连接- 浏览器先通过本地随机端口去建立一个通向服务端的连接通道,此通道遵循
HTTP
协议 - 浏览器将客户端信息打“包”
- 将“包”通过连接通道发送到服务端
- 浏览器先通过本地随机端口去建立一个通向服务端的连接通道,此通道遵循
- 服务端接收并打开这个“包”,读取到里面的请求路径
- 根据文件请求路径找到
MIME-TYPE
,即获得了消息内容类型 - 判断这个文件是否为静态文件,如果是静态文件,自己处理,如果自己不能处理,交给自己服务中的其他“小弟们”处理
- 如果是静态文件,则读取静态文件内容,将内容返回给客户端
- 如果不是静态文件,则发送给“小弟”处理,这里假设
PHP
能处理,就按照PHP
的语法规则去处理并返回给服务端 - 服务端将处理好的数据以及其他一些内容,打“包”并通过之前建立的通道发送给客户端
- 客户端接收并打开这个服务端发送回来的“包”,找到其中的
Content-Type
- 根据
Content-Type
指定的编码格式(例如html,css,javascript等),决定怎么去处理这些文件或者渲染网页 - 假设是
HTML
,则直接渲染到网页结构上