深入理解互联网
上QQ阅读APP看书,第一时间看更新

1.6.6 RFC与协议标准化

1969年,当BBN开始为ARPANET设计IMP时,网络中还缺少一个关键的组件——控制计算机通信的软件。开发通信协议与软件的任务落到与ARPA签约的各个大学的研究生身上。研究生们被集中起来工作在“与世隔绝”的环境中,但是并没有专家或权威为他们分配软件编程的具体任务,他们在通过ARPANET讨论如何设计通信协议、编写协议软件的同时,也建立起影响日后人们在互联网上交流的日常规则。

当研究生们在网上解释自己开发的通信协议时,由于不知道自己在项目中的职务等级,于是用“评论请求”(Request for Comments,RFC)作为标题来发送自己的文档。最早提出RFC的是一位来自UCLA的研究生史蒂夫·克罗克(Steve Croker)。他最初的想法是:通过“临时、非正式的备忘录”来交流想法,大家尽可能公平地讨论问题,不借助网络协议工作的重要性来塑造自己的权威。

温顿·瑟夫对于这种思维方式的总结是:早期主机协议的开发者大部分是研究生,大家采取了虚心和包容的态度。史蒂夫·克罗克总结了他们的座右铭:我们并没有投票,只是在组内针对候选标准寻求大致的共识。

尽管RFC“出身卑微”,但是史蒂夫·克罗克的RFC为接下来半个世纪的互联网文化设定了“开放、平等”的基调。

了解RFC文档对网络研究的作用时,需要注意以下问题。

(1)任何研究人员都可以提交RFC文档

管理RFC文档的机构根据收到文档的时间,在经过IETF专家审查并认为可以发布时,将按照接收文档的时间先后对RFC排序。第一个RFC文档序号为1,即“RFC 1 Host Software”,之后很快出现了关于主机软件讨论的文档,即“RFC 2 Host Software”。从1969年4月第一个RFC文档的出现到2009年4月的40年间,发布的RFC文档已经达到数千个。2009年4月7日,发布了RFC 5540文档,名称是“40 Years of RFCs”,该文档对RFC文档40年的发展过程进行了总结。读者在查询与阅读RFC文档时,需要注意两个问题:一是RFC文档的类型,二是确定是否是最新的文档。

(2)RFC文档的形式

RFC文档有三种形式。

·实验性文档:某项技术研究当前实验的进展报告。

·信息性文档:关于Internet的一般性信息或指导性信息。

·历史性文档:已经被新的协议取代,或者是从未使用的协议标准。

(3)一种协议可能出现很多相关的RFC文档

讨论TCP协议的第一个RFC文档RFC 793“Transmission Control Protocol”在1981年发布。为了解决TCP协议在网络拥塞下的恢复性能,以及选择发送窗口、接收窗口、超时数值、报文段长度等变量值,在之后的20多年里IETF陆续公布了十几个针对TCP的功能扩充、调整的RFC文档。如果读者要系统地了解一个协议标准的细节,最好阅读相关的多个RFC文档。

同时,需要注意另一类问题,那就是对于同一个协议,可能由后面的新协议文档取代了前面的旧协议文档。例如,对于“Internet Official Protocol Standards”,存在着两个RFC文档,其中2003年11月发布的RFC 3600明确表示它将取代2002年11月发布的RFC 3300。这种情况是比较多的。

(4)互联网标准制定的阶段

不是所有RFC文档都会成为互联网协议标准,其中只有一小部分成为标准。互联网标准的制定需要经过四个阶段:草案、建议标准、草案标准、标准。

·草案阶段的文档用于大家讨论。

·当研究人员提交的文档经过IETF专家审查认为有可能成为协议标准时,将被接受为建议标准阶段的RFC文档。

·处于草案标准阶段的RFC文档,表示该文档正在按协议标准要求进行审查。

·处于标准阶段的RFC文档,表示该文档已成为互联网协议标准。

从史蒂夫·克罗克发布RFC文档以来,已经出现了6000多份RFC文档,互联网世界一直保持的开放、协作的风气有效促进了互联网技术的发展。