DARPA互联网的设计哲学

DARPA互联网的设计哲学

三月 03, 2022

这篇文章的题目非常好理解,\(The \ Design \ Philosophy \ of \ the \ DARPA \ Internet \ Protocols\),直译过来的意思就是关于DARPA互联网的设计哲学。作者是被称为两位互联网之父的其中一位:David Clark。但是很有意思的是,如果现在在网上只是单独搜索这个名字,热度已经远远消弭。

在百度引擎上搜索David Clark

但是很多人不知道的是,三十年来全世界人民使用的互联网以及它所赖以存在的结构基础,与这位伟大的计算机科学家有着密不可分的联系。

首先完整阅读整篇文章下来,我承认对于其中技术性的细节,以及一些专有的名词,其实是没办法掌握的。但是我依然被作者严谨的学术态度和条分缕析的陈列事实所打动,深刻地感知到了计算机科学的严谨性、适用性以及迷人的魅力。

TCP/IP协议是DARPA于1973开始设计和开发的,最开始在军事领域使用,后来发展为商业化的互联网络。IP协议被正式标准化为RFC791在1981年,TCP协议被正式标准化为RFC793也是1981年。就像该文所说,有时候很难判断,是什么动力或者原因导致协议被设计为这个样子,也就是协议为什么是这样。

在文章的介绍看来,我理解的他们所设计的互联网的基础架构就是,一个包交换的网络设备,使用一系列被称作为网关(gateways)的包交换处理器,并且连接不同的网络,执行存储并且转发数据包的算法。

接下来,文章描述了为了建立有效的互联,必须要进行怎么样的定义。作者按照他们的重要程度进行了下面的排序:

  1. 如果网络有丢包或者网关故障,网络通信还可以继续可用。
  2. 互联网必须支持多种通讯设备。
  3. 互联网的架构必须可以承载在不同结构的网络之上。
  4. 互联网的架构必须允许资源的分布式管理。
  5. 互联网的成本必须是可以接受的。
  6. 互联网必须降低主机的接入成本。
  7. 互联网中使用的资源必须是有限数量。

就像文章中自己所说的那样,为什么这七条数据会按照这样的顺序排列呢?:“上面的顺序是重要的,因为这表示了网络的设计宗旨。如果顺序不一样,那么可能设计出来的网络就不是现在这个样子的了。这涉及到网络设计中的取舍和折中问题。比如说这个网络因为是被设计为军事领域,因为系统可用性就是最重要的;而如果是商业网络,那么网络资源数量,部署成本就是重要的考量了。本质来说,上述目标就是网络设计的顶层需求,但是需求是有优先级的,只有最重要的特性满足了,低优先级的特性才被加以考虑。”

然后作者讨论服务类型对于网络设计的影响。并且摒弃了所谓的简单的copy的分布式发送,因为这样会导致互联网处理故障的能力有一定的上限,进而提出了“fate-sharing”的方法。

紧接着,作者讨论了服务类型对于互联网设计的影响,同时指出了TCP协议无法很好地支持XNET和实时的演讲,同时这也直接导致了UDP协议的出现。

进而,作者讨论了剩下的四条准则中出现的各种技术性的问题以及为什么会导致这样的协议准则的出现。最后连接提到了报文协议和TCP协议,列举了设计TCP协议背后的设计原因。

这篇文章最令我打动的一点就是作者从设计的驱动和需求的方面来考虑为什么我们要设计互联网,以及我们的互联网为什么会变成今天这个样子。这是很多当今的设计者和科研工作者都缺少的思考,很多时候,在阐述一个新技术的产生的时候,我们需要去深度地探讨为什么会产生这门技术,现实需求对于设计的规则有着怎样的影响,我想,只有想清楚了这些问题,也许技术的进步才能变得更快更深刻。

最后提到一个非常有意思的现象,在本世纪前叶提出了这样的一个问题:能否重新评估现行的网络架构,尤其是现在的网络架构对于很多电子商务、文件共享。

Clark说“现在的系统已经僵化。每一次网络应用的进步都是递进式的,新的应用越来越难在旧应用上添加功能。”所以,设计出新的网络架构是非常必要的。

但也有专家对目前是否有必要考虑设计新网络架构持怀疑态度。例如同样享有“互联网之父”的Robert Kahn就表示目前的架构能够满足应用需求。

这让我有了一个更深的认识:没有最优秀的技术,只有不断进步的技术。