📚 第二章 TCP/IP基础知识
📄 一句话概括

从草稿到正式标准要过四道关,绝大多数文档走不到最后一道。 草稿只有六个月寿命——它是工作稿,不是存档。

📝 本节和前面几节的关系

2.2.3 讲的是「标准长什么样」,这一节讲「怎么成为标准」。 这一节的数字都是公开事实,可以逐条查到。

一、四道关

成熟度等级与典型时长:

等级 中文 典型时长 含义
Internet Draft 草稿 6 个月 过期就没了
Proposed Standard 提议标准 数年 可以先用
Draft Standard 草案标准 数年 需多个独立实现
Internet Standard 正式标准 十几年 极少数走到这
Historic 历史 — 被废弃但仍可查

第一行那个「6 个月过期」是 IETF 的硬规矩:草稿半年没进展就自动作废, 所以它不是「存档」,是「工作稿」。 这一点很多人误解——以为 draft-ietf-xxx-00 之类的文档可以长期引用,其实它随时会消失。 第三行那个「多个独立实现」是关键的晋升条件: 要从 Proposed 升到 Draft,必须有两份以上「能互操作」的实现。 这个要求很实在:它逼着标准去解决「两个人都照文档做,结果对不上」的问题。

二、为什么这么慢

慢是设计出来的,原因有三:

原因 表现 换来什么
要粗共识 反对意见必须被回应 不会被大厂单方面推
要多个实现 等产品做出来 标准不会无法实现
要向后兼容 旧行为不能破 老设备不会一夜报废

第一行那个「粗共识」(rough consensus)是 IETF 的特色: 它不是投票,是「没人坚持强烈反对」。 所以少数派的声音必须被听见、被回应,但不能靠人数碾压。 这套规则让标准推进慢,但一旦定下来就很难被推翻。 第三行的代价是文档越来越厚:每加一个特性都要考虑「老实现怎么办」, 于是形成大量「允许但不要求」的条款。 这就是为什么读 RFC 时会看到那么多「MAY」——它们都是兼容性的缓冲带。

三、五十三年的量级

用编号和年份算一下,就有尺度感了:

RFC 1    → 1969 年
RFC 9293 → 2022 年
跨度 53 年,编号到 9293
平均每年约 175 份,每月约 14 份

「每月 14 份」这个速度不算快:因为大部分是修订、勘误、实验稿,真正成为正式标准的极少。 这也解释了为什么「查 RFC 要看清状态」——绝大多数编号都不是你以为的那个东西。 对比一下其他标准化组织:ITU-T 的一份建议书往往要好几年,而且改版要开大会; IEEE 的 802 系列也是几年一版。 IETF 的「快」是靠「松」换来的——它不要求完美,只要求「能跑、有两个实现、没人强烈反对」。

四、动手 Demo:五十三年、九千多份 RFC

用编号与年份算出平均速度,再看五个等级的典型时长。 「能走到正式标准的极少」这句话,看表比看文字清楚。

years = 2022 - 1969
n = 9293
print('跨度 %d 年,编号到 %d' % (years, n))
print('平均每年 %d 份,每月 %d 份' % (n // years, n // years // 12))

lv = [('Internet Draft', '6 个月', '过期就没了'),
      ('Proposed Standard', '数年', '可以先用'),
      ('Draft Standard', '数年', '需多个独立实现'),
      ('Internet Standard', '十几年', '极少数走到这'),
      ('Historic', '—', '被废弃但仍可查')]
for a, b, c in lv:
    print('%-20s %-8s %s' % (a, b, c))

实跑输出:

--------------------------------------------------------------------
五十三年、九千多份 RFC
--------------------------------------------------------------------
**标准化流程听着抽象,用编号和年份一算就具体了。**

**RFC 1 发布于 1969 年,RFC 9293 发布于 2022 年**:**跨度 53 年、编号到 9293。**
**平均每年约 175 份,每月约 14 份。**

  等级                  中文         典型时长       含义
  ---------------------------------------------------------------------
  Internet Draft        草稿         **6 个月**     过期就没了
  Proposed Standard     提议标准     数年           **可以先用**
  Draft Standard        草案标准     数年           需多个独立实现
  Internet Standard     正式标准     十几年         **极少数走到这**
  Historic              历史         —              **被废弃但仍可查**

**第一行那个「6 个月过期」是 IETF 的硬规矩**:**草稿半年没进展就自动作废**,
**所以它不是「存档」,是「工作稿」。**
**最后一行解释了为什么「查 RFC 要看清状态」**:
**很多看起来权威的编号,状态是 Historic 或 Experimental**,**照着它实现就是错的。**

53 年、9293 份,平均每年 175 份、每月 14 份:这个数字说明「RFC 不是稀缺资源」, 平均两天就出一份。 所以「引用 RFC」本身不构成权威,关键是引用的是哪一份、什么状态。 第一行那个「6 个月过期」最值得记住:草稿是工作稿,随时会变、随时会消失。 所以生产系统里不应该依赖草稿——除非你做好了「它下个月就改」的准备。 这张表里没有「多久能从草稿升到正式标准」的平均值: 因为分布极其不均——有的协议几个月就走完,有的二十几年还在 Proposed。 给一个平均值反而会误导。

30 秒实验

  1. 算一下:如果每两天出一份 RFC,一年多少份?和 175 对得上吗?
  2. 查一下 HTTP/2(RFC 7540)从草稿到正式标准用了多久。
  3. 想一下:为什么「多个独立实现」这个要求能提高标准质量?

常见误区

  1. 以为 RFC 编号就是「标准编号」。 绝大多数 RFC 不是正式标准,要看 Category 与 STD 号。
  2. 以为草稿可以长期引用。 六个月不推进就作废,生产系统不该依赖草稿。
  3. 以为标准化越慢越差。 慢是「要粗共识、要多个实现」的代价,换来的是「定下来就难推翻」。
自测三问(点开对答案) 1. IETF 的四个成熟度等级是什么? —— **Internet Draft(草稿,6 个月过期)、Proposed Standard、Draft Standard、** **Internet Standard。** 另有 Historic 表示已废弃。 2. 从 Proposed 升到 Draft 的关键条件是什么? —— **要有两份以上能互操作的独立实现。**这会逼着标准去解决「都照文档做却对不上」的歧义。 3. 「粗共识」是什么意思? —— **不是投票,是「没人坚持强烈反对」。**少数派意见必须被回应,但不能靠人数碾压。

下一节讲最实用的一件事:去哪儿拿 RFC。

相关笔记