您好,欢迎访问三七文档
DARPA互联网协议簇的设计理念DavidD.ClarkMassachusettsInstituteofTechnologyLaboratoryforComputerScienceCambridge,Ma.02139(声明:本文内容是翻译DavidD.Clark于ProceedingsofACMSIGCOMM’88,Aug.1988发表的论文:“TheDesignPhilosophyoftheDARPAInternetProtocols”,请将它用于学习等公益用途,而非盈利。谢谢!翻译:weiwenwewin。翻译不当之处,望指正。)梗概互联网协议簇,TCP/IP,是在15年前被提出的。它被研发自美国国防部高级研究计划局(DARPA),目前已被广泛应用于军方与商业系统中。尽管已经存在很多描述此协议簇的论文与规范说明,我们有时仍感觉很难根据它们推想出,为何协议是它现在存在的这个样子。比如,互联网协议是基于一个无连接传输模式,或数据报文模式的服务。而这个动机如今已被大大地误解了。本文希望能够捕捉到一些初期的推理,正是它们塑造了互联网协议簇。1.介绍在最近的15年中,美国国防部高级研究计划局一直在开发用于包交换网络的协议簇,其中包括互联网协议(IP),与传输控制协议(TCP),它们现在是美国国防部网络互连标准,并且被广泛应用于商业网络环境中。在这个成果中产生的想法,也已影响了其他的协议簇,特别是ISO无连接传输模式构型的协议。尽管这个美国国防部协议簇的详细信息已被完全普遍地公开,想要确定如此构思与设计的动机和原因仍有些困难。事实上,从最初的提议,到如今的标准,它的设计理念已经逐步进化演变了相当多。例如数据报文的想法,或无连接传输服务,在第一版论文中并没有作为重点得到特别的强调,而它们当今已是协议中最典型最突出的特征。另一个例子是将结构分层为IP层与TCP层。现在看来这是设计的基础,但它并未出现于最初想法中。所有这些在互联网设计的转变,都是通过不断地重复实现与测试过程产生的,直至最终标准的确定。互联网结构仍在发展。有时一个新的扩展会挑战传统的设计法则。但无论如何,对设计发展历史的了解,使我们对如今设计扩展产生的来龙去脉,有必要的知晓。ISO的无连接配置协议簇,已被互联网发展的历史染上传奇色彩。所以,对于互联网设计理念的理解,或许会对与ISO打交道的人们有益。2.基本目标DARPA互联网架构的首要目标是发展一个有效的技术,用来对现有的互相连通的网络进行多样而充分的利用。一些更详细的阐述会有助于弄清这个目标的具体含义。互联网的组成部分是网络,它们被连通起来以提供一些更大的服务。原本的打算是将原来的ARPANET与ARPA分组无线网络联通,目的是使分组无线网络上的用户们可以访问ARPANET上的大型服务机器。当时已经推断将会有其他种类的网络联通进来,尽管那时连局域网还没有出现。将现有的网络联通是一个选择,另一个选择是设计一个统一标准的系统,使它包容多种不同的传输媒介,这将组成一个多媒体网络。尽管这个方案可能提供了更高等级的集成综合,并会因此拥有更好的表现,但人们仍觉得将已存在的网络结构包含进互联网是必要的,如果互联网想要有实际意义上的作用的话。更进一步,网络范围描绘出控制的管理边界,因此这个计划的雄心是能够处理这个问题:将分离管理的实体们整合为一个实用的公共的设施。为实现多路复用而选用的技术是分组交换技术。其他供选方案,如线路交换,是本可以被考虑的,但是那些被支持的应用程序,比如远程登录,原本就使用分组交换规范提供的服务,而且那些即将被整合为一体的网络,本身就是分组交换网络。分组交换就这样被采纳为互联网结构的基础组成部分。基本目标的最后一个方面是对于这些网络互连的具体技术的推断。因为,存储并转发分组交换技术,正如在先前的DARPA工程即ARPANET之中已表现出的那样,可以被很好地理解,最上层的设想是,网络们会被联通于互联网分组交换层,即被称作网关。从这些假定出发,即可得出互联网的基本构造:一个分组交换通讯设施,在它内部,许多可区分的网络,通过被称作网关的通讯处理机连接在一起,网关实现存储并转发分组交换算法。3.次级目标在前一段首要目标的叙述中包含了一个词“有效的”,而没有给出任何定义来说明一个有效的网络互连应达到何种标准。下面的列表概述了一组更详细的目标,它们被制定用于互联网结构。1.互联网通讯必须继续进行,即使在失去网络与网关的情况下。2.互联网必须支持多种类的通讯服务。3.互联网结构必须可包容多种网络。4.互联网结构必须允许分布式资源管理。5.互联网结构必须是划算的。6.互联网结构必须允许主机连接,而且代价要小。7.互联网结构中使用的资源必须是可解释,有说明的。这一系列目标也许看来不过是一个清单,列出了所有网络理想的特性。非常重要的一点是要理解这些目标是按其重要性排列的,如果顺序有些变化,导致产生的将是一个完全不同的网络架构。比如,由于这个网络的设计目标是运行在军事环境中,这意味着有可能是在敌方领域中,存活能力被放在首要目标的位置,而把可说明性作为最后考虑的目标。在战时,一个士兵不会过于关心资源的详细说明,他更急于查阅任何可使用的资源,并使用某种操作方式迅速配置部署它们。尽管互联网的架构中留心了解释性,这个问题在设计的早期仅仅受到很微小的考虑,直到如今才被重视。而一个主要为商业使用的架构,则会完全将这些目标的顺序颠倒。同样的,结构要划算这个目标毫无疑问会在清单上,但是会次于一些其他目标,比如分布式管理,或者广泛支持多种网络。其他协议簇,包括一些更普及的用于商业的架构,已经被充分优化为一种特别的网络,例如使用中速电话线构成的长距离存储转发网络,为这个环境实现了一个很划算的解决方案。而如果使用其他类型的网络比如局域网来实现,就会有些糟糕。读者应仔细思考上述的目标清单,要认识到,这并不是一个“母亲般的关爱”那样的单子,而是一组严格根据优先级排列的指标,它们完全决定了在互联网架构内的设计策略。4.面对故障时的存活能力清单上最重要的目标是,互联网应该继续提供通讯服务,即使在网络与网关出现故障时。特别的,具体的,这个目标的意义可以解释为,如果两个实体正在通过互联网进行通讯,这时某个故障导致互联网被临时中断,之后它重新配置,以重新建立服务,这时那两个实体之间的通讯应该有能够继续,而不会不得不重建连接或者重新设定他们会话的高层状态,更加具体的,在传输层的服务接口处,此种架构没有提供与传输服务客户端通讯的设备,这导致消息发送者与接受者之间的同步可能已经丢失。此种架构的一个假设是,同步永远不会丢失,除非不存在任何一条原本可以取得任何种类通讯的物理通路。换句话说,在传输顶层,只存在一种故障,就是完完全全地分割开。这个结构的目的是完全掩盖住任何瞬时的故障。为了实现这个目标,描述正在进行会话的状态信息必须被保护好。状态信息的具体的例子,如被传送的数据包的数目,已被确认的数据包数目,或是未到达的流控制许可数目。如果网络结构中的下层失去了这些信息,它们将无法分辨是否已有数据丢失,那么应用层就不得不面对失去同步这个问题。此种结构要确保这种破坏不出现,也就是说那些状态信息必须被保护好不致丢失。在某些网络结构中,状态被保存在网络中间的分组交换节点中。这样,为了保护状态信息不丢失,信息必须被备份,因为备份本身的分散特性,用来确保备份健壮性的算法自身就很难构造。鲜有分布式保存状态信息的网络,提供任何种类的应对故障的保护机制。结构的另一个可选择的方案是,在网络的末端获取并收集这些信息,这实际上是在利用网络提供的服务。我把这种手段称为可信任的“命运共担”(一条绳上的蚂蚱?)。命运共担模型的内容是,如果实体本身被丢失了,那么失去与一个实体相关的状态信息是可忍受的。特别的,关于传输层同步的信息被储存在主机中,主机连接在网络上并且使用网络的通讯服务。与信息备份相较,命运共担有两个重大优点。一是它能够防护任何数目的中间媒介故障,然而信息备份仅能应付一定数目的故障(少于备份信息的份数)。二是,命运共担比信息备份容易建造得多。命运共担有很高存活能力的同时带来两个后果。首先,中间的分组交换节点,亦称网关,不能保有任何正在进行的连接的基本状态信息。相反,它们是无状态的分组交换机。这一类网络设计也被称为“数据报”网络。其次,与确保数据可靠送达的网络架构相比,主机被赋予了更多的信任。如果贮存于主机的,用来维持秩序并且管理数据的算法出现故障,那么那台机器上的应用将无法运行。诚然,存活能力是清单上的第一个目标,但它仍要次于联通现有的网络这个顶级目标。或许某个具体的多媒体网络设计中可以给出一个存活能力更强的技术。例如,互联网对于网络报告自己出现故障的能力做出很低的估计。这样,互联网就被迫使用互联网层面的机制来检测故障。这可能是一个更缓慢的,不很具体的错误检测。5.服务类型互联网结构的第二个目标是它应该,在传输服务层,支持多种类型的服务。根据如速度,延迟,可靠性等不同方面的需求,不同种类的服务被加以区分。传统类型的服务是数据的双向可靠送达。这个服务,有时被称为“虚拟线路”服务,它适用于于如远程登录或文件传输之类的应用。它是互联网架构中最先被提供的服务,使用的是传输控制协议(TCP)。人们很早就意识到,就连这个服务也有不同的变型,因为远程登录需要低延迟传输的服务,但对于带宽要求不高,而文件传输不大担心延迟,却非常在意高吞吐率。TCP在试图同时提供这两种服务。TCP最初的概念是,它基本能够足以支持任何所需的服务类型。然而,随着所需服务类型全部浮出水面,人们发现仅以一个协议,去为它们全体都提供支持,太困难了。第一个超出TCP提供支持范围的服务的例子是XNET,它是一个跨互联网的调试器。因为几个理由,TCP看来不适合为XNET提供传输。首先,一个调试器协议不应是可靠的。这个结论也许看来奇怪,但是在有压力或出现故障的情况下(这可能正是需要一个调试器的时候)要求可靠的通讯,会阻止一切通讯。如果能建立一个可以处理所有传输内容的服务,而不是坚持每个字节都被状态良好地传送,那将会好得多。其次,如果TCP要基本足够应对范围广阔的客户们,可以想象那会有些复杂。再次,在一个调试环境中期望为这些复杂的东西提供服务,看来是错误的,因为调试环境中可能连在操作系统中应提供的服务都缺少(例如对计时器的支持)。所以XNET被设计为直接运行在,由互联网提供的数据报服务层。另一个无法与TCP相适应的服务是数字化语音的实时传送,此服务被需求用于支持电话会议的命令与应用控制。在实时数字化语音(传送)中,最初级的需求不是服务的可靠,而是在传送时令延迟最小化,让传输顺畅化。应用层将模拟信号的语音数字化,将得到的二进制数字分包,并将数据包定期通过网络送出。这些数据包必须同样定期地抵达接受者,这样才能被转换回模拟信号。如果数据包并未按期望的那样到达,就不可能实时重建出信号。通过对于延迟波动控制观察得出的一个惊人结果是,网络中产生延迟最严重的源头,竟然是确保传输可靠性的机制。一个典型的可靠传输协议对丢失一个数据包的应答是,请求重新传输,并推迟传输任何后续的数据包,直到丢失的数据包被重传。之后它按顺序送出这个与之后剩余的数据包。出现上述情况时产生的延迟,可能是循环网络传送时间的数倍之多,并可能完全地破坏语音建立过程。相反,它很容易对付偶然的数据包丢失。失去的语音可以简单地被一小段静音替代,这在大多情况下并不损害语音对于听者的可理解性。但如果的确造成了影响,高层的修正可以派上用场,而且听者可以请求演讲者重述那段被损坏的片段。因此,在互联网架构开发的极早时期,人们就肯定不止一种传输服务会被需求,并决定架构必须准备好至少同时应付分别对可靠性,延迟,带宽有要求的传输。这个目标导致TCP与IP的产生,它们最初仅仅是架构中的一个协议,后来被区分入两层。TCP提供了一类特别的服务,即可靠的顺序数据流,而IP试图提供一个基础构件,这个构件是很多其他类型的服务无法提供的。这个构件就是数据报文,它同时已被采用于维持存活能力。既然一个数据报文的送达以及它的可靠性未
本文标题:Philosophy of the DARPA Internet Protocols” 论文翻译
链接地址:https://www.777doc.com/doc-1229028 .html