Request For Comments(RFC),是一系列以编号排定的文件。文件收集了有关互联网相关信息,以及UNIX和互联网社区的软件文件。RFC文件是由Internet Society(ISOC)赞助发行。基本的互联网通信协议都有在RFC文件内详细说明。RFC文件还额外加入许多在标准内的论题,例如对于互联网新开发的协议及发展中所有的记录。因此几乎所有的互联网标准都有收录在RFC文件之中。
RFC(Request For Comments)意即“请求评论”,包含了关于Internet的几乎所有重要的文字资料。如果你想成为网络方面的专家,那么RFC无疑是最重要也是最经常需要用到的资料之一,所以RFC享有网络知识圣经之美誉。通常,当某家机构或团体开发出了一套标准或提出对某种标准的设想,想要征询外界的意见时,就会在Internet上发放一份RFC,对这一问题感兴趣的人可以阅读该RFC并提出自己的意见;绝大部分网络标准的制定都是以RFC的形式开始,经过大量的论证和修改过程,由主要的标准化组织所指定的,但在RFC中所收录的文件并不都是正在使用或为大家所公认的,也有很大一部分只在某个局部领域被使用或并没有被采用,一份RFC具体处于什么状态都在文件中作了明确的标识。
RFC由一系列草案组成,起始于1969年(第一个RFC文档发布于1969年4月7日,参见“RFC30年”,RFC2555”),RFC文档是一系列关于Internet(早期为ARPANET)的技术资料汇编。这些文档详细讨论了计算机网络的方方面面,重点在网络协议,进程,程序,概念以及一些会议纪要,意见,各种观点等。
“RFC编辑者”是RFC文档的出版者,它负责RFC最终文档的编辑审订。“RFC编辑者”也保留有RFC的主文件,称为RFC索引,用户可以在线检索。在RFC近30年的历史中,“RFC编辑者”一直由约翰·普斯特尔(Jon Postel)来担任,而“RFC编辑者”则由一个工作小组来担任,这个小组受到“互联网协会”(Internet Society)的支持和帮助。
RFC编辑者负责RFC以及RFC的整体结构文档,并维护RFC的索引。Internet协议族的文档部分(由Internet工程委员会“因特网工程师任务组”IETF以及IETF 下属的“因特网工程师指导组”IESG 定义),也做为RFC文档出版。因此,RFC在Internet相关标准中有着重要的地位。
RFC编辑者的职责是由Internet 中的大家提议形成的,所出版的语言也就和Internet一样。IETF和ISOC是代表了世界各地的国际性组织,英语是IETF的第一工作语言,也是IETF的正式出版语言。RFC 2026 "The Internet Standards Process -- Revision 3" 允许RFC翻译成其他不同的语言。但是不能保证其翻译版本是完全正确的。因此,RFC编辑不对非英语的版本负责,而只是指明了哪里有非英语的版本,将这些信息列在WEB页上。
处理过程[编辑](javascript:;)
一个RFC文件在成为官方标准前一般至少要经历4个阶段(RFC2026):因特网草案、建议标准、草案标准、因特网标准。
第一步RFC的出版是作为一个Internet 草案发布,可以阅读并对其进行注释。准备一个RFC草案,我们要求作者先阅读IETF的一个文档"Considerations for Internet Drafts". 它包括了许多关于RFC以及Internet草案格式的有用信息。作者还应阅读另外一个相关的文档RFC 2223 "Instructions to Authors"。
一旦文档有了一个ID号后,你就可以向rfc-editor @rfc-editor. org发送e-mail ,说你觉得这个文档还可以,能够作为一个有价值或有经验的RFC文档。RFC编辑将会向IESG请求查阅该文档并给其加上评论和注释。你可以通过RFC队列来了解你的文档的进度。一旦你的文档获得通过,RFC编辑就会将其编辑并出版。如果该文档不能出版,则会有email通知作者不能出版的原因。作者有48个小时的时间来校对RFC编辑的意见。我们强烈建议作者要检测拼写错误和丢字的错误,应该确保有引用,联系和更新相关的信息。如你的文档是一个MIB,我们则要你对你的代码作最后一次检测。一旦RFC文档出版,我们就不会对其进行更改,因此你应该对你的文档仔细的检查。
有时个别的文档会被正从事同一个项目的IETF工作组收回,如是这种情况,则该作者会被要求和IETF进行该文档的开发。在IETF中,Area Directors (ADs) 负责相关的几个工作组。这些工作者所开发的文档将由ADs 进行校阅,然后才作为RFC的出版物。
如要获得关于如何写RFC文档和关于RFC的Internet标准制定过程的更多详细信息,请参见:
1、RFC 2223 "Instructions to RFC Authors"。
2、RFC 2026 "The Internet Standards Process -- Revision 3"。
实际上,在Internet上,任何一个用户都可以对Internet某一领域的问题提出自己的解决方案或规范,作为Internet草案(Internet Drafts,ID)提交给Internet工程任务组(IETF)。草案存放在美国、欧洲和亚太地区的工作文件站点上,供世界多国自愿参加的IETF成员进行讨论、测试和审查。最后,由Internet工程指导组(IESG)确定该草案是否能成为Internet的标准。
如果一个Internet草案在IETF的相关站点上存在6个月后仍未被IESG建议作为标准发布,则它将被从上述站点中删除。事实上,在任何时候,一个Internet 草案都有可能被新的草案版本所替换掉,并重新开始6个月的存放期。
如果一个Internet草案被IESG确定为Internet的正式工作文件,则被提交给Internet体系结构委员会(IAB),并形成具有顺序编号的RFC文档,由Internet协会(ISOC)通过Internet向全世界颁布。每个Internet标准文件在被批准后都会分配一个独立于RFC的永久编号,这就是STD编号。有一个不断被更新的文件RFC-INDEX.TXT按照RFC的编号来索引所有的文件,对于因特网标准文件还列出了其相应的STD编号。
RFC文档必须被分配RFC编号后才能在网络上发布。例如,RFC2026的内容是“Internet标准进程-修订版3”、RFC1543的内容为“RFC作者指导”等等。需要时,可以复制或打印这些联机文档。用户也可以通过遍布全世界的数个联机资料数据库中获得RFC文档。
作为标准的RFC又分为几种,第一种是提议性的,就是说建议采用这个作为一个方案摆出来,Draft是已经有一部分在用了,希望被采用为正式的标准,还有一种就是完全被认可的标准,这种是大家都在用,而且是不应该改变的。还有一种就是最佳实践法,它相当于一种介绍。这些文件产生的过程是一种从下往上的过程,而不是从上往下,也就是说不是一个由主席,或者由工作组负责人的给一个指令,说是要做什么,要做什么,而是有下边自发的提出,然后在工作组里边讨论,讨论了以后再交给刚才说的工程指导委员会进行审查。但是工程指导委员会只做审查不做修改,修改还是要打回到工作组来做。IETF工作组文件的产生就是任何人都可以来参加会议,任何人都可以提议,然后他和别人进行讨论,大家形成了一个共识就可以产出这样的文件。
历史[编辑](javascript:;)
RFC文件格式最初作为ARPA网计划的基础起源于1969年。如今,它已经成为IETF、Internet Architecture Board (IAB)还有其他一些主要的公共网络研究社区的正式出版物发布途径。
最初的RFC作者使用打字机撰写文档,并在美国国防部国防前沿研究项目署(ARPA)研究成员之间传阅。1969年12月,他们开始通过ARPANET途径来发布新的RFC文档。第一份RFC文档由洛杉矶加利福尼亚大学(UCLA)的Steve Crocker撰写,在1969年4月7日公开发表的RFC 1。当初Crocker为了避免打扰他的室友,是在浴室里完成这篇文档的。
在1970年代,很多后来的RFC文档同样来自UCLA,这不仅得益于UCLA的学术质量,同时也因为UCLA是ARPANET第一批Interface Message Processors (IMPs)成员之一。
由Douglas Engelbart领导的,位于Stanford Research Institute的Augmentation Research Center (ARC)是四个最初的ARPANET结点之一,也是最初的Network Information Centre,同时被社会学家Thierry Bardini记录为早期大量RFC文档的发源地。
从1969年到1998年,Jon Postel一直担任RFC文档的编辑职务。随着美国*赞助合同的到期,Internet Society(代表IETF),和南加州大学(USC)Information Sciences Institute的网络部门合作,(在IAB领导下)负责RFC文档的起草和发布工作。Jon Postel继续担任RFC编辑直到去世。随后,由Bob Braden接任整个项目的领导职务,同时Joyce Reynolds继续在团队中的担任职务。
庆祝RFC的30周年的RFC文件是RFC 2555。
文件架构[编辑](javascript:;)
RFC文件只有新增,不会有取消或中途停止发行的情形。但是对于同一主题而言,新的RFC文件可以声明取代旧的RFC文件。RFC文件是纯 ASCII文字档格式,可由电脑程序自动转档成其他档案格式。RFC文件有封面、目录及页首页尾和页码。RFC的章节是数字标示,但数字的小数点后不补零,例如4.9的顺序就在4.10前面,但9的前面并不补零。RFC1000这份文件就是RFC的指南。
RFC文件是由Internet Society审核后给定编号并发行。虽然经过审核,但RFC也并非全部严肃而生硬的技术文件,偶有恶搞之作出现,尤其是4月1日愚人节所发行的,例如RFC 1606: A Historical Perspective On The Usage Of IP Version 9 (参见IPv9)、RFC 2324: “超文本咖啡壶控制协议”(Hyper Text Coffee Pot Control Protocol,乍有其事的写了HTCPCP这样看起来很专业的术语缩写字)。以及如前面所提到纪念RFC的30周年庆的RFC文件。
发展历程[编辑](javascript:;)
在Internet从诞生到不断发展壮大的过程中,出现过各种各样的协议和思想讨论,从最初的NCP协议到现代Internet的基石TCP/IP协议族,无一不闪耀着研究人员的智慧光芒,正是这些成百上千各种协议的发明、讨论和完善,才使得人类社会逐步进入到互联网时代。而这些闪耀着人类智慧结晶的思想成果大都以一种称为RFC的文档格式记录起来。
1969年,S·Crocker首先建立了RFC机制,其目的是建立一种快速共享Internet网络研究思想的方式,最初RFC是以书面形式分发的,后来有了FTP、Email,RFC就以在线电子文本的形式提供,当然通过WWW在很多站点可以很方便地访问RFC文档。RFC一直以来主要是用于Internet的标准化,RFC是Internet开放性的产物,任何人都可以访问RFC,Internet这一致力于信息共享的网络首先共享的就是以RFC形式出现的涉及其自身研究、设计和使用的信息。这一独特的方式对于Internet的发展、完善具有相当关键的作用。RFC文档已不仅仅是关于Internet标准的文档了,而且也不局限于TCP/IP范围,它几乎包含了与计算机通信有关的任何内容,全面反映Internet研究、发展的过程。RFC主要是IAB、IETF、IESG、ISOC的工作成果,主要由IETF起草,由IAB指导下的RFC 编辑(Editor)直接负责RFC的发表。每一个RFC文档有一个编号,这个编号永不重复,也就是说,由于技术进步等原因,即使是关于同一问题的RFC,也要使用新的编号,而不会使用原来的编号,至2015年2月2日,RFC编号已经排到7443,在查找RFC时,一定要注意最新的RFC。
特点[编辑](javascript:;)
Internet的所有标准都是以请求评论文档( Request For Comment,RFC)的形发布的,TCP/IP协议也不例外。首先由ITF讨论后对协议进行标准化,然后把备标准化的协议转变成RFC在 Internet上公布。另外,RFC不仅包含RFC性能格书,还包括与实际安装和应用有关的信息,以及与协议的试验有关的信息。
人们对RFC进行编号,例如把确定IP性能指标的协议编号为RFC791,把确定TCP性能指标的协议编号为RFC793。RFC是按照协议制定的顺序进行编号的且一旦成为RFC,就不容许再做任何修改。如果需要扩展协议的性能,则必须便新的编号来定义该协议的扩展部分。当一个协议的性能指标发生变化时,要发行的RFC,同时废除旧的RFC。在新的RFC中,标明了该协议是从哪一个协议扩来的,以及哪个协议被废除了。 [1]
使用[编辑](javascript:;)
Internet所有技术标准都是以RFC文件形式公布的,但这不是所有的RFC文件。RFC还包括政策研究报告,技术部门的工作总结,研讨会的成果综述和网络使用指南等。每一份RFC文件都有一个唯一的编号,当某一文件产生了更新版本时,就为新的版本指派新的RFC编号。任何用户都可通过E-mai向RFC编委会投寄文稿申请作为RFC文件发表。全套RFC文件由 DDN NIC的 SRI Internet负责维护。以RFC文件公布的网络协议又可用以下方式进行分级:
1、依据是否标准化:标准协议;标准草案;建议标准;试行标准;历史标准。
2、依据是否必须采纳:必须采纳;推荐采纳;选择采纳;不推荐采纳。
(1)必须采纳的标准协议是联网的任何一台主机所必须遵循的(如RFC-791)。
(2)推荐采纳的标准则是联网主机应该实现的,缺少时虽仍然能联网,但可能运行不正常(如RFC一
选择采纳的建议标准则是还在小范围试用的网络协议。 [2]
分类[编辑](javascript:;)
RFC文档大致可以分为以下几类。
STD RFC
按照RFC1311的定义,STD RFC是指那些已经或者致力于成为Internet标准的RFC。只有经过完全Internet标准化过程的RFC才可以有STD编号,STD编号是不变的,而其涉及到的 RFC文档可能不只一个,其RFC编号也会更新。如STD13(Domain Name System)就涉及RFC1034和RFC1035。STD的标准化过程要经过几个步骤,首先由IETF起草标准(也可能是其他组织和个人,但一般都是和IETF共同完成的),形成Internet Draft(ID),ID没有RFC编号。如果ID在6个月内IESG没有建议成为RFC,则取消此ID。成为RFC后,还要经过一系列的审查、修订、测试等才能最终成为Internet标准。
BCP RFC
由于Internet应用领域广泛,各种不同的组织有不同的使用目的和使用规则,IETF除了建议STD以外,也有必要对于Internet的使用和管理提供一些一般性的指导,同时也为IETF、IAB、IESG提供一种渠道,以便推动某一方面的工作,反映其技术趋向,反映这些组织本身的工作进展。于是,1995年以RFC1818定义了BCP,即Best Current Practice。BCP同时有一个BCP编号和一个RFC编号,一旦约定了一个BCP编号,就不会再变,而其RFC编号则可能会经过修订不断更新。例如反映Internet标准化工作程序的BCP9的RFC编号就从RFC1602上升到RFC2026,相应地就废弃了RFC1602。BCP在发表以前,以电子邮件的形式广泛征求IETF的意见,经过IESG的审查,通过后即正式发表。但是BCP本身不是Internet标准。
FYI RFC
FYI是For Your Information的简写,1990年发表的RFC1150(FYI1)定义了FYI,FYI也同时有一个FYI编号和一个RFC编号,FYI编号是固定的。FYI主要是提供有关Internet的知识性内容。所有的FYI在提交到RFC编辑以前,必须先经过IETF的User Services WorkingGro up审查。
其他RFC
除了STD、BCP、FYI以外还有其他一些RFC。从RFC899开始,所有以99结尾的RFC都是对此前99个RFC的一个概括。如RFC1999就是对RFC1900到RFC1999的一个简单概括。除了上述分类以外,还有一些描述RFC的方法。与Internet标准化过程(Internet Standards Process)有关的规范可以分为两类,即 Technical Specification(TS),Applicability Statement(AS)。
TS是对协议、规则、格式、实用程序的描述。AS是描述在何种环境,以及怎样在Internet中使用TS;AS所涉及的并不一定全是Internet标准,比如IEEE、ITU、ISO组织的一些标准,大家所熟悉的ASCII标准就是一例。AS应该对其涉及的TS规定相应的级别"Requirement Level",这些"Require ment Level"如下:Required(Req),相当于必须实现,如IP、ICMP;Recommended(Rec),鼓励使用,如TELNET;Elective(Elc),可选择的; Limited Use,只限于特定的用户,一般说来用于对一些新的协议做试验; ·Not Recommended,不要使用,很可能是过时的。"Maturity Level"也是用来描述TS和AS的一种方式,它反映这些标准是否成熟。对于致力于成为STD的TS和AS有三种"Maturity Level"。Proposed Standard,基本成熟,但还需要进一步的试验证实其可行性。除非是用来验证该协议的可行性,不要将其视为标准实现。Draft Standard,需要两个独立的,而且具有相互操作性的实例验证该协议的每一个方面。可以将其视为最终的标准草案;Internet Standard,最终的Internet标准,同时赋予一个STD编号。除此之外的TS和AS分为以下几种"Maturity Level"。Experimental,一般是反映一些研究和开发的成果,只应将此看作是一般性的信息。Informational,反映与Internet标准有关的一般性信息。有些也是有关非Intern et组织开发的一些协议,但必须得到协议开发者的许可。Historic,是一些被新的标准取代或者是已经过时废弃不用的标准。STD1(RFC2200)——Internet Official Protocol Standards,定期更新,反映最新的 Internet标准。另外,对于关注Internet的人来说,应该经常注意查阅BCP9的最新内容。
注意事项
1、一是需要确定它是最新的文档,二是需要注意RFC文档的类别;
2、所有的RFC文档都要经历评论和反馈过程,并且在这一段时间内它们会被划分为不同的类别;
3、RFC文档一旦被提交,IETF和IAB组织将审查RFC文档,通过后可以成为一项标准;
4、RFC文档按照它发展与成熟的过程可以分为标准、草案标准、提案标准、实验性的、信息性或历史性的;
5、RFC文档又可以分为被要求、被推荐、被选择、受限制使用或不被推荐。