计算机网络协议、接口、服务等概念
1. 协议
要在网络中做到有条不紊地交换数据,就必须遵循一些事先约定好的规则,其规定了所交换数据的格式及有关的同步问题。为了在网络中进行数据交换而建立的这些规则、标准或约定称为网络协议(Network Protocol),是控制在对等实体之间进行通信的规则的集合,是水平的。不对等实体之间是没有协议的,如用TCP/IP协议栈通信的两个结点A和结点B,结点A的传输层和结点B的传输层之间存在协议,但结点A的传输层和结点B的网络层之间不存在协议。
协议由语法、语义和同步三部分组成。
- 语法。数据与控制信息的格式。例如,TCP报文段格式就是由TCP协议的语法定义的。
- 语义。即需要发出何种控制信息、完成何种动作及做出何种应答。例如,在建立TCP连接的三次握手时所执行的操作就是由TCP协议的语义定义的。
- 同步(或时序)。执行各种操作的条件、时序关系等,即事件实现顺序的详细说明。例如,建立TCP连接的三次握手操作的时序关系就是由TCP协议的同步定义的。
2. 接口
同一结点内相邻两层的实体交换信息的逻辑接口称为服务访问点(Service Access Point,SAP)。每层只能为紧邻的层之间定义接口,而不能跨层定义接口。服务是通过SAP提供给上层使用的,第n层的SAP就是第n+1层可以访问第n层服务的地方。
再次强调5个不得不知的专业术语:
- 服务数据单元(SDU)。第n层的服务数据单元,记作 n-SDU。
- 协议控制信息(PCI)。第n层的协议控制信息,记作n-PCI。
- 接口控制信息(ICI)。第n层的接口控制信息,记作n-ICI。
- 协议数据单元(PDU)。第n层的服务数据单元(SDU)+第n层的协议控制信息(PCI)=第n层的协议数据单元,即n-SDU+n-PCI=n-PDU,表示的是同等层对等实体间传送的数据单元。另外,n-PDU=(n-1)-SDU。这个公式看完,后面的内容就会很清楚。例如,网络层的整个IP分组交到数据链路层,整个IP分组成为数据链路层的数据部分(现在不理解可直接跳过)。
- 接口数据单元(IDU)。第n层的服务数据单元(SDU)+第n层的接口控制信息(ICI)=第n层的接口数据单元,即n-SDU+-ICI=n-IDU,表示的是在相邻层接口间传送的数据单元。
3. 服务
服务是指下层为紧邻的上层提供的功能调用,是垂直的。对等实体在协议的控制下,使得本层能为上层提供服务,但要实现本层协议,还需要使用下层提供的服务。当上层使用下层提供的服务时,必须与下层交换一些命令,这些命令称为服务原语。OSI参考模型将原语划分为四类:
- 请求(Request)。由服务用户发往服务提供者,请求完成某项工作。
- 指示(Indication)。由服务提供者发往服务用户,指示用户做某件事情。
- 响应(Response)。由服务用户发往服务提供者,作为对指示的响应。
- 证实(Confirmation)。由服务提供者发往服务用户,作为对请求的证实。
这四类原语用于不同的功能,如建立连接、传输数据和断开连接等。有应答服务包括全部四类原语,而无应答服务则只有请求和指示两类原语。
注意,协议和服务概念上是不一样的。首先,只有本层协议的实现才能保证向上一层提供服务。本层的服务用户只能看见服务而无法看见下面的协议,即下面的协议对上层的服务用户是透明的。其次,协议是“水平的”,即协议是控制对等实体之间通信的规则。但是,服务是“垂真的”,即服务是由下层通过层间接口向上层提供的。另外,并非在一层内完成的全部功能都称为服务,只有那些能够被高一层实体“看得见”的功能才称为服务。
三种计算机网络提供的服务
计算机网络提供的服务可按以下三种方式分类。
(1)面向连接服务与无连接服务
在面向连接服务中,通信前双方必须先建立连接,分配相应的资源(如缓冲区),以保证通信能正常进行,传输结束后释放连接和占用的资源。因此这种服务可分为连接建立、数据传输和连接释放三个阶段。例如,TCP就是一种面向连接服务的协议。
在无连接服务中,通信前双方不需要先建立连接,需要发送数据时可直接发送,将每个带有目的地址的包(报文分组)传送到线路上,由系统选定路线进行传输。这种服务常被描述为“尽最大努力交付”,是一种不可靠的服务。例如,IP、UDP 就是一种无连接服务的协议。
(2)可靠服务和不可靠服务
可靠服务是指网络具有纠错、检错、应答机制,能保证数据正确、可靠地传送到目的地。不可靠服务是指网络只是尽量让数据正确、可靠地传送到目的地,是一种尽力而为的服务。
对于提供不可靠服务的网络,其网络的正确性、可靠性要由应用或用户来保障。例如,用户收到信息后要判断信息的正确性,若不正确,则用户就要把出错信息报告给信息的发送者,以便发送者采取纠正措施。通过用户的这些措施,可将不可靠服务变成可靠服务。
(3)有应答服务和无应答服务
有应答服务是指接收方在收到数据后向发送方给出相应的应答,该应答由传输系统内部自动实现,而不由用户实现。发送的应答既可以是肯定应答,又可以是否定应答,通常在接收到的数据有错误时发送否定应答。例如,文件传输服务就是一种有应答服务。
无应答服务是指接收方收到数据后不自动给出应答。若需要应答,则由高层实现。例如,对于 WWW服务,客户端收到服务器发送的页面文件后不给出应答。