《分布式系统:概念与设计》一3.3.4 协议

3.3.4 协议

协议是指为了完成给定任务,进程间通信所要用到的一组众所周知的规则和格式。协议的定义包括两个重要的部分:

  • 必须交换的消息的顺序的规约。
  • 消息中数据格式的规约。
    众所周知的协议的存在使得分布式系统的软件组件能独立地开发,能在代码次序不一样、数据表达不一样的计算机上用不同的程序语言实现。

一个协议是由分别位于发送方计算机和接收方计算机上的一对软件模块实现的。例如,一个传输协议将任意长度的消息从一个发送进程传递给一个接收进程。想向另一个进程传输消息的进程给传输协议模块发出一个调用,并按指定的格式传递消息。接着传输软件负责将消息传递到目的地,它将消息分割成指定大小的数据包和格式,利用网络协议(另一个低层的协议)将消息传输到目的地。接收方计算机中相应的传输协议模块通过网络级协议模块接收这些数据包,并在传递给接收进程之前,进行逆向转换,重新生成消息。

协议层 网络软件是按层的层次结构排列的。每一层都为上面的层提供了相应的接口,并扩展了下层通信系统的性质。层由与网络相连的每一个计算机上的一个模块表示。图3-2说明了这个结构和通过分层协议传递消息时的数据流。每一个模块看起来都是和网络中另一个计算机上相同层次的模块直接通信,但事实上数据并没有在两个同层次的协议模块之间直接传输。网络软件的每一层都只通过本地过程调用与它的上一层和下一层通信。
在发送方,每一层(除了最顶层,即应用层以外)从上一层按照指定的格式接收数据项,并在将其传送到下一层进行进一步处理之前,进行数据转换,按下一层的格式封装数据。图3-3说明了这一过程,在图中,该过程被应用于OSI协议组的前四层。从图中可以看出,数据包的头部包含大部分与网络相关的数据项,但为了简洁起见,它省略了在一些数据包类型中出现的附加部分;同时该图也假设应用层要传递的应用层消息的长度小于底层网络数据包的最大长度。否则,消息就要被封装成几个网络层的数据包。在接收方,下层接收到的数据项要进行一次相反的转换,再传递到上一层。上层协议的类型已经包括在了每层的头部,这使得接收方的协议栈能选择正确的软件组件来拆分数据包。

这样,每一层为上一层提供服务,并扩展下一层提供的服务。最下面的是物理层。它是由通信介质(铜线、光缆、卫星通信信道或无线电传输)和在发送结点将信号放置在通信介质上,在接收结点感应该信号的模拟信号电路实现的。在接收结点,接收到的数据项通过软件模块的层次结构向上传送,在每一层都重新转换直到变成可传递给接收进程的格式为止。
协议组 一套完整的协议层被称为协议组或者协议栈,这也反映了分层结构。图3-4显示了与国际标准组织(ISO)采用的开放系统互连(Open System Interconnection,OSI)的7层参考模型[ISO 1992]相一致的协议栈。采用OSI参考模型,是为了促进满足开放系统需求的协议标准的开发。

图3-5总结了OSI参考模型的每一层的目标。顾名思义,这只是一个用于协议定义的框架,而不是特定协议组的定义。与OSI模型一致的协议组必须在模型定义的7层的每一层包括至少一个特定的协议。

协议分层给简化和概括访问网络通信服务的软件接口带来了实质性的好处,同时也带来了极大的性能开销。通过N层协议栈传输一个应用级的消息,通常在协议组中要进行N次控制传输,才能到达相关的软件层,其中至少有一个是操作系统的入口,数据的N份拷贝也作为了封装机制的一部分。所有这些开销导致应用进程间的数据传输率远低于可用的网络带宽。
图3-5包括了在互联网中使用的协议的例子,但互联网的实现在两方面没有遵循OSI模型。第一,在互联网协议栈中,并没有清楚地区分应用层、表示层、会话层。应用层和表示层或实现成单独的中间件层或在每个应用内部单独实现。这样,CORBA就可以在每个应用进程包括的中间件库中实现对象间调用和数据表示(CORBA的进一步讨论见第8章)。Web浏览器和其他的一些需要安全信道的应用也采用了类似过程库方式使用的安全套接字层(见第11章)。
第二,会话层与传输层集成在一起。互连网络协议组包括应用层、传输层和互连网络层。互连网络层是一个“虚拟的”网络层,负责将互连网络的数据包传输到目的计算机。94互连网络数据包是在互连网络上传递的数据单元。
 图3-6 互连网络层互连网络协议覆盖在底层的网络上,参见图3-6。网络接口层接收互连网络数据包,并将其转换成适合每个底层网络的网络层传输的数据包。

