1. 点击 URL:news.qq.com
2. DNS解析:news.qq.com > 58.250.137.36
- 计算机只能识别IP地址对应的数字
- 一个域名可能会对应多个IP地址
- 一个IP地址也可能对应多个域名
3. 客户端与服务器建立TCP连接(三次握手)
- client > SYN(是TCP/IP建立连接时使用的握手信号) > server
- client < ACK(确认) + SYN < server
- client > ACK > server
4. 客户端封装“请求报文”
5. 发送“请求报文”
6. HTTP Server 接收“请求报文”
7. WSGI 进行协议解析, 将“请求报文”封装成 HttpRequest
----------------------------------------------process_request
8. URL 映射:url > view_func
----------------------------------------------process_view
9. 执行 view_func
- q取出参数
- 调用内部逻辑
- 缓存、数据库处理
----------------------------------------------process_template - 模板渲染
- 封装HttpResponse 对象
----------------------------------------------process_exception
----------------------------------------------process_response
10. WSGI 再次进行协议解析,将HttpRequest 对象封装成“响应报文”
11. HTTP Server 将“响应报文”发送给客户端
12. HTTP Server 关闭TCP连接
- client < FIN < server
- client > ACK > server
- 等待数据接收完成
- client > FIN > server
- client < ACK < server