分析完整的一个请求过程(从浏览器输入域名到页面展示背后的事情)
DNS域名解析
先找本地hosts文件,检查对应域名ip的关系,有则想ip地址发送请求,没有再去找DNS服务器
- 建立TCP连接
拿到服务器IP后,向服务器发送求求,三次握手,建立TCP连接
简单理解三次握手:
客户端:您好,在家不,有你快递
服务端:在的,送来吧
客户端:好滴,来了 - 发送HTTP请求
与服务器建立连接后,就可以向服务器发起请求了。具体请求内容可以在浏览器中查看 - 服务器处理请求
服务器收到请求后由web服务器(Apache,Nginx)处理请求,web服务器解析用户请求,知道了需要调用那些资源文件,再通过相应的这些资源文件处理用户请求和参数,并调用数据库等,然后将结果通过web服务器返回给浏览器 - 返回响应结果
在响应结果中都会有一个HTTP状态码,诸如我们熟知的200、404、500等
状态码都是由三位数字和原因短语组成,大致为五类:
1XX 信息性状态码 接收的请求正在处理
2XX 成功状态码 请求正常处理完毕
3XX 重定向状态码 需要附加操作以完成请求
4XX 客户端错误状态码 服务器也无法处理的请求
5XX 服务器错误状态码 服务器请求处理出错 - 关闭TCP连接
为了避免服务器与客户端双方资源占用和消耗,当双方没有请求或者响应传递时,任意一方都可以发起关闭请求,与创建TCP连接的三次握手类似,关闭TCP连接需要4次挥手
简单比喻为:
客户端:哥们,我这边没有数据要传了,咱们关闭连接吧
服务端:好的,我看看我这边还有数据不
服务端:兄弟,我这边也没数据要传给你了,咱们可以关闭连接了
客户端:好嘞 - 浏览器解析HTML
- 浏览器布局渲染