数据包组装 在传输前将消息分割成多个数据包并在接收端重新组装各个数据包的任务通常是由传输层完成。
网络层协议的数据包包括头部和数据域。在大部分网络技术中,数据域是长度可变的,其最大长度称为最大传输单元(Maximum Transfer Unit,MTU)。如果消息的长度超过底层网络层的MTU,就将其分割为多个大小适当的块,并标上序列号以便其重新装配,再用多个数据包进行传输。例如,以太网的MTU是1500字节,如果消息不超过这个数据量,就能在一个以太网数据包中进行传输。
尽管在互联网协议组中,IP协议处于网络层协议的位置,但它的MTU却很大,有64KB(实际通常使用8KB,因为一些结点无法处理这么大的数据包)。无论IP数据包采用哪一个MTU值,比以太网MTU值大的数据包必须经过分割才能在以太网上传输。
端口 传输层的任务是在一对网络端口间提供与网络无关的消息传送服务。端口是主机中可由软件定义的目的点。它隶属于进程,使得数据能传输到位于目的结点的指定进程。这里我们将详细讲述端口在互联网和大部分其他网络中实现的端口寻址过程。第4章将讨论端口的编程。
寻址 传输层负责将消息传递到目的地址,其使用的传输地址由主机的网络地址和一个端口号组成。网络地址是能唯一标识主机的一个数字标识符,可以让负责将数据路由到该主机的结点准确地定位它。在互联网中,为每台主机都分配了一个IP地址,用于标识该主机和它连入的子网,使得从其他结点都能路由到该主机(下一节将介绍这一内容)。以太网中没有路由结点,由每台主机负责辨识数据包的地址,并接收发给自己的数据包。
众所周知的互联网服务(如HTTP或FTP)已经被分配了关联的端口号。它们都在权威机构(即互联网编号管理局,简称IANA)进行了登记[www.iana.org]。要访问指定主机上的某个服务,只要将请求发给该主机上相关的端口就可以了。有些服务,如FTP(关联端口为21),会被分配一个新的端口号(私有号码),并将新的端口号发送到客户端。客户端使用新的端口号完成交易或会话的剩余部分。其他服务,如HTTP(关联端口为80),通过关联端口处理所有的业务活动。
编号小于1023的端口被定义为公共端口。在大多数操作系统中,它们的使用被限制在特权进程中。1024~49151之间的端口是IANA拥有的服务描述的已注册端口,其他直到65535的端口可用于个人目的。实际上,大于1023的所有端口都可用于个人目的,只是为个人目的而使用这些端口的计算机不能同时访问相应的已注册服务。
在开发经常包括许多动态分配的服务器的分布式系统中,分配固定端口号并不恰当。这个问题的解决方案涉及为服务动态分配端口以及提供绑定机制,使得客户能用符号化名字定位服务和相应的端口。这些将在第5章做进一步讨论。
数据包传递 网络层采用两种方法传递数据包。
数据报包传递:术语“数据报”指出了这种传输模式与信件、电报的传输模式的相似性。数据报网络的本质特征是每个包的传递都是一个“一次性”的过程;不需要计划,一旦包被传递,网络就不再保存它的相关信息。在数据报网络中,从一个源地址到一个目的地址的数据包序列可以按照不同的路由来传递(这样,网络就有能力处理故障,或缓解局部拥塞带来的影响),在这种情况下,数据包序列可能不按照原来的顺序到达。
每个数据报包都包括完整的源主机和目的地主机的网络地址,后者是路由过程的基本参数,我们将在下一节加以讨论。数据报传递是数据包网络最初所基于的概念,可以在目前使用的大多数计算机网络中找到它。互联网的网络层(IP)、以太网以及大部分有线或无线的局域网技术都是基于数据报传递的。
虚电路包传递:一些网络级的服务利用类似于电话网络中传递的方式实现包传输。必须在经源主机A到目的主机B传递包之前建立虚电路。要建立虚电路,涉及确定从源地址到目的地址的路由,这可能会经过一些中间结点。在路由中的每个结点上都会有一个表格项,指示路由下一步该使用哪一个链接。
一旦建立起虚电路,就可以用它传输任意数量的数据包了。每个网络层的数据包只包括一个虚电路号,而不是源地址和目的地址。此时已不需要地址信息,因为在中间结点,通过引用虚电路号来路由数据包。数据包到达目的地址后,根据虚电路号就可以决定其源地址。
虚电路与电话网络的类比不能这样从表面上看。在POTS中,进行一次电话呼叫就要建立从主叫者到被叫者的物理电路,而这一音频链接也将作为专用连接而被保留。在虚电路的包传递中,电路只是由一些在路由结点上的表格项来表示,而数据包所路经的链接也只在传递一个数据包时使用,在其余时间这些链接是空闲的,可供它用。97因此,一个链接可以被多个独立的虚电路使用。目前使用的最重要的虚电路网络技术是ATM。我们已经提到过(见3.3.3节),它传送单个数据包的延迟较短,这是使用虚电路的直接结果。但无论怎么说,数据包传送到一个新目的地址前要求有一个准备阶段,这确实造成了短时间的延迟。
不要将网络层的数据报传递和虚电路包传递之间的区别与传输层中名字相似的一对机制(即无连接传输和面向连接传输)相混淆。我们将在3.4.6节有关互联网传输协议——UDP(无连接的)和TCP(面向连接的)的内容中描述这些技术。这里我们只是让大家注意,在任何一种类型的网络层上都可以实现这些传输模式。

