当前位置: 首页 > news >正文

Python Web开发——HTTP协议简介

什么是 HTTP 协议?

​HTTP​​ 的全称是 ​​超文本传输协议​​。它是一种用于分布式、协作式和超媒体信息系统的​​应用层​​协议。简单来说,HTTP 是万维网(WWW)的数据通信基础,它定义了客户端(例如 Web 浏览器)和服务器之间请求和响应的格式与规则。

没有 HTTP,我们就无法通过点击链接或输入网址来浏览网页。

核心特点

  1. ​客户端-服务器模型​​:通信由客户端(请求方)发起,服务器(提供方)响应。

  2. ​无状态​​:HTTP 协议本身不会保留之前每次通信的状态。这意味着每个请求都是独立的,服务器不会记住之前的请求。(为了实现状态保持,我们使用 Cookie 和 Session 等技术)。

  3. ​简单快速​​:HTTP 协议简单,使得 HTTP 服务器的程序规模小,因而通信速度很快。

  4. ​灵活​​:HTTP 允许传输任意类型的数据对象(如文本、图片、音频、视频),并由 Content-Type标头进行标识。

HTTP 的工作原理:请求与响应

一次完整的 HTTP 通信过程通常包括以下步骤:

  1. ​建立 TCP 连接​​:客户端(浏览器)首先与服务器在特定端口(默认是 80)建立一个 TCP 连接。

  2. ​发送 HTTP 请求​​:客户端向服务器发送一个请求报文。

  3. ​服务器处理请求​​:服务器收到请求后进行处理。

  4. ​返回 HTTP 响应​​:服务器将处理结果封装成一个响应报文返回给客户端。

  5. ​关闭 TCP 连接​​:一旦响应送达,连接通常会被关闭(在 HTTP/1.1 中,连接可能被保持以供复用)。

  6. ​客户端解析渲染​​:客户端(浏览器)解析响应内容,并将网页呈现给用户。

HTTP 报文结构

1. HTTP 请求报文

一个 HTTP 请求由以下部分组成:

  • ​请求行​​:包含请求方法(如 GET、POST)、请求的 URL 和 HTTP 版本。

    • 示例:GET /index.html HTTP/1.1

  • ​请求头​​:包含关于请求的附加信息,以键值对的形式出现。

    • 常见标头:Host(目标主机)、User-Agent(客户端信息)、Accept(客户端能接收的内容类型)。

  • ​空行​​:分隔头部和主体。

  • ​请求体​​:可选部分,主要用于 POST、PUT 等方法,包含要发送给服务器的数据(如表单数据)。

​示例:​

2. HTTP 响应报文

一个 HTTP 响应由以下部分组成:

  • ​状态行​​:包含 HTTP 版本、状态码和状态描述。

    • 示例:HTTP/1.1 200 OK

  • ​响应头​​:包含关于响应的元信息。

    • 常见标头:Content-Type(响应体的类型)、Content-Length(响应体的长度)、Set-Cookie(设置 Cookie)。

  • ​空行​​:分隔头部和主体。

  • ​响应体​​:服务器返回给客户端的实际数据(如 HTML 页面、图片等)。

​示例:​


常见的 HTTP 请求方法

方法

描述

​GET​

请求指定的资源。只用于获取数据,不应有副作用。

​POST​

向服务器提交数据(例如提交表单或上传文件)。数据包含在请求体中。

​PUT​

用请求有效负载替换目标资源的所有当前表示。

​DELETE​

删除指定的资源。

​HEAD​

与 GET 相同,但服务器只返回状态行和头部分,不返回实体主体。用于检查资源是否存在。

重要的 HTTP 状态码

状态码用于表示请求的处理结果,分为五类:

分类

描述

常见状态码

​1xx​

信息性

100(继续)

​2xx​

成功

​200(OK)​​, 201(已创建)

​3xx​

重定向

