一个完整的请求流程

Published on with 0 views and 0 comments

关于 HTTP 协议:

1. 浏览器往服务端发的叫 请求(request)
            请求的消息格式:
                请求方法 路径 HTTP/1.1\r\n
                k1:v1\r\n
                k2:v2\r\n
                \r\n
                请求数据                
        2. 服务端往浏览器发的叫 响应(response)
            响应的消息格式:
                HTTP/1.1 状态码 状态描述符\r\n
                k1:v1\r\n
                k2:v2\r\n
                \r\n
                响应正文   <-- html的内容

HTTP 请求响应步骤:

  1. 客户端连接到 Web 服务器
  2. 发送 http 请求
  3. 服务器接收请求并返回 http 响应
  4. 释放 tcp 连接
  5. 客户端浏览器解析 HTML 内容
  • 一个 HTTP 客户端,与 Web 服务器的 http 端口建立一个 TCP 套接字连接
  • 通过套接字,客户端向 Web 服务器发送一个文本的请求报文,一个请求报文由请求头部、空行和请求数据 4 部分组成
  • Web 服务器解析请求,定位请求资源。服务器将资源副本写到 TCP 套接字,由客户端读取。一个响应由状态行、响应头部、空行就鞥相应数据 4 部分组成。
  • 若 connection 模式为 close,则服务器主动关闭 TCP 连接,客户端被动关闭连接,释放 TCP 连接;若 connection 模式为 keeplive,则该链接会保持一段时间,该请求可以继续接受请求。
  • 客户端浏览器首先解析状态行,查看表明请求是否成功的状态码。然后解析每一个响应头,响应头告知一下为若干字节的 HTML 文档和文档的字符集。客户端浏览器读物相应数据的 HTML,根据 HTML 语法对其进行格式化,并在浏览器庄口中显示。

Python Web 框架的本质:

a. 收发socket消息    --> 按照HTTP协议消息格式去解析消息
    b. 路径和要执行的函数的对应关系   --> 主要的业务逻辑
    c. 字符串替换                     --> 模板(特殊符号 --> 数据)

一个完整得请求流程:

  1. 启动服务端,等待客户端(用户的浏览器)来连接
  2. 在浏览器地址栏输入 URL,与服务端建立连接,浏览器发送请求
  3. 服务端收到请求消息,解析请求消息,根据路径和函数的对应关系,找到将要执行的函数
  4. 执行函数,打开 HTML 文件,进行字符串替换,得到一个最终要返回的 HTML 内容
  5. 按照 HTTP 协议的消息格式要求,把 HTML 内容回复给用户浏览器(发送响应)
  6. 浏览器收到响应的消息之后,按照 HTML 的规则渲染页面.
  7. 关闭连接

标题:一个完整的请求流程
作者:cuijianzhe
地址:https://cuijianzhe.github.io/articles/2020/05/18/1589792456894.html