时间: 2024-11-02 17:23:12

《分布式系统:概念与设计》一3.3.4 协议的相关文章

《分布式系统:概念与设计》一第3节 练习

前 言 在互联网和Web持续发展并且对我们社会的每个方面都产生影响的时候,这本教材的第5版问世了.本书的介绍性章节提到互联网和Web对诸多(如金融.商业.艺术.娱乐等)应用领域的影响以及对信息社会的普遍影响.它还强调了诸如Web搜索和多人在线游戏等应用领域中的需求.从分布式系统的角度出发,这些开发在应用的范围.多个现代系统所支持的工作负载和系统大小等方面正在对底层系统架构提出实质性的新需求.重要的趋势包括网络技术上不断增加的多样性和普遍性(包括不断增加的无线网络的重要性).移动和无处不在计算元素

《分布式系统:概念与设计》一1.2 分布式系统的例子

1.2 分布式系统的例子 本节给出能激发读者学习积极性的当代分布式系统的例子,用于说明分布式系统所扮演的无处不在的角色和相关应用的多样性. 如1.1节所提及的那样,网络无处不在,成为我们现在认为理所当然的日常服务(互联网和相关的万维网.Web搜索.在线游戏.电子邮件.社会网络.电子商务,等等)的基础.为了进一步说明这一点,可参考图1-1,它描述了一系列所选的关键商务或社会应用部门,强调了相关的分布式系统技术已公认或新出现的应用. 正如所看到的,分布式系统包含近些年许多最重要的技术发展,因此理解底

《PADS 9.5电路设计与仿真从入门到精通》——第一章 绪论 1.1 PCB的基本概念及设计工具

第一章 绪论 PADS 9.5电路设计与仿真从入门到精通 本章主要介绍PADS的基本概念及特点,包括PCB设计的一般原则.基本步骤.标准规范等.着重介绍了美国Mentor Graphics公司的PCB设计软件:PADS 9.5,包括了PADS 9.5的发展过程以及它的新特点.PADS 9.5是一款非常优秀的PCB设计软件,它具有完整强大的PCB绘制工具,界面和操作十分简洁,希望用户好好学习本书,以便更加方便地使用PADS 9.5软件. 1.1 PCB的基本概念及设计工具 PADS 9.5电路设计

entity-用VHDL或Verilog语言设计RS232接口数据转发协议

