在计算机网络中要做到有条不紊地交换数据,就必须遵守一些事先约定好的规则。这些规则明确规定了所交换的数据的格式以及有关的同步问题。这里所说的是狭义的(即同频或同频同相) 而是广义的,即在一定的条件下应当发生什么事件 (例如,应当发送一个应答信息),因而同步含有时序的意思。这些为进行网络中的数据交换而建立的规则、标准或约定称为网络协议(network protocol)。网络协议也可简称为协议。更进一步讲,网络协议主要由以下三个要素组成:
(1) 语法,即数据与控制信息的结构或格式;
(2) 语义,即需要发出何种控制信息,完成何种动作以及做出何种响应
(3) 同步,即事件实现顺序的详细说明。
由此可见,网络协议是计算机网络不可缺少的组成部分。实际上,只要我们想让连接在网络上的另一台计算机做点什么事情(例如,从网络上的某台主机下载文件),我们都需要有协议。但是当我们经常在自己的个人电脑上进行文件存盘操作时,就不需要任何网络协议,除非这个用来存储文件的磁盘是网络上的某个文件服务器的磁盘。
协议通常有两种不同的形式。一种是使用便于人来阅读和理解的文字描述。另一种是使用让计算机能够理解的程序代码。这两种不同形式的协议都必须能够对网络上的信息交换过程做出精确的解释。
ARPANET 的研制经验表明,对于非常复杂的计算机网络协议,其结构应该是层次的。我们可以举一个简单的例子来说明划分层次的概念。
分层可以带来很多好处。如:
(1)各层之间是独立的。某一层并不需要知道它的下一层是如何实现的,而仅仅需要知道
道该层通过层间的接口(即界面)所提供的服务。由于每一层只实现一种相对独立的功能,因而可将一个难以处理的复杂问题分解为若干个较容易处理的更小一些的问题。这样,整个问题的复杂程度就下降了。
(2)灵活性好。当任何一层发生变化时 (例如由于技术的变化 ),只要层间接口关系保 持不变,则在这层以上或以下各层均不受影响。此外,对某一层提供的服务还可进行修改。 当某层提供的服务不再需要时,甚至可以将这层取消。
(3)结构上可分割开。各层都可以采用最合适的技术来实现。
(4)易于实现和维护。这种结构使得实现和调试一个庞大而又复杂的系统变得易于处 理,因为整个的系统已被分解为若干个相对独立的子系统。
(5)能促进标准化工作。因为每一层的功能及其所提供的服务都已有了精确的说明。
分层时应注意使每一层的功能非常明确。若层数太少,就会使每一层的协议太复杂。但层数太多又会在描述和综合各层功能的系统工程任务时遇到较多的困难。通常各层所要完成的功能主要有以下一些 (可以只包括一种,也可以包括多种):
①差错控制 使相应层次对等方的通信更加可靠。
②流量控制 发送端的发送速率必须使接收端来得及接收,不要太快。
③分段和重装 发送端将要发送的数据块划分为更小的单位,在接收端将其还原。
④复用和分用 发送端几个高层会话复用一条低层的连接,在接收端再进行分用。
⑤连接建立和释放交换数据前先建立一条逻辑连接,数据传送结束后释放连接。
分层当然也有一些缺点,例如,有些功能会在不同的层次中重复出现,因而产生了额外开销.
计算机网络的各层及其协议的集合就是网络的体系结构(architecture)。换种说法,计算机网络的体系结构就是这个计算机网络及其构件所应完成的功能的精确定义[GREE82]。需要强调的是:这些功能究竟是用何种硬件或软件完成的,则是一个遵循这种体系结构的实现 (implementation)的问题。体系结构的英文名词 architecture 的原意是建筑学或建筑的设计和风格。它和一个具体的建筑物的概念很不相同。例如,我们可以走进一个明代的建筑物中,但却不能走进一个明代的建筑风格之中。同理,我们也不能把一个具体的计算机网络说成是一个抽象的网络体系结构。总之,体系结构是抽象的,而实现则是具体的,是真正在运行的计算机硬件和软件。
欢迎关注: