网络协议

下面的内容包括网络协议的概念、组成、设计方法等,同时很详细的讲解了分层协议。

体系结构

        要想让两台计算机进行通信,必须使它们采用相同的信息交换规则。我们把在计算机网络中用于规定信息的格式以及如何发送和接收信息的一套规则称为网络协议(network protocol)或通信协议(communication protocol)。

        为了减少网络协议设计的复杂性,网络设计者并不是设计一个单一、巨大的协议来为所有形式的通信规定完整的细节,而是采用把通信问题划分为许多个小问题,然后为每个小问题设计一个单独的协议的方法。这样做使得每个协议的设计、分析、编码和测试都比较容易。分层模型(layering model)是一种用于开发网络协议的设计方法。本质上,分层模型描述了把通信问题分为几个小问题(称为层次)的方法,每个小问题对应于一层。

        在计算机网络中要做到有条不紊地交换数据,就必须遵守一些事先约定好的规则。这些规则明确规定了所交换的数据格式以及有关的同步问题。这里所说的同步不是狭义的(即同频或同频同相)而是广义的,即在一定的条件下应当发生什么事件(如发送一个应答信息),因而同步含有时序的意思。这些为进行网络中的数据交换而建立的规则、标准或约定称为网络协议,网络协议也可简称为协议。

网络协议主要由以下三个要素组成。

① 语法,即数据与控制信息的结构或格式。

② 语义,即需要发出何种控制信息,完成何种动作以及做出何种响应。

③ 同步,即事件实现顺序的详细说明。

网络协议是计算机网络的不可缺少的组成部分。

        协议通常有两种不同的形式。一种是使用便于人来阅读和理解的文字描述,另一种是使用计算机能够理解的程序代码。

对于非常复杂的计算机网络协议,其结构应该是层次式的。分层可以带来许多好处。

① 各层之间是独立的。某一层并不需要知道它的下一层是如何实现的,而仅仅需要知道该层通过层间的接口(即界面)所提供的服务。由于每一层只实现一种相对独立的功能,因而可将一个难以处理的复杂问题分解为若干个较容易处理的更小一些的问题。这样,整个问题的复杂程度就下降了。

② 灵活性好。当任何一层发生变化时(例如由于技术的变化),只要层间接口关系保持不变,则在这层以上或以下各层均不受影响。此外,对某一层提供的服务还可进行修改。当某层提供的服务不再需要时,甚至可以将这层取消。

③ 结构上可分割开。各层都可以采用最合适的技术来实现。

④ 易于实现和维护。这种结构使得实现和调试一个庞大而又复杂的系统变得易于处理,因为整个的系统已被分解为若干个相对独立的子系统。

⑤ 能促进标准化工作。因为每一层的功能及其所提供的服务都已有了精确的说明。

        分层时应注意使每一层的功能非常明确。若层数太少,就会使每一层的协议太复杂。但层数太多又会在描述和综合各层功能的系统工程任务时遇到较多的困难。

        我们把计算机网络的各层及其协议的集合,称为网络的体系结构。换种说法,计算机网络的体系结构就是这个计算机网络及其构件所应完成的功能的精确定义。需要强调的是:这些功能究竟是用何种硬件或软件完成的,则是一个遵循这种体系结构的实现的问题。体系结构的英文名词architecture的原意是建筑学或建筑的设计和风格。但是它和一个具体的建筑物的概念很不相同。我们也不能把一个具体的计算机网络说成是一个抽象的网络体系结构。总之,体系结构是抽象的,而实现则是具体的,是真正在运行的计算机硬件和软件。

下图所示是计算机网络体系结构示意图。

                        图1 计算机网络体系结构表示图

其中图1(a)是OSI的七层协议体系结构图、图1(b)是TCP/IP四层体系结构、图1(c)是五层协议的体系结构。五层协议的体系结构综合了前两种体系结构的优点,既简洁又能将概念阐述清楚。

