主机A和主机B进行通信实际上指的是主机A上的某个进程和主机B上的另一个进程进行通信。在网络边缘的端系统中运行的程序之间的通信方式通常可以划分为两大类:客户服务器方式(C/S方式)和对等方式(P2P方式)。 1. 客户服务器方式(C/S) 这种方式是因特网上最常用的,也是传统的方式。客户(client)和服务器(server)指通信中所涉及的两个应用进程,客户服务器方式所描述的是进程之间的服务和被服务的关系。客户是服务请求方,服务器是服务提供方,两者都要使用网络核心部分所提供的服务。 在实际应用中,客户程序和服务器程序通常还具有以下的一些主要特点: 客户程序: (1) 被用户调用后运行,在通信时主动向远地服务器发起通信(请求服务)。因此客户程序必须知道服务器程序的地址。 (2)不需要特殊的硬件和很复杂的操作系统。 服务器程序: (1) 一种专门用来提供某种服务的程序,可同时处理多个远地或本地客户的请求。 (2) 系统启动后即自动调用并一直不断地运行着,被动地等待并接受来自各地的客户的通信请求。因此服务器程序不需要知道客户程序的地址。 (3) 一般需要强大的硬件和高级的操作系统支持。 2. 对等连接方式(peer-to-peer, P2P) 两个主机在通信时并不区分服务请求方和服务提供方。只要两个主机都运行了对等连接软件(P2P软件),就可以进行平等的对等连接通信。双方都可以下载对方存储在硬盘中的共享文档,因此这种方式也称为P2P文件共享。P2P可支持大量对等用户同时工作。
在网络核心部分起特殊作用的是路由器(router),路由器是实现分组交换(packet switching)的关键构件,其任务是转发收到的分组,这是网络核心部分最终要的功能。 1. 电路交换 电路交换有三个步骤:建立连接(占用通信资源/建立物理通路)→通话(一直占用通信资源)→释放连接(归还通信资源)。 电路交换是电话交换机的交换方式。注意到用户线是电话用户到所连接的市话交换机的连接线路,是用户专用的线路,而交换机之间拥有大量话路的中继线则是由许多用户共享的。正在通话的用户只占用了其中一个话路。电路交换的一个重要特点就是在通话的全部时间内,通话的两个用户始终占用端到端的通信资源。 基于这个特点,使用电路交换来传送计算机数据时,其线路的传输效率往往很低。因为计算机数据是突发地出现在传输链路上,因此线路上真正用来传送数据的时间往往不到10%甚至1%。实际上已被用户占用的通信线路在绝大部分时间里都是空闲的。宝贵的通信线路资源并未被利用而是白白被浪费了。 2. 分组交换 采用存储转发技术。通常把要发送的整块数据称为一个报文(message)。在发送报文之前,先把较长的报文划分为一个个更小的等长数据段,在每个数据段前面加上一些必要的控制信息组成的首部/包头(header)后就构成了一个分组/包(packet)。分组是在因特网中传送的数据单元。 因特网的核心部分是由许多网络和把它们互连起来的路由器组成的,而主机处在因特网的边缘部分。在因特网核心部分的路由器之间一般都用高速链路相连接,而在网络边缘的主机接入到核心部分则通常以相对较低速率的链路相连接。 路由器是用于转发分组的,即进行分组交换的。路由器收到一个分组先暂时存储下来再检查其首部,查找转发表,按照首部中的目的地址找到合适的接口转发出去,把分组交给下一个交换器,如上所示的存储转发模式,把分组交付到最终的目的主机。(注意:路由器暂时存储的是一个个短分组,而不是整个的长报文。短分组是暂时存在路由器的存储器,即内存中,而不是存储在磁盘中,保证较高的交换速率)。 分组交换在传送数据之前不必占用一条端到端的通信资源。分组在哪段链路上传送才占用这段链路的通信资源,分组在传输时就这样一段段地断续占用着通信资源,同时省去了建立连接和释放连接的开销,因而数据的传输效率更高。 当网络中的某些节点或者链路突然出现故障时,在各路由器的路由选择协议能够自动找到其他路径转发分组,保证了数据传送的可靠性。 采用存储转发的分组交换,实质上是采用了数据通信过程中断续(或动态)分配传输带宽的策略,这对传送突发式的计算机数据非常合适,使得通信线路的利用率大大提高。 综上所述,分组交换的主要优点如下所示:
优点采用手段高效在分组传输的过程中动态分配传输带宽,对通信链路是逐段占用的灵活为每一个分组独立地选择转发路由迅速以分组作为传送单位,可以不先建立连接就能向其他主机发送分组可靠保证可靠性的网络协议;分布式多路由的分组交换网,使网络有很好的生存性分组交换也存在一些缺点,如下所示:
缺点具体问题时延分组在各路由器存储转发时需要排队,通信时端到端所需的带宽无法确保。开销(overhead)各分组必须携带控制信息,整个分组交换网还需要专门的管理和控制机制。3. 报文交换 操作员以每份报文为单位,根据报文的目的站地址,拿到相应的发报机转发出去,这种报文交换的时延较长,从几分钟到几小时不等。 分组交换的断续分配传输带宽的存储转发原理,从本质上讲,与报文交换是一致的,报文交换现在已经很少使用。
三种交换方式在数据传送节点的主要特点: 电路交换:整个报文的比特流连续地从源点直达终点,好像在一个管道中传送。 报文交换:整个报文先传送到相邻结点,全部存储下来后查找转发表,转发到下一个结点。 分组交换:单个分组(报文的一部分)传送到相邻结点,存储下来后查找转发表,转发到下一个结点。 综上所述,若要连续传送大量的数据,且其传送时间远大于连接建立时间,则电路交换的传输效率快。报文交换和分组交换不需要预先分配传输带宽,在传送突发数据时可提高整个网络的信道利用率。由于一个分组的长度往往小于整个报文的长度,因此分组交换比报文交换的时延小,同时也具有更好的灵活性。
3. 五层结构中各层的主要功能 (1) 应用层(application layer):应用层是体系结构中的最高层,直接为用户的应用进程提供服务。这里的进程就是正在运行的程序。例如:支持万维网应用的HTTP协议、支持电子邮件点的SMTP协议、支持文件传送的FTP协议等。 (2) 运输层(transport layer):运输层的任务是负责向两个主机中进程之间的通信提供服务。由于一个主机可同时运行多个进程,因此运输层有复用和分用的功能。复用就是多个应用层进程可同时使用下面运输层的服务,分用则是运输层把收到的信息分别交付给上面应用层中相应的进程。例如传输控制协议TCP、用户数据包协议UDP。 (3) 网络层(network layer):网络层负责为分组交换上的不同主机提供通信服务,在发送数据时,网络层把运输层产生的报文段或用户数据封装成分组或包进行传送。在TCP/IP体系中,由于网络层使用IP协议,因此分组也叫作IP数据报,或者简称为数据报。 注意区分运输层的“用户数据报UDP”和网络层的“IP数据报”。 网络层的另一任务是选择合适的路由,使源主机运输层所传下来的分组能够通过网络中的路由器找到目的主机。例如因特网主要使用的是无连接的网际协议IP(Internet Protocol)。 (4) 数据链路层(data link layer):简称链路层。两个主机之间的数据传输总是在一段一段的链路上传送的。也就是说在相邻的两个结点之间(主机和路由器之间或者两个路由器之间)传送数据是直接传送的(点对点)。在相邻结点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧(framing)。该层检测收到的帧中有无差错,若有责丢弃该帧,校正错误由运输层的TCP协议完成。 (5) 物理层(physical layer):在物理层所传数据的单位是比特,其任务是透明地传送比特流。物理层要考虑用多大的电压代表“1”或“0”,以及接收方如何识别出发送方所发送的比特,还要确定连接电缆的插头应当有多少根引脚以及各条引脚应如何连接。传递信息所利用的一些物理媒体,如双绞线、同轴电缆等等并不在物理层协议之内,而是在物理层协议之下。 数据在各层之间的传递过程如下图所示: 4. TCP/IP的体系结构 TCP/IP的体系结构只有四层,如下所示,注意图中的路由器在转发分组时最高只用到网络层而没有运输层和应用层: 另一种表示TCP/IP的体系结构的方法就是分层画出具体的协议来表示TCP/IP协议族,如图3所示,它的特点是上下两头大而中间小。这种很像沙漏计时器的TCP/IP协议族表明:TCP/IP协议可以为各式各样的应用提供服务(everything over IP),也允许IP协议在各式各样的网络构成的互联网上运行(IP over everything)。不难看出IP协议在因特网中的核心作用。
[1] 谢希仁. 计算机网络(第五版)