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

HTTP常见状态码 HTTP的逐步发展(通熟易懂版)

HTTP常见状态码 

HTTP 状态码是服务器返回的响应结果的一个数字标志,用于告诉客户端(例如浏览器)请求的处理情况。为了方便记忆,我们可以简单地分成几类并用通俗的方式来理解:

1. 2xx 成功类:请求成功,事情办妥了。

200 OK:请求成功,服务器返回正常响应。就像你点了一份餐,服务员端上了餐,并且一切都正常。

201 Created:资源被成功创建了。比如你在某个平台上传了一张图片,服务器返回201表示图片已经上传并保存成功。

204 No Content:请求成功,但没有任何数据返回。就像你请求了服务,但服务员只是点了点头,没有给你任何东西。

2. 3xx 重定向类:需要进行进一步的操作。

301 Moved Permanently:资源永久搬家了。就像你去了一家老店,服务员告诉你这家店已经搬到新地址了,而且以后都在新地址营业。

302 Found:临时搬家了。和301类似,不过只是暂时性的,资源可能很快又会回到原来的地方。

304 Not Modified:资源没有更新。比如你已经缓存了这个网页,服务器告诉你“别重复下载了,之前那个版本没变”。

3. 4xx 客户端错误类:你的请求有问题。

400 Bad Request:请求有误,服务器不知道该怎么处理。就像你给服务员递上了一份乱七八糟的菜单,服务员看不懂。

401 Unauthorized:未经授权,必须登录后才能访问。相当于你想进入一个VIP房间,但你没有VIP卡,需要先验证身份。

403 Forbidden:禁止访问。即使你登录了,服务器还是不让你看某些内容,类似于一个禁区,你就是不能进去。

404 Not Found:资源未找到。就像你去了一家店点餐,结果服务员说这个餐品已经下架了,不在菜单上。

405 Method Not Allowed:方法不允许。你发的请求方式(比如POST或GET)不对,服务器不支持这种方式。就像你点餐的方式不符合店里的规矩。

5. 5xx 服务器错误类:服务器这边出问题了。

500 Internal Server Error:服务器内部错误。就像餐馆的厨房出了问题,服务员也不知道到底哪里出错了。

502 Bad Gateway:网关错误。服务器作为中间人,试图从另一个服务器获取信息,但那个服务器返回了错误信息。相当于服务员去厨房拿餐,却发现厨房那边出问题了。

503 Service Unavailable:服务暂时不可用。就像你去餐馆点餐,结果服务员告诉你他们今天太忙了,暂时无法提供服务。

简单记忆小技巧:

1xx:服务器告诉客户端“稍等,我正在处理”。

2xx:都表示成功(事情办妥了)。

3xx:意味着要去其他地方找(搬家、重定向)。

4xx:客户端错误(你的请求有问题)。

5xx:服务器错误(他们那边的问题)。

HTTP协议发展

(1)HTTP 1.0

短连接,每次请求都会创建一个新的 TCP 连接,请求完成后立即关闭。这导致了大量的连接建立和断开,性能较差。

(2)HTTP 1.1

  • 支持持久连接,多个请求可以复用一个 TCP 连接,减少了频繁建立和关闭连接的开销。并且支持分块传输(对大文件传输有利)
  • 但请求和响应仍是串行处理,一个请求完成后才能发送下一个请求,这导致了“队头阻塞”问题(即前面的请求阻塞后面的请求)。

(3)HTTP 2.0

  • 使用二进制传输,使得解析更高效,也减少了协议层的歧义。
  • 支持多路复用:同一个 TCP 连接可以承载多个请求和响应,互不干扰。多个请求和响应可以同时发送和接收,解决了 HTTP/1.1 中的“队头阻塞”问题。
  • 头部压缩:对 HTTP 头部进行压缩,减少了冗长的头部信息带来的开销,尤其是对于重复的头部字段。
  • 服务器推送:服务器可以主动将客户端可能需要的资源推送给客户端
  • 仍然依赖TCP协议,TCP 的慢启动、丢包重传等问题会影响整体性能。

(4)HTTP 3.0

  • 基于 QUIC 协议(由 UDP 构建的新的传输层协议),可以提供更低的延迟和更好的性能,尤其是在网络状况不佳的情况下。
  • 内置加密:QUIC 默认采用 TLS 1.3 加密,所有传输都是加密的,不再需要单独配置 HTTPS。
  • 快速连接恢复:QUIC 可以在丢包时迅速恢复,而不需要像 TCP 那样进行复杂的重传机制。

总结:HTTP协议的发展从以下几个方面优化,二进制传输、头部压缩、多路复用、服务器推送、协议转换、自动加密。

HTTP/1.0:每个请求都要建立新的连接,性能较差。

HTTP/1.1:支持持久连接,但没有解决多路复用问题。

HTTP/2.0:通过多路复用、头部压缩(重复的部分省略)、服务器推送等特性,显著提高了性能,但仍依赖 TCP。

HTTP/3.0:基于 QUIC 协议,解决了 TCP 的局限性,提供了更快、更安全的传输。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • linux-Linux 内核与模块管理-内核基础
  • 资源创建方式
  • 从零开始讲DDR(0)——DDR的前世今生
  • 《使用 LangChain 进行大模型应用开发》学习笔记(四)
  • 1.pytest基础知识(默认的测试用例的规则以及基础应用)
  • Navicat 17 新特性 | 聚焦 MongoDB
  • 北森笔试测评之言语理解到底难不难
  • LabVIEW机动车动态制动性能校准系统
  • 【运维监控】Prometheus+grafana监控flink运行情况
  • 【ComfyUI】自定义节点ComfyUI-Impact-Pack——人脸、手部、肢体修复
  • Linux常用命令(四)
  • kubernetes架构
  • YOLOv9改进策略【SPPF】| SimSPPF,简化设计,提高计算效率
  • 【每日刷题】Day125
  • 基于SpringBoot+Vue+MySQL的考研互助交流平台
  • HTTP中的ETag在移动客户端的应用
  • java中具有继承关系的类及其对象初始化顺序
  • JS笔记四:作用域、变量(函数)提升
  • js面向对象
  • JS数组方法汇总
  • JS题目及答案整理
  • mysql 数据库四种事务隔离级别
  • Promise初体验
  • Python利用正则抓取网页内容保存到本地
  • Python爬虫--- 1.3 BS4库的解析器
  • React组件设计模式(一)
  • yii2中session跨域名的问题
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 容器服务kubernetes弹性伸缩高级用法
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 手写双向链表LinkedList的几个常用功能
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 在Mac OS X上安装 Ruby运行环境
  • 回归生活:清理微信公众号
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​字​节​一​面​
  • # linux 中使用 visudo 命令,怎么保存退出?
  • # Redis 入门到精通(七)-- redis 删除策略
  • ### RabbitMQ五种工作模式:
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • $L^p$ 调和函数恒为零
  • (07)Hive——窗口函数详解
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (二)斐波那契Fabonacci函数
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (三) diretfbrc详解
  • (十二)Flink Table API
  • (算法)Game
  • (一)Linux+Windows下安装ffmpeg
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转)Linq学习笔记