注意,建立起一个物理的网络通路意味着其中所有的节点都将它们的相关链路准备好了,下面仅为所涉及的两个终端服务。 在电路交换的情形,每个网络节点关于这方面的知识是在通路建立时确定的,会话过程中不需要再考虑。 注意,在电路交换的情形,一旦整个链路建立好了,会话中节点是不需要存储消息的。 参阅文献,Leonard Kleinrock,“Information Flow in Large Communication Nets”。 参阅文献,Lawrence G. Roberts,“Internet Chronology”。 因此,我们强烈建议研究网络技术的博士研究生至少读一遍Leonard Kleinrock的博士论文开题报告。
这个想法可以更加进一步。前面我们提到,有的消息可能很大。这就会引出两个问题:第一,如果消息太大,节点根本存放不下怎么办?第二,对于很大的消息,如果传送结束时发现有了错误需要整个重传,会导致重复传输大量的曾经正确传输了的数据。于是,人们考虑将消息分成若干分组(packet),每个组的大小不得超过某个上限,终端以分组为单位向网络发送数据,网络中的节点以分组为单位进行数据转发,接收端则将陆续到来的分组装配成完整的消息。这种方式即为互联网运行的最核心观念:“分组交换”(packet switched)。 不难理解,分组交换继承了消息交换的优点,同时缓解了上面提到的两个问题。然而,新的困难或者说疑惑也出现了:一个消息被拆成多个分组,在网络中被动态转发,有些顺利地、正确地到达了目的地;但有些则可能出错,需要重发;即使是顺利到达的分组,顺序也不一定与发送的时候相同;更复杂的是有多个终端会同时在如此发送消息,网络中的一个节点会同时接收来自不同终端的分组,因此尽管节点的存储容量能够比一个分组大许多,但如果大量分组来不及被转发而暂存在节点中,则可能没有足够的剩余空间来存储新到的分组,从而要被丢弃,等等。我们为什么相信这样一种微观上十分“混乱的”情形最终能在宏观上“井井有条”起来? 的确,最初人们都不相信分组交换的思想能够成为现实。是Leonard Kleinrock在1961年的一项基础性工作,使美国互联网建设最初的负责人Lawrence G. Roberts相信了分组交换是能够成功的,并基于这种思想创建了互联网。几十年来,互联网的规模扩大了成千上万倍,各种技术也变化、进步了许多,但分组交换的思想一直没变,足见其重要的基础性作用。 Leonard Kleinrock的什么工作起了这么大的作用呢?按照我们现在的话说,是他的博士论文开题报告!他在那个开题报告中研究了些什么使得Lawrence G. Roberts相信了分组交换思想呢?作为本科生教材,本书不可能详细讨论Kleinrock教授对互联网的基础性贡献。这里只是指出,采用如图2所示的网络节点基本模型,Kleinrock教授在他的报告中提出了如下问题,对于它们的研究为互联网采用分组交换奠定了理论基础。图2 分组交换网络节点的基本模型 考虑两个网络节点之间,一个分组被转发,所需要的时间服从什么样的概率分布?并特别关心该分布的平均值。
参阅文献,Vinton G. Cerf and Robert E. Kahn,“A Protocol for Packet Network Intercommunication”。 多个网络连接起来不还是一个网络吗?为什么非要强调多个网络?这是技术发展与管理格局相互促进和依存的一个典型例子。不同的机构或组织建设的网络,在许多技术条件上可能是很不同的,让谁改变都不容易,但又都有相互连接起来的愿望,于是就要有一种技术能在这种条件下实现这种愿望。 初学者对于协议层次的观念常常会感到困惑。一个图上画了一层层的概念从计算机运行来说到底意味着什么?对于了解了一些程序设计概念的读者来说,可以方便地将层次理解为函数的嵌套调用。每一层提供的功能相当于一组函数,它们的实现要通过调用下一层的函数来完成。
互联网的核心协议TCP/IP正是基于这种设计思想而提出的。TCP/IP协议最早源自Vinton G. Cerf和Robert E. Kahn在1974年发表的一篇论文。如果说Kleinrock的论文是从理论上阐述了分组交换的可行性,Cerf和Kahn的论文则是描述了分组交换的一个工程实施解决方案。特别值得一提的是,该方案论述的不只是一个网络中的分组交换问题,而是充分考虑了分组交换在不同的网络之间如何实现的问题,于是就有了“互联网”之说,即将多个网络连接起来形成的网络。这里,我们看看该论文的摘要:本文提出了一个支持在不同的分组交换网络中共享资源的协议。该协议允许不同的网络有不同的分组大小,同时允许传输出错、分组定序、流量控制、端到端错误检测,以及逻辑(在通信终端上的)进程与进程间连接的创建与撤销。考虑了一些实现的细节,对网际路由、记账、超时等问题都有所讨论。TCP/IP协议清晰地描述了互联网的体系结构,将规范节点转发行为的协议称为网际协议(Internet Protocol,IP),它不仅要在终端上运行,还要在网络节点(路由器)上运行;而将处理出错等问题的协议称为传输控制协议(Transmission Control Protocol,TCP),它只是在终端上运行。 IP协议的功能比较单纯,或者说它是一个简单协议,但几乎就是互联网所提供的功能的全部了(注意,我们区别网络设施与终端),TCP功能由终端来实现,因此互联网又叫“IP网”。任何需要在互联网上运行的数据终端,首先要实现IP的协议功能,即要让分组能够从该设备上发给网络节点,并能从网络节点上收到分组。其次,它需要在IP之上实现TCP协议功能(或者后续章节会讲到的UDP协议),通过TCP协议修正分组在IP网络中出现的各种传输差 图3 互联网协议层次示意图错,实现数据终端之间可靠的数据传输。最后,通过TCP处理后的数据提交给不同的应用,实现与设备应用相关的功能。由此,我们可以初步体会到互联网协议层次的观念。图3是一个示意图,其中IP层也称为网络层,传输层包含TCP和UDP,网络层和传输层是互联网的核心协议,即我们常说的TCP/IP(这是一种习惯,尽管也可以是UDP/IP)。TCP/IP之上,可以是任何以TCP/IP协议为基础实现的网络应用,如电子邮件、Web应用、网络电视等。TCP/IP以下的底层我们称其为链路层和物理层,可以理解为数据在不同的链路上传输使用各种传输技术。图3用较宽的并且开放式的图形来描绘这两个层次,意味着其内涵的丰富,而IP层较窄,意指其相对比较简单。 在介绍了互联网的基本协议结构之后,我们可以来谈论“计算机网络”与“互联网”的区别了,这是本教材名称的两个关键词。一般而言,计算机网络是一个非常一般的术语,任何将若干计算机相互联结起来的系统都可以称为是计算机网络。互联网(Internet)是一种计算机网络,或者说是以TCP/IP为核心协议的计算机网络,任何运行TCP/IP协议的数据终端连接到互联网上,都可以实现彼此之间的数据通信。当然,完全可以有不以TCP/IP为核心协议的计算机网络,历史上曾经有过,从20世纪80年代后期开始逐步被淘汰,现在成了IP的一统天下,但这不意味着今后不会出现新的网络!人们有时讲“Internet”和“internet”,它们是有区别的。“Internet”指的是我们现在感受到的这个互联网,而“internet”则是任何同样以TCP/IP为核心协议的计算机网络,但不一定和“Internet”相连。 以上所述可以理解为支撑互联网运行最核心的几个基本概念,在此提出并不是要求读者对这些概念能够有一个清晰而透彻的理解。它们可以看成是计算机网络与互联网技术的“纲”,把握住它们有助于有效理解教材中所涉及的其他知识。也许,当我们读完了整本教材之后,再回过头来读这部分的内容,对此会有更深刻的体会和新的认识。以下我们简述本教材各章涵盖的主要内容。 第1章,计算机网络概述。计算机网络与互联网,从憧憬、理论到实践,追溯起来也有了40多年的历史。许多计算机网络教材都有关于这一段历史的描述,互联网上也有大量这方面的详细资料,包括技术进步的历程、关键人物的事迹等。因此,我们不再赘述这方面的内容,读者可以从本教材最后提供的参考书和文献中了解这方面的内容。这一章我们以一种步步引导的方式,从最简单的两台计算机之间直接连接,到多台计算机之间通过某种网络设备进行数据转发和传递,最后再到将不同技术的网络相互连接构成一个更大规模的网络,让学生很快对计算机网络的基本组成元素和相关技术有一个初步而具体的认识。随后我们引入网络体系结构的概念,以结构化的方法将网络系统划分成功能和特点各不同的组件,并讨论各组件之间的相互合作关系。 第2章,两个节点之间的数据传输。从这一章开始的连续五章可以看作是本教材的中心内容。所谓“数据传输技术”,讲的是用什么样的物理介质(形成的信道)将数字化信息从一台计算机(信息的发送方)携带到另一台计算机(信息的接收方),从而形成所谓的“通信”;在这个传输过程中,如何发现数据传输出现的差错(这是不可避免的),并且修正这些传输差错;如何处理发送方和接收方处理速度不一致的问题;为了充分利用资源,多个发送方和多个接收方怎样能够共享同一个信道等。 第3章,分组交换技术。分组交换是计算机网络的核心技术之一。它要解决的基本问题是如何让大量在地域上分布的计算机系统能够以可以接受的代价相互通信;解决这个问题的基本假设是那些大量分布的计算机并不会同时要求相互通信。在这方面,不同技术(电路交换、分组交换)竞争的焦点在于代价和所能提供的服务质量之间的权衡,而对于服务质量的要求又是因服务类型而不同的。 第4章,局域网技术。从应用上讲,单独的局域网的概念现在是越来越淡化了。在一个单位信息技术部门工作的工程师们现在被要求的常常不是“在那个楼里建一个局域网”,而是“让互联网(或者是企业网)延伸到那个楼里去”。具体工作可能差不太多,但重心不同。尽管如此,将一个楼里的计算机都连起网来,无论是否再一起连到互联网上,用到的主流技术都是一样的,即以太网技术,它就是第4章的基本内容。 第5章,网络互联。当我们有了一个个网络(局域网、企业网,假设它们没有连到互联网)之后,如何再将它们互联起来,形成一个能够跨越网络交换信息的平台?历史上有过各种尝试,但最后证明IP技术是能最有效地实现这个目标的技术,它导致了现在无处不在的互联网或者因特网。本章结合路由器(实施IP技术的核心设备)的功能,详细介绍IP技术,通过讨论在贯彻“IP every where”过程中所遇到的各种困难(技术的、管理的)及其解决方案,读者既能感受到IP技术内涵的简洁,也能体会到它外延的丰富。 第6章,端系统之间的数据传输协议。按照设计,IP技术解决的是将一个数据分组从一台计算机上,经过若干个路由器,送到另一台计算机上,IP既不管该数据分组归接收计算机上的哪个进程处理(注意,我们的计算机现在都是多进程的),也不管在传送的过程中是否出现了错误。这就是本章要讨论的。读者会看到,为了解决第一个问题,简单的UDP就够了;但为了彻底解决第二个问题,人们似乎不得不引入相当复杂的TCP,尽管在我们的表述中回避了不少细节。 第7章,网络应用。在TCP/IP之上,是百花齐放的网络应用。电子邮件(E-mail),文件传送(FTP),远程登录(Telnet),网页浏览(Web),即时通信(IM),对等计算(P2P),等等,不一而足。全面介绍它们既不应该、也不可能是本教材的任务。这一章旨在从实现的角度,简要介绍几种不同特点的应用,使读者对TCP/IP如何能和各种喜闻乐见的网络应用联系起来有一个初步的认识。后续课程对于这些应用会有更详细的介绍。 第8章,网络安全。鉴于《规范》建议有一门关于安全的后续课程,因此本教材介绍安全问题时更多的是以我们前面所学习的网络技术为背景知识,针对网络系统存在的安全隐患,学习一些基本的网络安全技术和控制机制。基于这些基本的网络安全措施,我们介绍几种目前因特网采用的安全协议和标准,这些安全协议仍然以TCP/IP为基础,将安全机制封装在不同的层次结构中,实现不同级别和目标的安全保护需求。 最后,我们列出了一些参考书籍作为辅助性读物,同时也提供了一些与网络技术和标准相关的官方网站,读者可以通过这些资源进一步了解并扩充相关的技术知识。 如同《规范》中所论述的,信息技术是当代计算机学科发展的一个重要方向,网络技术是该方向的一个核心内容。然而,如何根据信息技术的人才培养定位,编写出一本适合这个方向的网络技术教材,对我们是一个挑战。本教材的构思和基本内容主要来自北京大学计算机专业辅修学位的多年教学实践,并根据《规范》的要求进行了适应性调整,教材的初稿在北大计算机专业辅修学位班上试用过两个学期,终稿采纳了同学们的一些意见和建议。尽管如此,鉴于作者的学识水平以及对信息技术人才的理解所限,书中定有不少欠妥甚至谬误之处,谨盼读者不吝指正。