问题描述 用VHDL或Verilog语言设计RS232接口数据转发协议 将8位并行数据转发为RS232协议的串口数据发送出去 协议要求: (1) 波特率:4800/ 9600/19200/38400可选 (2) 8位数据位,1位停止位,偶校验可选 给定实体 entity rs232 port ( clk: in std_logic; -- 16MHz输入时钟 rdy: in std_logic; --数据准备好信号, 1个时钟周期的正脉冲 data: in std_logic_vector(7

《分布式系统:概念与设计》一练习

练习 1.1 列出能被共享的五种类型的硬件资源和五种类型的数据或软件资源,并举出它们在实际的分布式系统中发生共享的例子. 1.2 在不参考外部时间源的情况下,通过本地网络连接的两台计算机的时钟如何同步?什么因素限制了你描述的过程的准确性?由互联网连接的大量的计算机的时钟是如何同步的?讨论该过程的准确性. 1.3 考虑1.2.2节讨论的大型多人在线游戏的实现策略.采用单一服务器方法表示多个玩家游戏状态的好处是什么?这存在什么问题以及如何解决? 1.4 一个用户随身携带可以无线连网的PDA,来到一个

《分布式系统:概念与设计》一2.3.1 体系结构元素

2.3.1 体系结构元素 为了理解一个分布式系统的基础构建块,有必要考虑下面四个关键问题: 在分布式系统中进行通信的实体是什么? 它们如何通信,特别是使用什么通信范型? 它们在整个体系结构中扮演什么(可能改变的)角色,承担什么责任? 它们怎样被映射到物理分布式基础设施上(它们被放置在哪里)? 通信实体 上述前两个问题是理解分布式系统的关键:什么是通信和这些实体如何相互通信为分布式系统开发者定义了一个丰富的设计空间.它对从面向系统和面向问题的角度解决第一个问题是有帮助的. 从系统的观点,回答通常是

《分布式系统:概念与设计》一2.4.1 交互模型

2.4.1 交互模型 2.3节对系统体系结构的讨论表明分布式系统由多个以复杂方式进行交互的进程组成.例如: 多个服务器进程能相互协作提供服务,前面提到的例子有域名服务(它将数据分区并复制到互联网中的服务器上)和Sun的网络信息服务(它在局域网的几个服务器上保存口令文件的复制版本). 对等进程能相互协作获得一个共同的目标.例如,一个语音会议系统,它以类似的方式分布音频数据流,但它有严格的实时限制. 大多数程序员非常熟悉算法的概念--采取一系列步骤以执行期望的计算.简单的程序由算法控制,算法中的每一

《分布式系统:概念与设计》一3.1 简介

3.1 简介 要构建分布式系统所使用的网络,首先需要众多的传输介质,包括电线.电缆.光纤以及无线频道:然后需要一些硬件设备,包括路由器.交换机.网桥.集线器.转发器和网络接口:最后还需要软件组件,包括协议栈.通信处理器和驱动器.上述因素都会影响分布式系统和应用程序所能达到的最终功能和性能.我们把为分布式系统提供通信设施的软硬件组件称为通信子系统.计算机和其他使用网络进行通信的设备称为主机.结点则指的是在网络上的所有计算机或者交换设备.互联网是一个通信子系统,它为所有接入的主机提供通信服务.互联网

《分布式系统:概念与设计》一1.1 简介

1.1 简介 计算机网络无处不在.互联网也是其中之一,因为它是由许多种网络组成的.移动电话网.协作网.企业网.校园网.家庭网.车内网,所有这些,既可单独使用,又可相互结合,它们具有相同的本质特征,这些特征使得它们可以放在分布式系统的主题下来研究.本书旨在解释影响系统设计者和实现者的连网的计算机的特征,给出已有的可帮助完成设计和实现分布式系统任务的主要概念和技术.我们把分布式系统定义成一个其硬件或软件组件分布在连网的计算机上,组件之间通过传递消息进行通信和动作协调的系统.这个简单的定义覆盖了所有可

《分布式系统:概念与设计》一第2章 系统模型

第2章 系统模型 本章提供三个重要且互补的解释方法,以便有效地描述和讨论分布式系统的设计:物理模型考虑组成系统的计算机和设备的类型以及它们的互连,不涉及特定的技术细节.体系结构模型是从系统的计算元素执行的计算和通信任务方面来描述系统:这里计算元素或是指单个计算机或是指通过网络互连的计算机集合.客户-服务器和对等模型是分布式系统中的两种最常使用的体系结构模型.基础模型采用抽象的观点描述大多数分布式系统面临的单个问题的解决方案.在分布式系统中没有全局时间,所以不同计算机上的时钟未必给出相同的时间.进