第五章    信息的传输

[      浏览次数:0 ]

 

协议教训

 

案例5:英国的可莱 顿隧道全长 1.5 公里,穿过隧道的轨道有两条,每个方向各一条。在任意时刻,隧道中的每一条轨道上只允许有一列火车经过。在隧道的两端,一天 24 小时都有值班人员,并且都配的有“空闲 / 阻塞信号系统”,“空闲 / 阻塞信号系统”能够保证任何一辆火车通过绿色信号灯时会自动将信号灯设置为红色,之后再由信号员将信号灯重设为绿色。在隧道的两端都有单针电报 信号发射器,当火车从一端( A )进入隧道后,该端的信号员向另一端( B )送信号“火车在隧道中”。等到火车在隧道另一端( B )出现时, B 端的信号员向 A 端反馈“隧道已空”。 A 端接到这个信号以后就重置隧道入口信号灯,允许下辆火车 进入隧道。当然,在重设信号灯 之前,要确认从该端进入隧道的火车已经在另一端出现。为了让系统更加安全,又加了第三个消息码,可以让信号员向他的同事发问:“火车已经离开隧道了吗?”两个信号员的工作保证了隧道的安全使用。该协议同时也考虑到了即使在隧道的某端的 信号发射器功能失效的情况下,即当火车进入后信号灯没有变成红色或者信号灯坏掉,则信号员会用红旗和白旗来表示信号,从而维持交通的正常进行。

 

        当火车1进入隧道时,信号灯坏了,未能自动变成红色信号灯,看守A发送信号TT给看守B,同时举起红旗,在看守A还没有举起红旗的时候,火车2来的太快,没有及时停下,进入隧道;幸运的是在进入隧道的瞬间司机看到了红旗,火车3看到红旗停下了。

 


       看守A再发送信号TT给看守B (用于火车-2)

 

       看守B无法理解第2个TT信号

 

        看守A发送TL给B,看是否两个火车均出去

 

        看守B看到火车1出来,发送TF信号给看守A


     看守2想火车-2已经离开隧道,于是向火车-3举白旗让其通过

 

     火车-2在进入隧道后,看到红旗,于是想退回到隧道入口等候


结果


火车-3和火车-2相撞:21死176伤


教训: (1)最简单的协议也存在错误的可能性

 

             (2)协议在投入使用前,应该经过充分的验证

 

            (3)采用合适的技术来进行设计、分析和验证协议是十分必要的:协议工程方法

    

分层结构  

 

案例6:  如何使位于两地的一位仅会德语,而另一个仅会汉语的两个哲学家对话?

 

        由于没有共同语言,两人都选择翻译,每个翻译又要和哲学家各自的秘书相联络。在如果哲学家1希望向哲学家2表示他的某一个哲学话题,首先应把这一消息用德语传送给他的翻译。两个翻译要预先确定好一种双方都能理解的中立语言,如英语,这样哲学家1的哲学话题就翻译成英语。翻译1 见将翻译好的信息交付给秘书1传送出去。当消息到达时,由秘书2交给翻译2 ,翻译2再将翻译好的信息交递给哲学家2.这里选择哪一种语言是翻译要关注的事。这样两个哲学家之间的对话就可以通过一个具有三层结构系统予以实现。

                                                                              

                        哲学家、翻译、秘书的 层间结构

       

        这个例子告诉我们,当一个问题很复杂时,必须将其分解成若干个子问题,这些子问题相对简容易解决。设计复杂网络协议时,通常也可以采用网络分层思想,所谓协议分层就是将完成及计算机通信全过程的所有功能划分成若干层,每一层对应一些独立功能。

 

案例7:如果下图所示的三层邮政系统实现信件传输,用户、邮政局、运输部门之间的约定的内容和目的是什么?与网络系统中实体、接口、协议、服务的关系是怎么样的?

        人们平常写信时,用户之间要约定信件的格式和内容:首先,写信时必须采用双方都懂的语言和文字,开头是对方称谓,最后是落款等。这样,对方收到信后,才能看懂信中的内容,知道是谁写的,什么时候写的等。信写好之后,必须将信装入信封(封装)并交由邮政寄发。寄信人和邮政之间也有约定:这就是规定信封写法并贴邮票,中国邮政部门规定信 封从上到下分别写上收信人的地址、姓名、和寄信人的地址。邮局收到信后,首先进行信件的分拣和分类,然后交付有关部门进行运输,如航空信交民航,平信交铁路或公路运输等。这时,邮政和运输部门间也有约定:如到站地点、时间、包裹形式等。信件运输到目的地进行相反的过程。最终将信件送到收信人手中,收信人依照约定的格式才能读懂信件,各种约定是为了达到将信件从一个源点送到某一个目的约定的点的目标而设计的,它们是由信件的流动而产生的,这些约定可以分为同等机构间的约定,如用户之间的约定、邮件和运输部门之间的约定、这些约定是系统之间的对等协议;不同机构之间的约定,如用户和邮政之间的约定,这些约定就是系统各层次之间的接口。整个系统包含三个子系统,即用户系统、邮政子系统、和运输子系统,它们是系统中的实体,其中子系统中的双方用户、邮政子系统中的双方邮政局以及运输子系统中的运输部门均是对等实体。不同子系统之间的关系就是服务和被服务的关系,即用户子系统使用邮政子系统提供服务,邮政子系统使用运输子系统提供服务。

 

案例8:在邮政系统中是如何实现对信件封装和解封装?

 

          发信方将一份信(原始数据)放入信封,并在信封上写上发送方和接收方的具体地址,信件被送到发送方的邮政局,这里的员工会将信息加入一个更大的包裹里,包裹上会写上发送方和接收方所在的城市名,随后报告通过邮政系统发送到目的城市。在接受地包裹被送到邮政局,在这里检查接收方的城市名。一遍确保邮件被投递到正确的位置。接下来,包裹被打开,取出里面的小信件并丢弃包裹,这里将检查小信件上的接受方地址,并将各信件送到响应的接受者。每个接受者首先检查接受者的地址,确保邮件被正确投递,然后打开并丢弃小信封阅读发送的原始数据,这个过程 与实际网络系统中的过程是十分相似的网络系统中每层都要向下层请求服务,发送方首先在原始数据中添加头部和尾部信息,如控制信息、路由信息、差错检测信息等,再将封装的信息箱下层进行传输。数据包从最高层次经过各层传递到最低层次后,再通过实际的 物理电路从发送方系统传输到接收方系统,接收方再从最低到最高层解封装,删除头部和尾部信息,直到最后回复到原始数据。

 

          通过上述的分析,不难看出:分层使复杂系统的功能模块化,每层都可以使用合适的技术,使得实现和维护变得容易,由于每层的功能相对独立,当某层发生变化时,只要层间接口 有些功能会在不同的层次重复出现,因而产生了额外开销,故分层应遵循一定的原则。

                                                                                                                              上一页                下一页