HTTP 协议是建立在 TCP 基础之上的短连接协议
WSGI: Web Server Gateway Interface
从点击一个 URL 开始,到最终页面显示,中间经历的全部过程
-
域名解析: example.com -> 11.22.33.44
-
浏览器封装 “请求报文”
-
浏览器与服务器建立 TCP 连接
三次握手:client -> SYN -> server
client <- ACK + SYN <- server
client -> ACK -> server
-
浏览器向服务器发送 “请求报文”
-
HTTP Server 接收 “请求报文”
-
WSGI 将 “请求报文” 解析成 HTTPRequest 对象
------------------------------------------------------> process_request -
路由管理模块进行 URL 匹配,得到对应的 View 函数
------------------------------------------------------> process_view -
执行 View 函数
|- 1. 提取参数
|- 2. 进行逻辑处理
|- 3. 进行数据处理
|- 4. 进行模板渲染
|- --------------------------------------------------> process_template
|- 5. 将处理结果封装成 HTTPResponse 对象
|
------------------------------------------------------> process_exception
----------------------------------------------------------> process_response
-
WSGI 将 HTTPResponse 对象封装成 “响应报文”
-
HTTP Server 将 “响应报文” 发送给浏览器
-
服务器断开与浏览器的 TCP 连接
四次挥手:server -> FIN -> client
server <- ACK <- client
数据传输等待中…server <- FIN <- client
server -> ACK -> client
-
浏览器接收 “响应报文”
-
浏览器解析 “响应报文”,并渲染成页面