http协议中各个网段含义

Informational(信息性)------"请稍等,我还没完呢"

只有协议交互用,浏览器层面基本看不到。

1. 100 Continue

场景:客户端准备在 POST/PUT 里扔几百 KB 甚至几十 MB 的表单或文件,怕一发过去就被拒,浪费流量。

流程:

① 客户端先发一个带 Expect: 100-continue 的请求头,只传请求头,不传正文。

② 服务器若愿意收,就回 100 Continue(不带头体)。

③ 客户端收到 100,才继续把大块数据发完;如果服务器直接回 4xx/5xx,客户端就中止,省掉上传流量。

日常现象:浏览器里看不到 100,它发生在后台;用 curl、Postman、OSS/MinIO 上传大文件时最常见。

注意:部分老服务器(lighttpd 1.4、早期 Resin)不认这个头,会扔 417 Expectation Failed,此时客户端要关掉 Expect。

2. 101 Switching Protocols(ws 升级)

场景:HTTP 只负责握个手,真正想"打电话"得换成 WebSocket、HTTP/2、QUIC 等"长连接"协议。

流程:

① 客户端发 Upgrade: websocket + Connection: Upgrade 等头。

② 服务器同意,回 101,并在响应头里带上同样的 Upgrade: websocket。

③ 空行结束后,双方立即改用 WebSocket 帧格式通信,后面再没 HTTP 什么事了。

日常现象:浏览器控制台 Network 标签里,第一条请求状态码是 101,后面全是 ws 帧;聊天室、在线游戏、股票推送都用它。

注意:如果代理/防火墙把 Upgrade 头剥掉,101 就不会出现,WebSocket 会直接连不上。

Success(成功)------"一切 OK,你要的东西在包里"

200 OK 常规成功

201 Created 已新建(POST 后常用)

场景:POST 上传资源、PUT 新建文件、调用 RESTful 接口"新增用户/订单/文章"成功。

特点:服务器必须在响应头里给 Location: 新资源的完整 URL,告诉客户端"东西我帮你存好了,以后就来这儿取"。

日常现象:调后端 API 返回 201 + Location,前端一般弹"新建成功",并跳转到刚创建的详情页

204 No Content 成功但无返回体(DELETE/OPTIONS 常用)

场景:服务器成功执行了删除、保存、设置操作,但没必要再回任何数据。

特点:响应头可以带更新后的元信息(ETag、Last-Modified),但实体体必须为空。

日常现象:

前端发 DELETE /api/user/123 后收到 204,页面列表直接把那条记录移除即可,无需再解析响应体。

表单保存后服务器回 204,页面不刷新,用户继续留在当前视图

Redirection(重定向)------"东西不在我这,去别处拿"

301 Moved Permanently

永久搬家。浏览器收到后会缓存这个重定向,下次访问原 URI 直接跳新地址,SEO 权重也会转移。

302 Found(原叫 Moved Temporarily)

临时搬家。下次访问还会先问原地址,适合登录跳转、推广活码等场景。

303 See Other

强制客户端用 GET 方法去 Location 拿结果,常用于 POST 表单后"转回列表页",防止刷新时重复提交。

304 Not Modified

资源内容没动,你本地缓存还能继续用。服务器只回响应头,不回包体,省流量。触发条件是客户端带的 If-Modified-Since/If-None-Match 与服务端比对一致

|-----|----------------------------|-------------------------------------|
| 码 | 英文短语 | 一句话记忆 |
| 301 | Moved Permanently | 永久搬家,搜索引擎把权重带走 |
| 302 | Found(原 Moved Temporarily) | 临时搬家,下次还来原地址问 |
| 303 | See Other | 用 GET 去另一个地址拿(POST-redirect-GET 模式) |
| 304 | Not Modified | 你缓存还有效,继续用,省流量 |
| 307 | Temporary Redirect | 302 的"严格版",禁止把 POST 变成 GET |
| 308 | Permanent Redirect | 301 的"严格版",同样禁止改方法 |

Client Error(客户端错)------"你自己搞错了"

|------------------------|----------------------|
| 码 | 一句话记忆 |
| 400 Bad Request | 语法/参数不对 |
| 401 Unauthorized | 没登录,先交凭证 |
| 403 Forbidden | 登录了也没权限 |
| 404 Not Found | 地址写错或资源被删 |
| 405 Method Not Allowed | 该接口不支持你用的 GET/POST 等 |
| 408 Request Timeout | 你发得太慢,服务器不等了 |
| 429 Too Many Requests | 调用太频繁,被限流 |

Server Error(服务端错)------"我这边挂了"

500 Internal Server Error

万能"背锅码":业务代码抛异常、配置错误、空指针、数据库连不上......服务器只能说"我内部错了",具体原因得看日志。

502 Bad Gateway

网关/反向代理(Nginx、CDN、ELB)自己工作正常,但从上游(后端、PHP-FPM、Tomcat)拿到无效或过早断开的响应,于是报 502。

503 Service Unavailable

服务器暂时不能处理,可能在维护、重启、限流、过载。响应头里通常带 Retry-After: 秒数,告诉客户端多久后再试。

504 Gateway Timeout

代理在限定时间内没等到上游回包,比 502 更"拖":连得上,但上游慢到超时。

|---------------------------|----------------|
| 码 | 一句话记忆 |
| 500 Internal Server Error | 通用"锅"码,后端代码崩了 |
| 502 Bad Gateway | 代理/网关从上游拿到无效响应 |
| 503 Service Unavailable | 服务器在维护或超载,稍后再试 |
| 504 Gateway Timeout | 代理等上游响应超时 |

上游的介绍

在技术栈里,"上游"(upstream)就是 Nginx、CDN、负载均衡器、API 网关这类"前台"背后,真正生成内容的那一组服务器。常见组合举例:

LNMP 架构

用户 → Nginx(前台) → php-fpm 进程池(上游) → 返回 HTML

Java 传统架构

用户 → Nginx → Tomcat/Jetty(上游) → 返回 JSON/HTML

微服务网关

用户 → Kong/Gateway → 订单服务 Pod、用户服务 Pod(上游) → 返回业务数据

CDN 场景

用户 → Cloudflare CDN → 源站 ECS(上游) → 回源拉取静态文件

因此,"上游"不是一个神秘新硬件,就是泛指"代理节点背后,真正处理请求的后端服务/容器/进程"。

相关推荐
sweet丶3 小时前
DNS安全威胁:从劫持、污染到放大攻击的演练
网络协议·安全
传感器与混合集成电路3 小时前
175℃持续工作:专为随钻测量系统设计的高温AC-DC电源
网络·能源
日更嵌入式的打工仔3 小时前
Ehercat代码解析中文摘录<1>
网络·笔记·ethercat
一只鹿鹿鹿3 小时前
网络信息与数据安全建设方案
大数据·运维·开发语言·网络·mysql
航Hang*4 小时前
第五章:网络系统建设与运维(中级)——生成树协议
运维·服务器·网络·笔记·华为·ensp
小南知更鸟4 小时前
前端静态项目快速启动:python -m http.server 4173 与 npx serve . 全解析
前端·python·http
科技块儿5 小时前
电商风控实战:如何利用访客IP防控有效识别刷d行为?
大数据·网络协议·tcp/ip
@淡 定5 小时前
DDD领域事件详解:抽奖系统实战
开发语言·javascript·网络
陌路205 小时前
简写网络库(2)--封装socket类
linux·服务器·网络
冷的方程式5 小时前
安装在虚拟机中的kali设置网络联接
网络