HTTP请求处理过程(及中间件)

从点击一个 URL 开始,到最终页面显示出来,经过的全部流程:

  1. 点击 URL: http://abcde.com/xyz/kkk

  2. DNS 解析: abcde.com -> 11.22.33.44

  3. 客户端连接服务器,建立 TCP 网络连接

    • TCP: 全双工连接 (双向连接)
    • 三次握手:
      1. client -> SYN -> server
      2. client <- ACK + SYN <- server
      3. client -> ACK -> server
  4. 客户端构造 HTTP 的 “请求报文”

  5. 客户端向服务器发送 “请求报文”

  6. 服务器的 HTTP Server 接收 “请求报文”

  7. Django 通过 WSGI 接口将 “请求报文” 解析成 HttpRequest 请求对象

    • WSGI 全称: Web Server Gateway Interface
      --------------------------------------------------> process_request
  8. 进行 URL 映射: 通过 URL 找到对应的 View 函数
    --------------------------------------------------> process_view

  9. 执行 View 函数,得到一个 HttpResponse 对象

    • 获取 request 参数
    • 进行逻辑处理
    • 使用 MySQL、Cache 进行数据存取
    • 模板渲染
      --------------------------------------------> process_template
    • 封装 HttpResponse 对象,并返回
      --------------------------------------------> process_exception
      --------------------------------------------------> process_response
  10. WSGI 模块将 HttpResponse 对象封装成 “响应报文”

  11. HTTP Server 将 “响应报文” 发送给客户端

  12. HTTP Server 主动断开与客户端的 TCP 连接

    1. server -> FIN -> client
    2. server <- ACK <- client
      ----------------------> 给客户端接收数据预留一些时间
    3. server <- FIN <- client
    4. server -> ACK -> client
  13. 客户端接收 “响应报文”

  14. 客户端解析 “响应报文”

  15. 客户端进行页面渲染

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

͝͝͝͝͝͝͝͝͝͝L Y H

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值