01 第1周D3 网络HTTP
D3 网络基础 · HTTP/HTTPS
D3 网络基础 · HTTP/HTTPS
标准(必讲)。公司业务=API 生意,HTTP 是 API 的"语言",本模块是理解 D10/D13/D15 的必备前提。
教学目标(学完能做什么)
- 能说出 HTTP 常用请求方法与用途、常见状态码含义
- 能读懂 HTTP 请求/响应头(Host、Authorization、Content-Type、Content-Length 等)
- 能解释 HTTPS 加密原理(TLS/证书)与公司证书自动签发(cert-manager + letsencrypt)
- 会用
curl完成带鉴权、带请求体、看响应头的真实 API 调用
前置要求
- D2(TCP/IP,知道 HTTP 跑在 TCP/443 之上)
本模块在业务中的位置
- 客户调用公司网关(newapi/sub2api)用的就是 HTTP/HTTPS API(如
/v1/chat/completions)。D10 写 API、D13 调 Claude API、D15 看计费,全部绕不开本模块。这是 API 生意的"语言课"。
内容分段
1. HTTP 是什么
- 应用层协议,跑在 TCP 之上(HTTPS 默认 443)。
- 请求-响应模型:客户端发请求,服务端回响应。
- 一次请求包含:请求行(方法+路径)、请求头、请求体(可选)。
2. 请求方法
| 方法 | 用途 | 公司例子 |
|---|---|---|
| GET | 读数据(幂等、无副作用) | 查监控状态 |
| POST | 新建/触发动作(有副作用) | 调用 /v1/chat/completions |
| PUT / PATCH | 全量/部分更新 | 改配置 |
| DELETE | 删除 | 删令牌 |
| OPTIONS | 跨域预检(CORS) | 前端调后端 |
- 记忆:GET 是看、POST 是干、DELETE 是删;会话类动作一律 POST。
3. 状态码
| 段 | 含义 | 常见例子 |
|---|---|---|
| 2xx | 成功 | 200 OK、204 无内容 |
| 3xx | 重定向 | 301/302(D4 讲域名时常见) |
| 4xx | 客户端错 | 400 参数错、401 未认证、403 无权限、404 找不到、429 限流 |
| 5xx | 服务端错 | 500 内部错误、502/504 网关问题 |
- 业务关键:401(key 无效)和 429(限流,RPM 超了)在 LLM 业务里天天见,D14 会专门处理。
- 排查口诀:4xx 先查自己(请求方),5xx 再查服务(服务方)。
4. 常见请求/响应头
| Header | 作用 |
|---|---|
| Host | 访问哪个域名(一个 IP 多站点的关键,D4 讲虚拟主机) |
| Authorization | 认证信息,如 Bearer sk-xxx |
| Content-Type | 请求体/响应体格式,如 application/json |
| Content-Length | 消息体长度 |
| Set-Cookie / Cookie | 会话状态 |
| X-* | 自定义头(业务常用,如 x-api-key) |
- LLM 业务里最常见的两种认证头:
Authorization: Bearer <key>、x-api-key: <key>(Claude 官方用后者为主)。
5. HTTPS 与 TLS 证书
-
HTTP 明文 → HTTPS = HTTP + TLS 加密,解决"中间人偷看/篡改"。
-
证书链:CA(证书颁发机构)→ 服务器证书;浏览器信任 CA,就信任服务器。
-
公司实践:域名 HTTPS 由 cert-manager 自动签发 letsencrypt-prod 证书(见 CLAUDE.md TLS 一节),到期自动续签。公司服务(*.akria.net)全部 HTTPS。
-
验证证书:
curl -vI https://kuma.akria.net 2>&1 | grep -i "ssl\|subject" openssl s_client -connect kuma.akria.net:443 -servername kuma.akria.net 2>/dev/null | openssl x509 -noout -subject -issuer -dates
6. curl 实战(API 生意的标配工具)
# 基本 GET,看响应头
curl -sI https://kuma.akria.net
# 带鉴权、带 JSON 体的 POST(示例:本地或 mock 端点,勿用真实生产 key 乱发)
curl -s https://httpbin.org/headers \
-H "Authorization: Bearer sk-test-xxxx" \
-H "Content-Type: application/json"
# 看完整请求/响应过程
curl -v https://kuma.akria.net
# 只取响应体
curl -s https://kuma.akria.net- 讲师演示
-v的详细输出:TCP 连接 → TLS 握手 → 请求行 → 响应头 → 响应体。 - 强调:调试任何 API 问题,第一招永远是
curl -v。
讲解节奏建议(约 90 分钟)
| 时段 | 内容 |
|---|---|
| 09:00-09:10 | 引入:API 生意的"语言",一次公司请求长什么样 |
| 09:10-09:35 | 方法 + 状态码(对照 LLM 业务 401/429) |
| 09:35-09:55 | 请求/响应头(Authorization / Content-Type) |
| 09:55-10:20 | HTTPS/TLS + 公司 cert-manager 自动证书(现场查一个证书) |
| 10:20-10:50 | curl -v 实战演示(指认各个阶段) |
| 10:50-11:30 | 学员实操 curl(对应作业) |
| 11:30-11:50 | 常见误区 + 小结 |
| 11:50-12:00 | 布置作业 |
常见误区汇总
| 误区 | 正确理解 |
|---|---|
| 401 和 403 一样 | 401=没认证/认证失败,403=认证了但没权限;LLM 业务 401 常见于 key 错 |
| HTTPS 有了证书就绝对安全 | 证书只保证加密与身份;key 泄露、业务逻辑漏洞照样出事 |
| GET 也可以用来发会话 | 有副作用的一律 POST;混用会带来缓存/重放问题 |
| 5xx 一定是服务端 bug | 5xx 也可能由上游/网关引发(502/504),排查要看全链路 |
| 看不了响应内容 | curl -v、-i、-sI 都能看;先 -v 再看体 |