2.1.2进程通信
在构建网络应用程序前,也需要对运行在多个端系统上的程序的互相通信情况有一个基本了解。在操作系统的术语中,进行通信的实际上是进程(process)而不是程序。进程可以被认为是运行在端系统中的程序。当进程运行在相同的端系统上的时候,它们使用进程间通信机制相互通信。进程间通信的规则由端系统上的操作系统确定。在本书中,我们对运行在同一台主机上的进程间的通信不感兴趣,而只关注运行在不同端系统(可能具有不同的操作系统)上的进程间的通信。
不同端系统上的进程通过跨越计算机网络交换报文(message,)而相互通信。发送进程创建并向网络中发送报文,接收进程接收这些报文并可能负责回送报文。图2-1举例说明了进程是如何通过使用5层协议栈的应用层而互相通信的。
1.客户机和服务器进程
网络应用程序是由成对的进程组成,这些进程通过网络相互发送报文。例如,在Web应用程序中,一个客户机浏览器进程与一台Web服务器进程交换报文。在一个P2P文件共享系统中,文件从一个对等方中的进程传输到另一个对等方中的进程。对每对通信进程,我们通常将这两个进程之一标示为客户机(cllent),而另一个进程标示为服务器(server)。在Web中,浏览器是一个客户机进程,Web服务器是一个服务器进程。对于P2P文件共享,下载文件的对等方被标示为客户机,上载文件的对等方被标示为服务器。
你或许已经观察到,在P2P文件共享等应用中,一个进程可以既是客户机又是服务器。实际上,在P2P文件共享系统中,一个进程既能上载文件又能下载文件。无论如何,在给定的一对进程之间的通信会话中,我们仍能标示一个进程为客户机,标示另一个进程为服务器。我们定义客户机和服务器进程如下:
在给定的一对进程之间的通信会话中,发起通信(即在该会话开始时与其他进
程联系)的进程被标示为客户机,在会话开始时等待联系的进程是服务器。
在web中,一个浏览器进程向某Web服务器进程发起联系,因此该浏览器进程是客户机,而该Web服务器进程是服务器。在P2P文件共享中,当对等方A请求对等方B发送一个特定的文件时,在这个特定的通信会话中对等方A是客户机,而对等方B是服务器。在不会混淆的情况下,我们有时也使用术语“应用程序的客户机端和服务器端”。在本章的结尾,我们将逐步讲解网络应用程序的客户机端和服务器端的简单代码。
Kurose和Ross两位教授的这本书是目前国际上*为流行的计算机网络教科书之一。本书第4版*显著的特点是:
1)新颖的“自顶向下”教学法。由于计算机网络的复杂性,长期以来按分层体系结构自底向上讲授网络课程内容是一种定式。本书特别强调应用层,期望尽早激发学生们的学习热情,并尽早强调自主开发网络应用程序。
2)着眼原理。计算机网络领域的许多基础性的重要问题已经研究得较为清楚,**研究这些原则,将使学生获得长“保质期”的知识,并且在飞速发展的网络研究开发中保持判断力和启发创造力。
3)以因特网为研究对象。本书以因特网体系结构的5层模型来组织材料,为学生们的学习热情提供了原动力。
4)及时更新教学内容。从2001年的第1版到2003年的第2版、2004年的第3版,再到现在的第4版,本书及时引入重要的*新知识并抛弃过时的内容。例如,本版各章全面关注了网络**问题,更新并扩展了无线网络的覆盖范围,增强了P2P应用程序的内容,更新了局域网和多媒体网络的章节,增加了有关端到端吞吐量分析的新材料,全面修订并增加了新的课后习题等。
5)注重教学法。为帮助学生们理解关键的技术概念,本书包括了许多类比、幽默和实例,引人入胜的历史事件和实践中的原则,对网络领域**专家的专访,循序渐进的Ethereal实验,以及网站上翔实的教学资料和实验内容等。
本书已经被世界上数以百计的学院和大学采用,被数以万计的学生和专业人士使用;在国内已经被解放军理工大学和许多其他**高校的计算机、通信等专业采用为本科生、研究生课程教材多年。本书的中译本为缓解在有限时间内有效地学习计算机网络知识(而不是英文)的矛盾起到重要作用。我们对使用本书进行教学的一个建议是:前5章内容可作为本科“计算机网络原理”课程的教材,而后4章内容可作为硕士研究生“**计算机网络”课程的部分内容。
在本书的翻译过程中,译者收到并参考了多名专家教授为本书翻译提出的很好建议;第4版原文中的多处错漏得到了原书作者的确认;谢希仁教授、李兵副教授和贾永兴博士为第4版的翻译提供了帮助。博士研究生许博、魏祥林制作的网站链接了与本书相关的教学资源,该网站的URL是http://www.plaust.edu.cn/networks。希望使用这本教材的学人们以此为平台,交流网络教学经验,丰富教学辅导和实验材料,共同提高我国计算机网络课程的教学水平。如果您有教学资源可供共享的话,可与我们联系;一旦选用,我们会将这些材料连同其作者(或提供者)的姓名/单位放在该网站上。