​301(永久移动)​​, ​​302(临时移动)​​, 304(未修改)

​4xx​

客户端错误

​404(未找到)​​, ​​403(禁止访问)​​, 400(错误请求)

​5xx​

服务器错误

​500(内部服务器错误)​​, 502(错误网关)

HTTP 的发展:从 HTTP/1.1 到 HTTP/3

  • ​HTTP/1.0​​:每个请求/响应都需要建立一个新的 TCP 连接,效率低下。

  • ​HTTP/1.1(最广泛使用的版本)​​:

    • ​持久连接​​:默认保持 TCP 连接打开,允许多个请求/响应通过同一个连接发送。

    • ​管道化​​:允许客户端在收到上一个响应之前发送下一个请求(但存在队头阻塞问题)。

    • ​主机头​​:支持虚拟主机(一个服务器托管多个网站)。

  • ​HTTP/2​​:

    • ​二进制协议​​:不再使用纯文本,解析更高效。

    • ​多路复用​​:在同一个连接上同时进行多个请求和响应,彻底解决了 HTTP/1.1 的队头阻塞问题。

    • ​头部压缩​​:减小开销。

    • ​服务器推送​​:服务器可以主动将资源推送给客户端。

  • ​HTTP/3​​:

    • 将底层传输协议从 ​​TCP​​ 改为基于 UDP 的 ​​QUIC​​ 协议。

    • 解决了 TCP 连接建立的延迟和队头阻塞问题(在传输层),连接迁移能力更强。

总结

HTTP 是互联网应用最广泛的协议,是 Web 浏览的基石。它通过简单的​​请求-响应​​模型,实现了客户端与服务器之间的高效通信。从无状态的 HTTP/1.1 到高性能的 HTTP/2 和革命性的 HTTP/3,其演进始终围绕着提升速度、安全性和用户体验。要深入了解 Web 开发,掌握 HTTP 是必不可少的第一步。

http://www.dtcms.com/a/477669.html

相关文章:

  • 病理切片可解释性分析-细胞类型、核形态与细胞间相互作用
  • 【C语言】杨辉三角:数学之美与编程实现的完美结合
  • 盐城网站建设策划方案杭州企业求网站建设
  • 基于.NET Framework 4.0的串口通信
  • Mybatis Log Free插件使用
  • asp网站可运行jsp吗专做立体化的网站
  • angie未生成coredump文件
  • 【leetcode刷题007】leetcode116、117
  • 南昌网站推广¥做下拉去118cr如何做实验室网站
  • 从0开始搭建Vue3项目
  • 【知识】Linux将多条指令合并为一条执行
  • 将 MapReduce 程序打成 JAR 包并在 Linux 虚拟机的 Hadoop 集群上运行
  • 06_Miniconda零基础安装配置指南:打造高效的Python开发环境
  • 量子计算与AI融合:材料科学新突破!!
  • 徐州网站建设方案咨询外贸牛
  • 顶级 AI 模型横评:智能、性能与价格等方面全面对比
  • Vuex 详细用法(Vue2 和 Vue3)
  • 注册公司网站如何注册黑龙江公共资源交易网官网
  • 如何将iPhone上的HEIF图像下载到电脑
  • 欧洲宇航局使用Varjo XR头戴设备为宇航员提供虚拟现实空间站任务训练
  • iphone IOS3~IOS9游戏 旧iphone 单机游戏合集分享
  • 昂瑞微冲刺科创板:硬科技与资本市场的双向奔赴
  • 从入门到精通【Redis】Redis 典型应⽤ --- 缓存 (cache)
  • 【深入理解计算机网络10】UDP协议详解
  • 宁波网站建设模板制作什么叫优化
  • 自动裁剪图(电商使用)
  • 大模型应用开发
  • 第15题 三数之和
  • 【1015】计算并联电阻的阻值
  • 红黑树实现与原理剖析(上篇):核心规则与插入平衡逻辑