网络协议入门教程 —— 写给零基础同学
适用对象:AI 应用开发课程学生,无计算机网络基础
学习目标:理解网络通信的基本原理,掌握 TCP 和 HTTP 协议的核心概念,能在后续的 AI 应用开发中知其所以然。
一、为什么要学网络协议?
1.1 从日常场景说起
- 你在浏览器输入网址,页面是怎么出现的?
- 你调用 ChatGPT API,请求是怎么发出去、结果又怎么回来的?
- 你的 AI 应用部署到服务器后,用户是怎么访问到的?
1.2 协议是什么
- 类比:协议就像”通信双方的约定”——就像寄快递要填地址、贴单号一样
- 网络协议 = 计算机之间”说话的规矩”
1.3 与 AI 应用开发的关系
- 调用大模型 API(如 OpenAI、百度文心)本质上就是发 HTTP 请求
- 理解协议 → 能看懂报错、会调试接口、能优化性能
二、网络分层模型(只讲你需要的)
2.1 快递类比理解分层
| 层级 | 快递类比 | 网络对应 | 关心的事 |
|---|---|---|---|
| 应用层 | 包裹里的物品(信的内容) | HTTP | 传什么数据 |
| 传输层 | 快递单号 + 签收确认 | TCP | 数据可靠送达 |
| 网络层 | 地址 + 路线规划 | IP | 数据往哪走 |
| 链路层 | 快递员 + 运输车辆 | 以太网/Wi-Fi | 数据怎么物理传输 |
2.2 本教程聚焦
- TCP(传输层)—— 保证数据可靠传输
- HTTP(应用层)—— 定义数据的内容和格式
记住一句话:HTTP 负责”说什么”,TCP 负责”说到、说全”。
三、TCP 协议:可靠的传输管道
3.1 TCP 是什么
- 全称:Transmission Control Protocol(传输控制协议)
- 核心能力:保证数据完整、有序、不丢失地从 A 到达 B
3.2 关键概念:端口
- IP 地址 = 一栋楼的门牌号
- 端口 = 楼里的房间号
- 举例:
192.168.1.100:8080,8080就是端口 - 常见端口:HTTP → 80,HTTPS → 443
3.3 三次握手(建立连接)
客户端 服务器
│ │
│ ──── ① SYN(你好,能听到吗?)────→ │
│ │
│ ←── ② SYN+ACK(听到了,你呢?)── │
│ │
│ ──── ③ ACK(我也听到了,开聊!)──→ │
│ │
│ 连接建立,开始传输数据 │
- 为什么要三次?—— 双方都要确认”我能发、对方能收”
3.4 数据传输:确认与重传
- 发一段数据 → 等对方确认 → 没收到确认就重发
- 类比:微信发消息看到”已读”才放心,没已读就再发一遍
3.5 四次挥手(断开连接)
客户端 服务器
│ │
│ ──── ① FIN(我说完了)──────→ │
│ ←── ② ACK(知道了)────── │
│ ←── ③ FIN(我也说完了)─── │
│ ──── ④ ACK(好的,再见)────→ │
│ │
│ 连接关闭 │
3.6 小结
- TCP 像打电话:先拨号接通,通话,然后挂断
- 可靠但有开销(建立/断开连接需要时间)
四、HTTP 协议:应用层的通用语言
4.1 HTTP 是什么
- 全称:HyperText Transfer Protocol(超文本传输协议)
- 浏览器和服务器之间通信的标准协议
- 调用 API 的本质就是发 HTTP 请求
4.2 HTTP 请求的结构
┌─────────────────────────────────────────────┐
│ 请求行: POST /v1/chat/completions HTTP/1.1 │
├─────────────────────────────────────────────┤
│ 请求头: Host: api.openai.com │
│ Authorization: Bearer sk-xxx... │
│ Content-Type: application/json │
├─────────────────────────────────────────────┤
│ 请求体: {"model":"gpt-4","messages":[...]} │
└─────────────────────────────────────────────┘
三大组成部分:
- 请求行:方法 + 路径 + 协议版本
- 请求头(Headers):附加信息(身份、数据格式等)
- 请求体(Body):要发送的数据
4.3 常用请求方法
| 方法 | 含义 | 类比 | 常见场景 |
|---|---|---|---|
| GET | 获取数据 | 去图书馆借书 | 打开网页、查询信息 |
| POST | 提交数据 | 去邮局寄包裹 | 登录、调用 AI API |
| PUT | 更新数据 | 把旧书换成新版 | 修改用户资料 |
| DELETE | 删除数据 | 把书还回去 | 删除一条记录 |
AI 应用开发中最常用的是 GET 和 POST。
4.4 HTTP 响应的结构
┌─────────────────────────────────────────────────┐
│ 状态行: HTTP/1.1 200 OK │
├─────────────────────────────────────────────────┤
│ 响应头: Content-Type: application/json │
│ X-Request-Id: abc123 │
├─────────────────────────────────────────────────┤
│ 响应体: {"choices":[{"message":{"content":...}}]}│
└─────────────────────────────────────────────────┘
4.5 必须记住的状态码
| 状态码 | 含义 | 你会遇到的场景 |
|---|---|---|
| 200 | 成功 | API 调用成功 |
| 400 | 请求有误 | 参数传错了 |
| 401 | 未授权 | API Key 错误或过期 |
| 403 | 禁止访问 | 没有权限 |
| 404 | 找不到 | URL 路径写错了 |
| 429 | 请求太多 | API 调用超过速率限制 |
| 500 | 服务器内部错误 | 服务端挂了 |
遇到报错先看状态码,80% 的问题能快速定位。
4.6 HTTP vs HTTPS
- HTTPS = HTTP + SSL/TLS 加密
- 类比:HTTP 是明信片(内容裸奔),HTTPS 是密封信(加密传输)
- 现在几乎所有 API 都使用 HTTPS
五、实战串联:调用 AI API 时发生了什么?
5.1 完整流程图
你的 Python 代码
│
▼
构造 HTTP 请求(POST + JSON body)
│
▼
TCP 三次握手,建立连接
│
▼
通过 TCP 连接发送 HTTP 请求
│
▼
服务器处理请求(大模型生成回答)
│
▼
通过 TCP 连接返回 HTTP 响应(状态码 + JSON body)
│
▼
TCP 四次挥手,断开连接
│
▼
你的代码解析响应,拿到 AI 的回答
5.2 用 Python 代码感受一下
import requests
# 这就是一个 HTTP POST 请求
response = requests.post(
url="https://api.openai.com/v1/chat/completions", # 请求地址
headers={
"Authorization": "Bearer sk-你的密钥", # 请求头:身份认证
"Content-Type": "application/json" # 请求头:数据格式
},
json={ # 请求体:JSON 数据
"model": "gpt-4",
"messages": [{"role": "user", "content": "你好"}]
}
)
print(response.status_code) # 状态码,如 200
print(response.json()) # 响应体,AI 的回答
5.3 常见问题排查
| 现象 | 可能原因 | 涉及层级 |
|---|---|---|
| 连接超时 | 网络不通 / 服务器没开 | TCP 层 |
| 连接被拒绝 | 端口没开 / 防火墙拦截 | TCP 层 |
| 返回 401 | API Key 错误 | HTTP 层 |
| 返回 429 | 调用太频繁 | HTTP 层 |
| 返回乱码 | 编码/格式不对 | HTTP 层 |
六、补充知识(选学)
6.1 JSON —— HTTP 的”普通话”
- AI API 几乎都用 JSON 格式传输数据
- 长这样:
{"key": "value", "list": [1, 2, 3]} - Python 中用
json模块或requests库轻松处理
6.2 流式响应(Streaming)
- ChatGPT 打字效果的秘密:服务器”边生成边发送”
- 底层使用 SSE(Server-Sent Events)或 chunked transfer
- 本质上还是 HTTP,只是响应体分块传输
6.3 WebSocket 简介
- HTTP 是”一问一答”模式
- WebSocket 是”双向持续对话”模式
- 部分实时 AI 应用会用到(如语音对话)
七、总结速查表
网络协议速记卡片
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
TCP(传输层)
✦ 作用:可靠传输数据
✦ 三次握手建立连接
✦ 四次挥手断开连接
✦ 保证数据完整、有序
HTTP(应用层,基于 TCP)
✦ 请求 = 请求行 + 请求头 + 请求体
✦ 响应 = 状态行 + 响应头 + 响应体
✦ 常用方法:GET(查)、POST(增/调用)
✦ 关键状态码:200 成功 / 4xx 你的错 / 5xx 服务器的错
调用 AI API = 发 HTTP POST 请求
✦ URL → API 地址
✦ Headers → API Key + Content-Type
✦ Body → JSON 格式的提示词
✦ Response → JSON 格式的 AI 回答
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
八、推荐动手练习
- 浏览器开发者工具:打开任意网页 → F12 → Network 标签 → 观察 HTTP 请求和响应
- 用 curl 发请求:在终端执行
curl -v https://httpbin.org/get,观察完整的请求/响应过程 - 用 Python requests 调用一个公开 API:如天气 API、笑话 API,体会请求和响应的结构
- 故意制造错误:传错 API Key 看 401、访问不存在的路径看 404,建立对状态码的直觉
记住:网络协议不需要死记硬背,理解核心原理 + 遇到问题知道去哪查就够了。在后续的 AI 应用开发中,你会不断加深对这些概念的理解。