1.1 人类通信发展史
根据构词法,“通信”的英文“telecommunication”由希腊语前缀tele(表示远距离、远程)和拉丁语词根communicare(表示共享)构成。因此,“telecommunication”这个词的字面意思是“远程共享”。
从汉语的词源上看,“通信”一词在汉语中使用的历史也许并不算长。清末李伯元的《文明小史》中有:“到了美国约克,到了中国香港,还时时通信给他”。显然,当时的通信是指“用书信与人互通信息”。今天,“通信”这个词的外沿已经得到了极大扩展,它目前的大意是指双方或多方借助某种媒介实现信息互通的行为。如果按照当代汉语的方式理解“通信”,那么古代的互遣使节、飞鸽传书、烽火示警等都属于通信的范畴。
当然,古代和近代的各种通信方式并不在这几册图书的讨论范畴之内。本书作为华为信息与网络技术学院路由交换技术系列教材,数据通信(Data Communication)技术才是教材的重点,而数据通信技术在很多语境下可以视为是计算机网络(Computer Network)技术的同义词。所以,在本书的1.1节中,我们首先会对计算机网络,尤其是互联网(Internet)的前世今生进行介绍,以此充当全部三册教材的知识背景和理论铺垫。
在本节中,我们将互联网的发展历史分为5个阶段进行介绍。
·前网络时代:在这个阶段,数字计算机刚刚诞生。由于系统的限制,当时的计算机每次只能完成一项任务,计算机也都是由专门的操作员在本地完成输入操作的,由通信提出的远程共享理念还没有与计算机产生关联。
·萌芽阶段:在这个阶段,计算机网络仍然没有出现,但随着对复杂计算的需求越来越强烈,产生了一些为提升计算机利用效率而提出的概念,这些概念与计算机网络有一定的相似之处,并最终对计算机网络的产生发挥了启迪作用。
·雏形阶段:传统的电话网络不仅在容错方面表现堪忧,同时也极大地增加了通信成本。为了建立更加可靠的计算机通信网络,不同专业的人士提出了类似的主张,其中一项终成现实,这个最终得以落实的计算机网络正是现代互联网的雏形。
·诞生阶段:通信的实现需要双方建立统一的标准,为了满足越来越广泛的网络通信需求,人们制订了一系列通信标准。同时,网络发展受到了行政章程的制约,为了回避这些规章制度,一家基金会出资建设了新的网络来连接更多科教机构,互联网骨干就此问世。
·腾飞阶段:互联网的发展虽然不再受到政府制约,但基金会的规则仍旧妨碍了互联网的商业化。随着这些限制的松动,互联网在学术目的之外的功能被不断开发出来,更多应用的出现最终让互联网呈现出了爆炸式增长的态势。这种态势一直延续至今,并且在近十年愈演愈烈。
下面,让我们先从“前网络时代”阶段说起。
1.1.1 前网络时代
说到计算机网络,当然首先要从计算机说起。
早期计算机每次只能执行一项任务,它的工作方式就是按照同一个指定程序,根据用户输入的信息输出计算结果。这种流水线式使用同一个程序对输入数据执行计算,并输出计算结果的操作称为批处理。由于计算机每次只能执行一项任务,因此这类计算机采用的系统称为单用户批处理(Batch Processing)系统。
不过在那个年代,限制计算机使用效率的不只是操作系统,计算机的计算能力本身也相当有限,而且计算机输入/输出信息的方法更是极为笨拙:用户需要把输入信息制作成一沓厚厚的穿孔卡片,将卡片插入到读卡机(另一台低端计算机)中,等待读卡机将这些卡片中的信息录制到一盘磁带上,再由专门的人员将磁带插入负责计算这些数据的高端计算机中,让计算机执行程序完成计算;在计算机完成作业后,相关人员再把输出的磁带拿到读卡机中打印计算结果,整个过程常常需要耗费几小时甚至几天的时间。受限于计算机本身的计算能力和这种繁杂的数据输入方式,单用户批处理系统倒是没有对计算结果的效率形成瓶颈。
随着计算机计算能力的增强,它们具备了同时执行多项任务的潜力,单用户批处理系统低效的缺陷也就日渐显露了出来。于是,人们对单用户批处理系统进行了改进,推出了多道批处理系统,让计算机可以将自己的计算资源同时分配给多名用户的操作任务。
到此为止,限制计算机资源有效利用的因素自然也就发生了变化。
注释:
对操作系统发展史感兴趣的读者,可以参考特南鲍姆教授(Andrew S.Tanenbaum)撰写的《现代操作系统》(MODERN OPERATING SYSTEMS),教授在该书第1章中对操作系统发展的历史进行了详细而又有趣的介绍。
1.1.2 萌芽的产生
20世纪50年代,计算机还是一类价格极其昂贵的产品,即使对于大型研究机构而言,给每个研究人员配备一台计算机的想法也如同天方夜谭。虽然大范围添置计算机并不可行,但多道批处理系统的问世使得多名用户能够同时利用一台计算机中的计算资源,这就催生了图1-1所示的一类通信系统,这类系统叫作分时系统(Time-Sharing System)。
图1-1 分时系统示意图
在分时系统中,计算机的输入系统也相应地获得了改进:每位计算机操作者分配到的是一个由显示器和键盘等外设组成的终端,这些终端通过控制线路与计算机相连,操作人员使用终端上的输入设备,通过控制线路向计算机发出指令,而计算机则将反馈通过控制线路发回给终端,终端再通过输出设备将计算机的运算结果提供给操作人员(早期分时系统的终端是电传打字机,操作人员需要通过打字机打印出来的文字来观察计算机的反馈结果)。
连接终端与计算机的线路最开始是直连的串行线缆,后来发展为终端和计算机可以各自通过调制解调器连接到电话网络。从这时开始,操作人员得以通过电话网络对计算机进行远程管理。
无论分时系统及其背后的理念与时下某些最热门的技术看上去有多么类似,这个系统都还不是一个计算机网络,因为在这个系统中,通信的双方分别是终端和计算机。换言之,这个系统并没有实现计算机与计算机之间的通信。这种通过终端连接调制解调器来远程管理计算机的分时系统存在一个显著的缺陷,不过,这项缺陷给一位计算机专家带来了灵感,正是这位计算机专家改进这类通信系统的实验报告,成为了今天互联网的理论基础。关于这位专家和他起草的实验报告,会在下文中提到。
这里提前说明一点:计算机网络发展的下一个阶段与两个概念密切相关,正确理解这两个概念及它们之间的差异,除了有助于读者理解计算机网络的发展历程之外,对于学习计算机网络的其他知识也起着重要的作用。这两个概念是:
·电路交换;
·包交换/分组交换。
这两个概念正是1.1.3节的重点内容。
1.1.3 互联网的雏形
1957年,苏联第一颗人造卫星的成功升空让美国本土遭受核打击成为现实的可能。在这样的背景下,美国知名的智囊团兰德公司希望,能够在美国国内建设一个高度可容错的通信系统,这个通信系统必须在国家遭受核攻击之后,依旧能够维持端点之间的通信。在当时,整个美国的军方通信都是依赖公共电话网络进行传输的,而公共电话网络采用的是一种称为电路交换的通信方式,这种网络恰恰是相当脆弱的。
所谓电路交换,是指通信双方在开始通信之前,需要通过呼叫建立机制在通信双方之间建立一条独占的物理通道,双方此次通信完全通过这一条物理路径进行发送,在通信结束后,再断开这条物理通道,其示意如图1-2所示。
图1-2 电路交换网络示意图
这种通信方式之所以脆弱,是因为一旦通信双方之间通过呼叫建立的物理通道断开,通信即告终止。新的通信系统必须有能力纠正电路交换系统的这一弊端。
设计这个通信系统的工作,交给了刚满33岁的波兰裔美国人保罗·巴兰(Paul Baran)。在随后的3年时间里,保罗通过兰德公司发布了多项报告。在1964年发布的《论分布式通信》中,保罗首次提出了分布式网络的概念,这个网络并不依靠专用线路独占地连接通信各方,它可以在一个节点出现问题时,通过其他节点将后续信息“路由”给另外的节点,然后继续发送给目的设备。而这个分布式网络的重点,就是需要将信息分成很多“消息块(Message Block)”独立进行发送。
分布式网络的概念在当时遭到了AT&T公司某些工程师的嘲笑,并且无疾而终。这些人甚至指责保罗“连语音通信的概念都没搞清楚”,他们认为要想实现通信,建立专用的物理线路必不可少。
AT&T的观点没有多久就遭到了事实的驳斥。在大西洋彼岸,一个名叫唐纳德·戴维斯(Donald Davies)的威尔士人在英国国家物理实验室(NPL)成功发明了这样一个分布式通信网络,并将试验的结果公之于众。这位英国人决心搭建一个不同于电话网络的通信网倒不是出于国家利益和意识形态的考虑,而是在他参观了美国麻省理工学院(MIT)的新型分时计算机系统(详见1.1.2节“萌芽的产生”)后,他发现了电路交换系统的另一弊端,即计算机的每个用户都必须将电话线保持为拨通状态,才能连接到这台计算机,这样独占线路的通信方式是一种对资源的巨大浪费。为了节省通信成本,他设计研发了这个全新的通信网络。这个网络在理念上与保罗·巴兰的设想不谋而合,是第一个付诸实践的分布式网络。不过,这名威尔士计算机科学家并没有选用“消息块”作为通信单位的代称,为了让这个概念能够更好地通过翻译传递给使用不同语言的国家,他将通信单位命名为“包(Packet)”,而他所设计的网络因此也被称为“包交换网络(Packet Switching)”。
注释:
大多数早期将网络技术引进中国大陆的学者都将Packet(s)翻译为了语义比较晦涩的“分组”,因此Packet-Switching Network在中国大陆也译作“分组交换网络”。鉴于在现实工作中,“(数据)包”的使用远比“分组”频繁,而且使用“(数据)包”对翻译“Packet”也更加符合唐纳德·戴维斯命名数据块的初衷,所以本教材会在后文中统一采用“(数据)包交换网络”这一术语。
包交换网络不需要在通信各方之间建立独占的通道,数据的发送方会将通信数据划分成很多的数据包,而通信的中转设备有能力根据网络的情况,为各个数据包独立选择发送的路径。因此,如果中转设备在转发数据的过程中发现网络有一部分断开,它们就会选择其他路径转发后续的数据包。这种做法保证了信息传输不会因部分网络故障而中断。包交换网络的示意图如图1-3所示,在该示意图中,每两条线之间的交点可以理解为存在一台转发设备。
图1-3 包交换网络示意图
注释:
如果类比,那么包交换网络类似于通过快递公司寄送包裹,任何一位快递员或快递网点如果临时无法提供服务,对于顺利投递后续包裹几乎不会产生任何影响,由于快递业务自身规模很大,因此通过快递公司投递包裹成本也比较低廉。不过,通过快递公司投递包裹,由于不是专人服务,因此遇到快递爆仓经常会出现严重的延时情况。先投递的包裹后至,后发送的包裹先到也屡见不鲜。
而电路交换系统则与找专人跑腿代送包裹比较类似,这种家到家的专人跑腿服务在效率上更有优势。由于是同一个人进行递送,因此包裹到达的顺序几乎肯定与发送的顺序一致。但一旦这位代跑腿人因病因事无法继续提供服务,后面的包裹必然无法再通过他/她进行递送。另外,这种门对门的服务方式本身,不仅限制了跑腿业务的大规模扩展,也让每一次服务的成本相对比较高昂。
包交换网络的成功实施引起了一个人的注意,这个人名叫拉里·罗伯茨(Larry Roberts),他是美国国防部高级研究计划局(ARPA)的项目经理。由于传统电话网络线路和通信节点往往很不可靠,罗伯茨当时正在寻求建立一个容错能力强,能够在一些分支网络中断时依旧实现通信的网络。在看到唐纳德关于包交换网络的报告后,罗伯茨公布了一个计划,那就是使用包交换理论建立一个付诸应用的网络。当这项称为ARPAnet的计划在1969年年底上线测试时,它仅仅连接了SRI(斯坦福研究院)、UCSB(加州大学圣塔芭芭拉分校)、UCLA(加州大学洛杉矶分校)和UTAH(犹他大学)这4个节点(如图1-4所示)。这4个节点全部位于美国西部,而且除UTAH之外,其他3个节点全部位于加利福尼亚州的沿海城市。不过,仅仅4个月后,这个网络就将自己的节点扩展到了美国东海岸的马萨诸塞州。
图1-4 最初的ARPAnet连接示意图
ARPAnet并没有采用直连通信各方计算机的方式。每一台连接ARPAnet的计算机都需要连接到一台称为IMP(全称为“接口消息处理器”)的设备上,各个站点之间的IMP相互连接,负责将计算机发送过来的消息转发给与目的计算机相连的IMP,如图1-4所示。当IMP之间的线路出现故障时,IMP可以通过运算找到另一条路径,照旧将消息转发给目的设备。这正是ARPAnet通过包交换网络理论提供高容错通信的实现方式,而IMP正是当今网络骨干设备——路由器的祖先。
在此后的十余年间,这个包交换网络迅速扩展,连接了同期产生的大量网络,成为今天互联网的雏形。在扩展过程中,ARPAnet的制约因素也逐渐显露了出来。
1.1.4 互联网的诞生
奔驰汽车在保养时不能更换凯迪拉克汽车的空气滤清器,这是因为凯迪拉克空气滤清器的尺寸、形状、大小和奔驰车的完全不同,所以凯迪拉克的空气滤清器无法安装到奔驰汽车上。因此,如果人们希望所有汽车都可以任选4S店进行保养,那就必须有一个世界性的汽车行业协会或者某家拥有垄断地位的汽车公司,对于汽车所有可更换零部件的设计、生产、装备方式制订一套详细的标准。这样一来,不遵循这个标准生产汽车的企业就会因为它们的车辆维修保养方面的限制,而在市场竞争中处于劣势,从而使其最终要么选择遵循标准,要么被市场淘汰。
如前所述,ARPAnet最初连接了4个节点,这4个节点的计算机所使用的正是相互完全无法兼容的主机和系统。前面我们通过汽车的例子说明,彼此并不兼容的异构系统之间要想完成协作,需要有一套所有这些系统都能遵循的标准,每个系统按照这个共同标准生成的数据,对于其他系统才有可读性。在通信领域,称这样的共同标准为协议。
在ARPAnet中,最大的问题是IMP与各个不同类型的主机之间如何通信。最初,ARPAnet制订了一个如今被称为“1822协议”的标准。这个协议在今天看来极为简单,但它规定了计算机在与IMP进行通信时,发送和接收数据的格式。
注释:
1822并不是年份,而是拿到了实施ARPAnet网络合同的公司(BBN技术公司)为制订协议细则而起草的报告的编号。
1822协议的限制很快体现了出来,它定义的格式将计算机所有应用需要发送的数据完全统一了起来,因此接收方在接收到消息时,无法根据消息本身判断出这些代码是由发送方的哪个应用提供的,进而也就不知道这些代码所描述的数据需要用自己的哪个应用来进行解读。换言之,1822协议无法解决计算机之间多个应用同时进行通信的情况。
不统一标准就无法实现通信;统一标准,则无法区分通信的应用。这样的困境很快催生了网络技术领域最重要的思想。
为了弥补1822协议的不足,一个名为网络控制程序(NCP)的协议横空出世。它在1822协议的基础上,制订了一对主机应用之间建立双向通信的标准和一个主机应用向对方发送单向数据的标准。
首先用1822协议制订的标准来保障主机与IMP之间的数据兼容,实现双方主机之间的消息互通;然后再用NCP协议制订的标准保障双方主机应用之间的消息互认。NCP协议的这种功能分层思想,对网络世界造成的影响远远超越了NCP协议本身。
然而,1822和NCP协议很快也无法满足网络世界技术发展的需求。在ARPAnet同期,一些其他的数据包交换网络也相继问世,用网络来连接网络,而不只是用网络来连接计算机,成为一种自然而然的需求。显然,无论是为了实现计算机之间互联所制订的1822协议,还是为了在主机应用之间建立连接所制订的NCP协议都无法满足这样的需求。网络领域需要一个网络互联协议(Internet Protocol)。
1974年5月,IEEE(美国电气和电子工程师协会)发表了一篇题为“实现数据包网络互联的协议(A Protocol for Packet Network Intercommunication)”的论文。这篇论文定义了互联网世界中最重要的协议之一,即传输控制协议(TCP)。而今天我们耳熟能详的网络互联协议(Internet Protocol,简称IP协议)只是TCP协议中的一个组件。后来,为了让不同应用能够根据自己的流量特点和通信需求灵活组合协议功能,IP协议根据功能分层原则成为一个独立的下层协议。而这篇论文所阐述的通信模型,也由此开始被人们称为TCP/IP模型或者TCP/IP协议栈。
为了帮助不相兼容的网络实现对接,TCP/IP协议栈无论对于逻辑层面的应用进程,还是物理层面的硬件标准都提供了广泛的支持。当所有通信设备都采纳TCP/IP协议栈定义的标准时,这些设备所在的网络也就形成了一个具备互联功能基础的环境。换句话说,这些拥有不同逻辑环境和物理标准的异构网络之间,也就有机会通过TCP/IP协议栈,对寻址、可靠传输等方案获得一致的标准,这个标准正是实现通信的前提。
注释:
TCP/IP模型、TCP协议和IP协议的概念相当重要,因此本书后面会有专门的章节进行详细的介绍,因此为了避免重复,这里不做进一步解释。
限制ARPAnet发展的因素除了技术层面的问题之外,还有政治层面的问题。当时,虽然一些研究机构已经意识到资源共享会给研究带来积极影响,但它们却无法根据自己的需求自由连接到ARPAnet中,因为连接到ARPAnet要求相关机构拥有美国国防部的合同才能获得授权。
1980年,NSF(美国国家科学基金会)决定投资500万美元建立一个计算机网络,让那些无法连接到ARPAnet的研究机构同样可以享受资源共享带来的利好,这个网络被命名为计算机科学网络(CSNET)。1985年,NSF更进一步,它在美国投资的5家研究机构和高校中各建立了一个超级计算机中心,并通过一张骨干网络将这5个超级计算机中心,连同NSF此前投资创办的美国国家大气研究中心这6个节点连接了起来。除了这6个节点之外,这个骨干网还连接到了许多区域性科研教学机构,而这些机构又进一步为无数高校、科研机构、实验室、图书馆提供了连接。如图1-5所示,分为骨干网络、区域性网络和接入网络的3层网络合称为NSFNET。
图1-5 最早的NSFNET
此前,为了实现广泛的网络互联,ARPAnet决定自1983年元旦起,将自己的主机协议由NCP全面切换为TCP/IP。有了ARPAnet的先例,NSFNET在一开始就以TCP/IP协议作为网络互联的协议。而NSFNET,就是当今互联网骨干网的最重要组成部分。
1.1.5 互联网的腾飞
NSF的拨款章程规定,其款项需要用于“促进和支持计算机与其他科学技术的发展和应用,并主要用于科技研究和教育”。这个规定间接否定了NSFNET用于商业目的的可能。
然而,一切制度和规定都难以违背时代发展对变革提出的要求。1989年夏天,NSFNET在具体执行方面出现了一点带有试验性质的变化。MCI通信公司获得了FNC(联邦网络互联委员会)的许可,将自己的商业电子邮件系统MCI Mail连接到了NSFNET。几乎与此同时,另一些公司也陆续获得了FNC的许可,将自己的系统连接到了NSFNET。使用这些商业系统的用户发现,他们虽然使用的是此前互不相连的电子邮件运营商,但他们现在可以通过互联网相互发送电子邮件了。
另一方面,NSFNET大获成功给NSF换来的结果却是,NSF在随后的几年都要不断支撑这个网络进行扩容,从56kbit/s到448kbit/s再到1.5Mbit/s。这是一个无底洞,NSF不能这样继续依靠自己的投资来支撑这个网络的发展。
于是,NSF在1991年终于修改了自己的章程,它将NSFNET交给了一家名为ANS(高级网络与服务)的公司,这是一家由MCI、IBM和MERIT组成的非营利企业。自此,NSFNET改名为ANSNET。这种由政府建立研究型网络,最后交由企业运行的模式,后来被众多国家效仿。
在网络商业化的同时,另一件导致互联网最终走进千家万户的大事正在欧洲的一个内陆国家发生。1989年,CERN(瑞士欧核中心)的英国雇员提姆·伯纳兹·李(Tim Berners Lee)提议建立一个信息管理系统。同年,他通过互联网成功在一个超文本传输协议(HTTP)客户端和服务器之间建立了通信;1990年,他编写了第一个网页浏览器;1991年,他和同事制订了第一个成文的HTTP标准版本;同年,他用一个名为“HTML标签”的文件对HTML语言进行了详细的描述。1994年,他陈述了用URL地址代替超链接资源的提议。十年后的2004年,提姆·伯纳兹·李因发明了万维网,因而被伊丽莎白二世女王陛下封为爵士。
科研时代互联网的应用几乎仅限于实现电子邮件、远程登录和文件传输等,功能有限,界面古板,操作复杂。而万维网的出现大大丰富了互联网的观感,涌入互联网领域的商业公司或以万维网作为平台,为用户架设了各种各样的应用,如在线搜索、在线购物、在线交友等等;或从系统出发,为互联网用户创造了大量方便友好的软件,如浏览器软件、即时通信软件、文件共享软件等。尽管进入21世纪以后,互联网行业的泡沫化曾经几度动摇过人们对这个行业的看法,但伴随着质疑而生的新应用、新技术却层出不穷,让互联网逐渐成为人们日常生活不可或缺的组成部分。
当然,对于万千普通用户来说,互联网的腾飞阶段仅仅拉开了人们使用互联网的序幕。在很多年之后,或许在后人再次回顾互联网发展的历史时,会把我们现在所处的时代归类为某种网络应用模式的萌芽阶段,我们热切期盼那时的教科书中,会包含本书某些读者的大名。
在回顾了互联网的历史之后,我们接下来用1.2节的内容概述一下网络究竟给我们带来了怎样的影响。