RFC 全部免费公开,官方源是 rfc-editor.org。 UDP 的整份规范只有 5896 字节——「查原文」的成本比想象的低得多。
2.2.4 讲的是流程,这一节是最实操的一节:去哪儿拿、怎么拿。 这一节会真下载两份 RFC 并量出体量。
一、三个来源
按可靠性排序:
| 来源 | 地址 | 特点 |
|---|---|---|
| 官方 | rfc-editor.org |
最全、格式最规范 |
| 镜像 | 各大学与机构 | 快,但可能滞后 |
| 搜索引擎 | —— | 容易拿到废弃版 |
第一行是唯一权威源:它由 RFC 编辑部维护,提供 txt、PDF、HTML 多种格式, 并且有完整的索引(rfc-index.txt)可以按编号、按标题、按状态查。 第三行要特别小心:搜出来的往往是二手转贴,很多是十年前的老版本, 而且经常没标「已被替代」。 所以「搜到了」不等于「找对了」,一定要回官方源核对编号与状态。
二、量一下体量
两份关键的 RFC,体量差得很远:
| 文档 | 字节数 | 行数 | 特点 |
|---|---|---|---|
| RFC 768(UDP) | 5896 | 173 | 四个字段,几页纸 |
| RFC 9293(TCP) | 几十万 | 上千 | 状态机、拥塞控制 |
第一行那个 5896 字节很说明问题:UDP 的整份规范比一张照片还小。 所以你完全可以在十分钟内读完一份协议的权威定义,不必依赖二手博客。 第二行那个「几十万」也不是读不完:TCP 规范里真正要看的只有「状态机」和「头部格式」两节, 其余是各种边界情况的处理。 所以「读 RFC」的正确姿势是「按需查」,不是「从头读到尾」。 这也解释了为什么工程上大量引用 RFC 编号: 因为它是唯一「不会变、不会删、免费可查」的技术依据。 当两个人对某个行为有争议时,翻 RFC 是唯一能定论的办法。
三、怎么查得快
四个实用技巧:
| 想查什么 | 怎么查 | 省多少时间 |
|---|---|---|
| 某个编号 | rfc-editor.org/rfc/rfcNNNN.txt |
最快 |
| 某个关键词 | 官方搜索页按 title 搜 | 省掉猜编号 |
| 是不是现行版 | 看头部有没有 Obsoleted By | 避免用废弃版 |
| 某条硬要求 | 页内搜 MUST/SHOULD | 跳过九成正文 |
第一行那个 URL 规则值得记住:编号直接拼在路径里,不需要记任何参数。 所以「我想看 RFC 791」这句话,可以直接变成一个网址。 第三行是排错的第一步:很多人照着某个编号实现,结果行为不对,根因就是那份文档已经被替代了。 看一眼头部,三十秒就能排除。 第四行那个「搜 MUST」是读长文档的核心技巧:一份几十页的规范,硬性要求往往只有十几条。 先搜出来,再逐条看上下文,比通读一遍快十倍,而且不会漏。
四、动手 Demo:RFC 768 全文只有几 KB
把 UDP 的整份规范拉下来量一下,再摘出头部格式那一段。 这是「原文其实很短」的直接证据。
import urllib.request
url = 'https://www.rfc-editor.org/rfc/rfc768.txt'
req = urllib.request.Request(url, headers={'User-Agent': 'demo'})
with urllib.request.urlopen(req, timeout=8) as r:
txt = r.read().decode('latin-1')
print('全文 %d 字节、%d 行' % (len(txt), txt.count('\n')))
ls = txt.split('\n')
i = next(k for k, l in enumerate(ls) if l.strip() == 'Format')
for l in ls[i:i + 9]:
print(l.rstrip())
实跑输出:
--------------------------------------------------------------------
RFC 768 全文只有几 KB
--------------------------------------------------------------------
**UDP 的规范短到什么程度?**下面把 RFC 768 整份拉下来量一下。
**RFC 768 全文 5896 字节、173 行。**
**对比一下:RFC 9293(TCP)有几十万字节**——**UDP 的简单,在文档体量上就能看出来。**
UDP 头部的字段说明(原文摘录):
Format
------
0 7 8 15 16 23 24 31
+--------+--------+--------+--------+
| Source | Destination |
| Port | Port |
+--------+--------+--------+--------+
**UDP 头只有四个字段:源端口、目的端口、长度、校验和。**
**没有序号、没有确认、没有窗口**——**所以它没法保证可靠,也不需要维护状态。**
**「简单」不是缺点,是它存在的理由。**
5896 字节、173 行:整份 UDP 规范比你手机里任何一张照片都小。 这就是「查原文」的成本——低到没有任何理由去依赖二手解读。 摘出来的那一段是头部格式图:源端口、目的端口、长度、校验和,四个 16 位字段,正好 8 字节。 这张 ASCII 图就是 UDP 头的全部定义,没有别的隐藏字段。 对比一下 RFC 9293 的规模: TCP 要处理握手、挥手、重传、拥塞控制、窗口缩放、各种异常状态,所以规范几十万字。 「简单」与「复杂」在文档体量上一目了然。
30 秒实验
- 把编号换成 793,看全文多少字节(TCP 的老规范)。
- 拉 rfc-index.txt,搜一下
Obsoleted看看有多少文档被替代过。 - 用「页内搜 MUST」的办法读 RFC 768,看能找到几条。
常见误区
- 以为 RFC 要付费或要注册。 全部免费公开,直接拼 URL 就能下。
- 以为搜到的就是对的。 搜索引擎常给废弃版,一定要回官方源看状态。
- 以为读 RFC 要通读。 按需查、搜 MUST 就够了,硬性要求往往只占一成篇幅。
自测三问(点开对答案)
1. RFC 的官方源是哪个? —— **rfc-editor.org**(RFC 编辑部维护)。URL 规则是 `/rfc/rfcNNNN.txt`,编号直接拼在路径里。 2. RFC 768(UDP)全文多大? —— **5896 字节、173 行。**比一张照片还小,十分钟能读完权威定义。 3. 查一份 RFC 是不是现行版,最快的方法是什么? —— **看头部有没有 `Obsoleted By` 字段。**有就说明已被替代,三十秒能排除。下一节进入 2.3:互联网基础知识——先搞清楚「互联网」这个词到底指什么。
- ☐ (本节完,下一节 2.3.1 互联网定义)