网络协议工程
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第1章 概论

1.1 协议

1.1.1 定义

在计算机网络中要做到有条不紊地交换数据,就必须遵守一些事先约定好的规则。这些规则明确规定了所交换的数据的格式及有关的同步问题。这里所说的同步不是狭义的(即同频或同频同相)而是广义的,即在一定的条件下应当发生什么事件(如发送一个应答信息),因而同步含有时序的意思。这些为进行网络中的数据交换而建立的规则、标准或约定即称为网络协议。1967年4月,英格兰国家物理实验室(NPL,National Physical Laboratory)的R.A.Scantlebury和K.A.Bartlett在一份备忘录备忘录的题目是:A protocol for use in the NPL data communications network。在这份备忘录中,将“协议”定义为“关于分布式系统进行信息交换时的一种约定,并且协议应该按照语言的方式进行定义”。中最早将“协议(Protocol)”一词用于描述数据通信过程。

协议的定义类似于语言的定义。从语言的角度来看,网络协议主要有三个要素:语法、语义和同步。下面我们来进一步解释这三个要素的含义。

在语言学中,语义是指语言组成成分(词、句等)的含义。语法是指这些语言组成成分之间以什么样的关系结合而构成语句或语言,也即语言的结构方法和构成规则。在网络协议中,可以将交换的报文(在OSI体系结构中称为协议数据单元或PDU尽管PDU(Protocol Data Unit)一词最开始出现在OSI体系结构中,但现在已泛指网络协议实体间交换的数据单元。)分为两种:用于传输用户数据的数据报文和用于协议控制的控制报文。网络协议中的语法体现为数据报文中的控制信息(通常在报文的首部)和各种控制报文的结构、格式,也即规定了报文的长度,报文中划分多少个域(Field),每个域的名称、意义、数据类型、长度等。其中,报文中各个域的类型、长度及相互间的位置、顺序关系则构成了词法。词法也是语法的一个组成部分。

网络协议的语义可以理解为协议数据报文中的控制信息和控制报文所约定的含义,即需要发出何种控制信息、完成何种动作及做出何种响应。例如,报文首部控制信息中的目的地址信息指明了报文的目的地,接收到此报文的网络结点均将其作为路由选择的依据,因而规定在首部控制信息中,在给定域给出目标结点地址就是一种语义。又如,为了实现有连接的传输服务,设计了一套实现连接的控制报文。发起连接方构造一个请求连接的协议控制报文,这个“请求连接”就是该控制报文的语义。收端收到这个控制报文后,根据已知的格式分析规定域中报文的类型码就可了解这个“请求连接”的语义,从而给出“允许连接”或“拒绝连接”的响应。“允许连接”报文和“拒绝连接”报文的格式和语义也是在协议中约定好的,通信双方通过这些约定语义的控制报文按一定时序关系的交换,即可实现建立连接的功能和提供有连接服务。在协议中常使用的“数据收到确认”报文(ACK报文)、“出错通知”报文、“紧急通知”报文等均可看成具有特定语义的网络协议的语句,即协议的组成部分。

在网络协议中,简单地说,同步是指事件实现顺序的详细说明。具体来说,同步是指通信过程中各种控制报文传送的顺序关系,例如,“允许连接”或“拒绝连接”报文必须作为请求连接报文的一种响应来发送,“拆除连接”报文也必须在建立连接后的某种条件下发送等。这种控制报文发送的时序关系,也决定了通信双方所处的通信状态(发送状态、接收状态、等待状态等)的制约关系,所以常用通信双方的有限状态机的方法来描述网络协议。在有些文献中,也将这种同步关系视为协议语法的一部分。

大量的研制经验表明,对于非常复杂的计算机网络协议,其结构应采用层次式的。在计算机网络中,将计算机网络的各层及其协议的集合,称为网络的体系结构(architecture)。比较著名的网络体系结构有:ISO的开放系统互连参考模型(OSI/RM),IBM公司的系统网络体系结构(SNA,System Network Architecture),DEC公司DEC公司,即美国的数字设备公司(Digital Equipment Company),后被Compaq公司兼并;Compaq公司后被HP公司兼并。但DEC公司的基于DNA的DECnet网络仍然使用原来的名称。的分布式系统体系结构(DNA,Digital Network Architecture),IETF的TCP/IP体系结构等。在体系结构的框架下,网络协议可定义为:为网络中互相通信的对等实体间进行数据交换而建立的规则、标准或约定。实体是指任何可以发送或接收信息的硬件或软件进程。在许多情况下,实体就是一个特定的软件模块。位于不同子系统的同一层次内交互的实体,就构成了对等实体。网络协议是计算机网络不可缺少的组成部分,它保证实体在计算机网络中有条不紊地交换数据。

本书的研究对象—网络协议,还可进一步延伸为计算机通信协议,即“协议是计算机网络和分布式系统中各种通信实体或进程间相互交换信息时必须遵守的一组规则或约定”。网络协议工程中的许多技术和方法均可应用到分布式系统中的进程间通信协议的设计活动当中。