1 导言
只有使用一种共同的语言才能进行有效的通信
这适用于人类、其它动物,同样也适用于计算机
使用一种协议,就是围绕一种共同的语言完成一系列共同的行为
由多个相互关联的协议组成的集合,称为一个协议栈(protocol suite)
指定了协议栈中的各种协议如何相互关联、如何分配任务的设计,称为协议栈的架构(architecture)或参考模型(reference model)
TCP/IP 是一个实现了互联网架构的协议栈,它起源于 ARPANET 参考模型 (ARM) [RFC0871]
ARM 自身又是受到了美国的 Paul Baran [B64] 与 Leonard Kleinrock [K64]、英国的 Donald Davies [DBSW66]、法国的
Louis Pouzin [P73] 在分组交换(packet switching)上的早期工作的影响
这些年来,还诞生了一些其它的协议架构(如:ISO 协议架构 [Z80]、Xerox 的 XNS [X85]、IBM 的 SNA [I96])
而目前最流行的就是 TCP/IP 协议架构
有一些有趣的书籍专门描写了计算机通信的历史与互联网的发展过程,如:[P07] 与 [W02]
TCP/IP 架构是由一些早期工作演变而来的,这些早期工作的目标是让多个不同的分组交换计算机网络能够相互连接起来 [CK74]
为了完成这个目标,使用了一系列的网关(后来被称为路由器),它们能够为互不兼容的网络提供翻译功能
由此诞生的 “ 串联 ” 网络或链式网(catenet)(后来被称为互联网络(internetwork))在今后将大放异彩
更多的提供了各种各样服务的节点将能够互相通信
早在这个协议架构完全开发出来的多年以前,人们就已经对一个全球性的网络能够提供哪些服务进行了设想
例如,在 1968 年,J. C. R. Licklider 与 Bob Taylor 就曾预测,利用一个全球互联的网络,人们能够建立起一个 “ 超级社区 ” [LT68]
他们曾说:
如今,在线社区无论是在功能上还是在地理位置上都彼此分离
每个成员都只能访问以自己所在社区为中心的进程、存储以及基础设施提供的软件能力
但现在,人们正在努力将这些彼此分离的社区相互连接起来,最终,形成一个超级社区
希望能够通过互联互通,让所有社区中的所有成员都能够共享整个超级社区所提供的程序与数据资源 …
所有这些,将组成一个不稳定的网络,一个内容与结构都在随时变化的网络
显然,在背后支撑了 ARPANET 以及之后的 “ 互联网 ” 发展的 “ 全球网络 ” 的概念
正是如今我们所享用的许多功能的基础
架构(不管是协议架构还是物理架构)实际上就是一系列的设计决策
决定了要支持哪些特性以及这些特性在什么地方进行逻辑实现
架构的设计比起科学,更像是一门艺术
在 Day 的文稿 [D08] 中对网络架构这个主题进行了更加广泛的讨论,这是为数不多的关于这个主题的材料