处在因特网边缘的部分就是连接在因特网上的所有的主机。这些主机又称为端系统(end system),”端”就是“末端”的意思(即因特网的末端)。端系统在功能上可能有很大的差别,小的端系统可以是一台普通个人电脑(包括笔记本电脑或平板电脑)和具有上网功能的手机,甚至是一个很小的网络摄像头(可监视当地的天气或交通情况,并在因特网上实时发布),而大的端系统则可以是一台非常复杂和昂贵的大型计算机。端系统的拥有者可以是个人,也可以是单位(如学校、企业、政府机构等),当然也可以是某个ISP(即ISP不仅仅是向端系统提供服务,它也可以拥有一些端系统)。边缘部分利用核心部分所提供的服务,使众多主机之间能够互相通信并交换或共享信息。
我们先要明确下面的概念。我们说:“主机A和主机B进行通信”,实际上是指:“运行在主机A上的某个程序和运行在主机B上的另外一个程序进行通信”。由于“进程”就是“运行着的程序”,因此这也就是指:“主机A的某个进程和主机B上的另外一个进程进行通信”。这种比较严密的说法通常可以简称为“计算机之间通信”。
在网络边缘的端系统之间的通信方式通常可划分为哪两大类呢?
在网络边缘的端系统之间的通信方式可以划分为客户—服务器方式(C/S方式)和对等方式(P2P方式)。
那么什么是客户—服务器方式(C/S方式),什么是对等方式(P2P方式)
1, 客户—服务器方式
这种方式在因特网上是最常用的,也是传统的方式。我们在上网发送电子邮件或在网站上查找资料时,都是使用客户—服务器方式(有时写为客户/服务器方式)。我们知道,当我们打电话时,电话机的振铃声使被叫用户知道现在有一个电话呼叫。计算机通信的对象是应用层中的应用进程,显然不能用响铃的办法来通知所要找的对方的应用进程。然而,采用客户—服务器方式可以使用两个应用进程能够进行通信。
客户(client)和服务器(server)都是指通信中所涉及的两个应用进程。客户—服务器方式所描述的是进程之间服务和被服务的关系。
图1-7 客户—服务器工作方式
在1-7图中,主机A运行客户程序而主机B运行服务器程序。在这种情况下,A是客户而B是服务器。客户A向服务器B发出请求服务,而服务器B向客户A提供服务。这里最主要的特征就是:
客户是服务请求方,服务器是服务提供方。
服务请求方和服务提供方都要使用网络核心部分所提供的服务。
在实际应用中,客户程序和服务器程序分别有哪些主要特点呢?
客户程序:
(1) 被用户调用后运行,在通信时主动向远地服务器发起通信(请求服务)。因此,客户程序必须知道服务器程序的地址。
(2) 不需要特殊的硬件和很复杂的操作系统。
服务器程序:
(1) 是一种专门用来提供某种服务的程序,可同时处理多个远地或本地客户的请求。
(2) 系统启动后即自动调用并一直不断地运行着,被动地等待并接受来自各地的客户的通信请求。因此,服务器程序不需要知道客户程序的地址。
(3) 一般需要有强大的硬件和高级的操作系统支持。
客户与服务器的通信关系建立后,通信可以是双向的,客户和服务器都可发送和接收数据。
顺便要说一下,上面所说的客户和服务器本来都指的是计算机进程(软件)。使用计算机的人是计算机的“用户”(user)而不是“客户”(client)。但在许多国外文献中,经常也把运行客户程序的机器称为client(在这种情况下也可把client译为“客户机”),把运行服务器程序的机器称为server。因此我们应当根据上下文来判断client或server是指软件还是硬件。在本书中,有时为了清楚起见,我们也使用“客户端”(或“客户机”)或“服务器端”来表示“运行客户程序的机器”或“运行服务器程序的机器”。
2.对等连接方式:
对等连接(peer-to-peer,简写为P2P)是指两个主机在通信时并不区分哪一个服务请求方还是服务提供方。只要两个主机都运行了对等连接软件(P2P软件),它们就可以进行平等的、对等连接通信。这时,双方都可以下载对方已经存储在硬盘中的共享文档。因此这种工作方式也称为P2P文件共享。
图1-8 对等连接工作方式
在图1-8中,主机C,D,E和F都运行了P2P软件,因此这几个主机都可进行对等通信(如C和D,E和F,以及C和F)。实际上,对等连接方式从本质上看仍然是使用客户—服务器方式,只是对等连接中的每一个主机即是客户又同时是服务器。例如主机C,当C请求D的服务时,C是客户,D是服务器。但如果C又同时向F提供服务,那么C又同时起着服务器的作用。
对等连接工作方式可支持大量对等用户(如上百万个)同时工作。