您所在的位置:读书频道 > 网络与维护 > 网络协议 > 7.5.5 GO-BACK-N协议的窗口机制

7.5.5 GO-BACK-N协议的窗口机制

2007-07-05 12:56 王达 电子工业出版社 字号:T | T
一键收藏,随时查看,分享好友!

本章主要介绍局域网、广域网,以及OSI各层主要功能及其工作原理这些基本的计算机网络通信技术,同时还将介绍计算机网络数据通信中常见的技术指标和参数。这些都是我们平常进行各种网络工程施工和系统设计的基础和前提。本节是GO-BACK-N协议的窗口机制介绍。

AD:

7.5.5  GO-BACK-N协议的窗口机制
在前面已介绍了GO-BACK-N协议,在此继续介绍这一协议中的窗口机制。
直到现在,我们一直假定信号的传播延迟可以忽略不计,但事实上有些时候是不能忽略的,比如在卫星信道上,如果信道的数据速率为b bit/s,帧的长度为l bit,信号的来回延迟为R秒,则线路的效率为l/(l+bR)。如果我们在等待确认的时候多发送一些帧,就可以提高线路的效率,这事实上允许发送窗口包含多个未被确认的帧,这种技术称为"管道化"(Pipelining)。当信号传播延迟远大于帧的传输时间时,适合采用这个技术。
当管道化技术建立在不可靠的信道上时会有一些问题。比如,如果位于帧流中的某个帧丢失或损坏了,另外在发送进程发现出错前,大量的后继帧会到达接收方;也可能当一个坏帧到达接收方时,显然会被接收方丢弃,这些又如何处理呢?
有两种基本的方法来处理以上问题:(1)称之为"GO-BACK-N"协议,接收进程丢弃所有的后继帧,并且不通知发送进程。该策略对应接收窗口为1的情况,即只能按顺序接收帧,当发送进程超时后,必须按顺序重传所有未被确认的帧。如果错误率高的话,这种方法会浪费很多带宽,但对内存需求不大。(2)称之为"选择重传"(对应接收窗口大于1的情况),只要是落入接收窗口且校验正确的帧,都要接收下来放到缓冲区里,这样当发送进程意识到某个帧出错时,只是重传此帧而不是所有的后继帧。选择重传通常使用NAK对校验出错或疑为丢失的帧进行确认,以便发送进程尽快重传该帧。如果第二次重传成功,接收方的数据链路层中会有许多按顺序排列的正确帧,这些帧可以一起交给网络层,并只对最高序号的帧进行确认。当窗口很大时,这种方法需要大量的数据链路层内存,但它不浪费带宽。
GO-BACK-N的过程如下。
(1)初始化。
开网络层允许;
ack_expected = 0(此时处于发送窗口的下沿);
next_frame_to_send = 0,frame_expected = 0(初始化正在发送的帧和期待的帧序号);
nbuffered = 0(进行发送窗口大小初始化);
(2)等待事件发生(网络层准备好,帧到达,收到坏帧,超时)。
(3)如果事件为网络层准备好,则执行以下步骤。
从网络层接收一个分组,放入相应的缓冲区;
发送窗口大小加1;
使用缓冲区中的数据分组、next_frame_to_send和frame_expected构造帧,继续发送;
next_frame_to_send加1;
跳转(7);
(4)如果事件为帧到达,则从物理层接收一个帧,则执行以下步骤。
首先检查帧的seq域,若正是期待接收的帧(seq = frame_expected),将帧中携带的分组交给网络层,frame_expected加1;
然后检查帧的ack域,若ack落于发送窗口内,表明该序号及其之前所有序号的帧均已正确收到,因此终止这些帧的计时器,修改发送窗口大小及发送窗口下沿值将这些帧去掉,继续执行步骤(7);
(5)如果事件是收到坏帧,继续执行步骤(7)。
(6)如果事件是超时,即:next_frame_to_send = ack_expected,从发生超时的帧开始重发发送窗口内的所有帧,然后继续执行步骤(7)。
(7)若发送窗口大小小于所允许的最大值(MAX-SEQ),则可继续向网络层发送,否则则暂停继续向网络层发送,同时返回互步骤(2)等待。
注:在这个协议中有一个问题,没有考虑到当某个方向上没有数据要发送时,要对收到的帧进行单独确认。在收到期待的帧后应该启动一个ACK超时计时器,当发生超时事件时,判断哪个计时器超时,若是ACK计时器超时,应该单独发送一个确认帧。而当发送了一个数据包时,应将被捎带确认的帧的ACK计时器终止。另外,在使用GO-BACK-N协议时,发送窗口的大小不能超过2n-1。
【责任编辑:雪花 TEL:(010)68476606-8007】

回书目   上一节   下一节

分享到:

栏目热门

更多>>

  1. Linux服务器配置全程实录
  2. 揭秘--优秀PPT这样制作

热点职位

更多>>

热点专题

更多>>

读书

Ubuntu Linux入门到精通
本书全面介绍了Ubuntu Linux的相关知识,内容详实,论述清晰。主要内容包括Ubuntu介绍、文件系统管理、进程管理、压缩与查询

51CTO旗下网站

领先的IT技术网站 51CTO 中国首个CIO网站 CIOage 中国首家数字医疗网站 HC3i 51CTO学院 区块链第一聚合媒体 zhijiapro