分层协议

        为了减少网络设计的复杂性,绝大多数网络采用分层设计方法。所谓分层设计方法,就是按照信息的流动过程将网络的整体功能分解为一个个的功能层,不同机器上的同等功能层之间采用相同的协议,同一机器上的相邻功能层之间通过接口进行信息传递。

        为了便于理解接口和协议的概念,我们首先以邮政通信系统为例进行说明。人们平常写信时,都有个约定,这就是信件的格式和内容。首先,我们写信时必须采用双方都懂的语言文字和文体,开头是对方称谓,最后是落款等。这样,对方收到信后,才可以看懂信中的内容,知道是谁写的,什么时候写的等。当然还可以有其他的一些特殊约定,如书信的编号、间谍的密写等。信写好之后,必须将信封装并交由邮局寄发,这样寄信人和邮局之间也要有约定,这就是规定信封写法并贴邮票。在中国寄信必须先写收信人地址、姓名,然后才写寄信人的地址和姓名。邮局收到信后,首先进行信件的分拣和分类,然后交付有关运输部门进行运输,如航空信交民航,平信交铁路或公路运输部门等。这时,邮局和运输部门也有约定,如到站地点、时间、包裹形式等等。信件运送到目的地后进行相反的过程,最终将信件送到收信人手中,收信人依照约定的格式才能读懂信件。如图所示,在整个过程中,主要涉及到了三个子系统、即用户子系统,邮政子系统和运输子系统。各种约定都是为了达到将信件从一个源点送到某一个目的点这个目标而设计的,这就是说,它们是因信息的流动而产生的。可以将这些约定分为同等机构间的约定,如用户之间的约定、邮政局之间的约定和运输部门之间的约定,以及不同机构间的约定,如用户与邮政局之间的约定、邮政局与运输部门之间的约定。虽然两个用户、两个邮政局、两个运输部门分处甲、乙两地,但它们都分别对应同等机构,同属一个子系统;而同处一地的不同机构则不在一个子系统内,而且它们之间的关系是服务与被服务的关系。很显然,这两种约定是不同的,前者为部门内部的约定,而后者是不同部门之间的约定。

        在计算机网络环境中,两台计算机中两个进程之间进行通信的过程与邮政通信的过程十分相似。用户进程对应于用户,计算机中进行通信的进程(也可以是专门的通信处理机〕对应于邮局,通信设施对应于运输部门。为了减少计算机网络设计的复杂性,人们往往按功能将计算机网络划分为多个不同的功能层。网络中同等层之间的通信规则就是该层使用的协议,如有关第N层的通信规则的集合,就是第N层的协议。而同一计算机的不同功能层之间的通信规则称为接口(interface),在第N层和第(N+ 1)层之间的接口称为N /(N+ 1)层接口。总的来说,协议是不同机器同等层之间的通信约定,而接口是同一机器相邻层之间的通信约定。不同的网络,分层数量、各层的名称和功能以及协议都各不相同。然而,在所有的网络中,每一层的目的都是向它的上一层提供一定的服务。协议层次化不同于程序设计中模块化的概念。在程序设计中,各模块可以相互独立,任意拼装或者并行,而层次则一定有上下之分,它是依数据流的流动而产生的。组成不同计算机同等层的实体称为对等进程(peer process)。对等进程不一定非是相同的程序,但其功能必须完全一致,且采用相同的协议。分层设计方法将整个网络通信功能划分为垂直的层次集合后,在通信过程中下层将向上层隐蔽下层的实现细节。但层次的划分应首先确定层次的集合及每层应完成的任务。划分时应按逻辑组合功能,并具有足够的层次,以使每层小到易于处理。同时层次也不能太多,以免产生难以负担的处理开销。计算机网络体系结构是网络中分层模型以及各层功能的精确定义。对网络体系结构的描述必须包括足够的信息,使实现者可以为每一功能层进行硬件设计或编写程序,并使之符合相关协议。但我们要注意的是,网络协议实现的细节不属于网络体系结构的内容,因为它们隐含在机器内部,对外部说来是不可见的。

        现在我们来考查一个具体的例子:在图1 - 11所示的5层网络中如何向其最上层提供通信。在第5层运行的某应用进程产生了消息M,并把它交给第4层进行发送。第4层在消息M前加上一个信息头(header),信息头主要包括控制信息(如序号)以便目标机器上的第4层在低层不能保持消息顺序时,把乱序的消息按原序装配好。在有些层中,信息头还包括长度、时间和其他控制字段。在很多网络中,第4层对接收的消息长度没有限制,但在第3层通常存在一个限度。因此,第3层必须将接收的入境消息分成较小的单元如报文分组(packet),并在每个报文分组前加上一个报头。在本实例中,消息M被分成两部分:M 1和M 2。第3层确定使用哪一条输出线路,并将报文传给第2层。第2层不仅给每段消息加上头部信息,而且还要加上尾部信息,构成新的数据单元,通常称为帧(frame),然后将其传给第1层进行物理传输。在接收方,报文每向上递交一层,该层的报头就被剥掉,决不可能出现带有N层以下报头的报文交给接收方第N层实体的情况。要理解图1 - 11示意图,关键要理解虚拟通信与物理通信之间的关系,以及协议与接口之间的区别。比如,第4层的对等进程,在概念上认为它们的通信是水平方向地应用第四层协议。每一方都好像有一个叫做“发送到另一方去”的过程和一个叫做“从另一方接收”的过程,尽管实际上这些过程是跨过3 / 4层接口与下层通信而不是直接同另一方通信。抽象出对等进程这一概念,对网络设计是至关重要的。有了这种抽象技术,网络设计者就可以把设计完整的网络这种难以处理的大问题,划分成设计几个较小的且易于处理的问题,即分别设计各层。

转载于:https://my.oschina.net/zhangyujian/blog/754292

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值