The team’s articlesHow the internet works

了解互联网工程任务组 (IETF)

不同厂商的系统为什么能互相通信?从一个日常例子看懂 IETF、RFC 和技术共识,再理解卢恒为何主张协调不能变成支配。

Contents

两位微缩工程师把各自设备上的蓝色接口对在一起。
共同规范让不同厂商的系统也能配合。它的价值,要在实际开发、使用和测试中得到证明。

你用手机打开一家海外公司的网站,浏览器、服务器和沿途的网络,可能分别来自不同厂商。它们能互相理解,一个关键原因是工程师约定好了:信息应该按什么格式发送,对方又该怎样处理。

互联网工程任务组,简称 IETF,就参与制定了许多这样的技术规范。它帮助各自独立建设的系统协同工作。由此也产生了一个值得追问的问题:互联网需要共同规则,但共同规则应该给制定者多大的权力?

IETF 具体做什么?

按IETF 官方介绍(英文),它是一个开放的标准协作社区。参与者以个人身份贡献意见,可以通过工作组邮件列表讨论问题、提出方案、修改规范。如果你要找 IETF 的官方网站,可以从这个链接进入。

可以把技术规范理解成一份大家都能照着做的说明书。不同公司分别开发产品,再检查彼此能不能配合。它的价值在于:系统不必由同一家公司建造,也能互相通信。

看到 RFC 编号,就代表互联网标准吗?

不一定。RFC 的英文全称是 Request for Comments,名字沿用至今,指的是一个已发表的文档系列。IETF 对 RFC 的说明(英文)列出了不同类别:有标准,有最佳实践,也有实验性、资料性的文档。这个系列还收录了来自 IETF 之外其他发布渠道的文档。

所以,听到“标准要求这样做”,可以先查两件事:这份文档是什么状态?后来有没有新的文档更新或替代它?一项想法被写进已发表的 RFC,不代表它自动成了所有网络都必须执行的命令。

大家怎样达成技术共识?

IETF 重视工程判断,也重视方案在实际运行中的表现。它对如何形成技术共识的解释(英文)强调,技术异议应该得到认真处理,包括少数人提出的异议。支持的人多,并不能代替把设计里的问题解释清楚。

IETF 的使命说明(英文)还划出了一条边界:标准告诉大家怎样按同一种方式做事,IETF 并不因此强制所有人采用,也不负责监督所有人的使用。规范能发挥多大作用,要靠实际采用来体现;发表一份文档,本身不会赋予某个组织管理整个互联网的权力。

卢恒为什么特别在意这条边界?

在第 65 篇笔记:运行代码优先(英文原作)中,卢恒从这种工程传统出发,质疑区域互联网注册机构(RIR)所主张的权力。他关注的是:当一家机构掌握地址登记记录,这份工作为什么会进一步变成对运营商的支配?

这里要分清两种职责:编写通信协议,和管理运营商的地址记录,并不是一回事。公开讨论可以帮助人们解决技术问题。但在卢恒看来,参加讨论,不等于授权某个机构代表全体运营商,更不等于让它决定每家网络如何经营。

他提出的方向,是让网络能够自行核验共同记录。大家共享必要的规则,用来避免地址重复、证明谁控制哪些资源、保障安全。例如,一笔地址转移是否有效,应能按公开规则核验,而不是只能等登记机构点头。

今后采用哪些改变,则由运营商通过自己运行的代码作出选择。选择不兼容的规则,可能影响彼此能否协作;他的方案要求把这个边界说明白,而不是把分歧变成机构处罚。

为什么要在出问题之前考虑这些?

一旦网络依赖某家机构的认可才能维持运作,越是不能中断的时候,就越难临时摆脱这种依赖。卢恒主张在设计阶段就建立可核验的记录和独立验证能力,让一家机构失灵或被少数人控制时,网络之间仍有继续协作的基础。

接下来可以把问题问得更具体:运营商应该能依靠什么?协调机构又不应该取得什么权力?先读篇幅较短的第 72 篇笔记:唯一性协调权利法案(英文原作)。