分析完整的一个请求过程(从浏览器输入域名到页面展示背后的事情)

        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
  • 浏览器布局渲染
原文地址:https://www.cnblogs.com/gaosf/p/9914183.html