计算机网络——可靠传输及其实现机制
文章目录1.可靠传输的基本概念2.实现机制1.停止—等待协议SW2.回退N帧协议GBN(Go-Back-N)1.可靠传输的基本概念 前面提到差错检测技术类似CRC,通过这种手段接收端就能发现帧在传输过程中是否产生了误码。而如果发现产生了误码,对于不可靠传输而言,仅仅丢弃有误码的帧,其他什么也不做。而可靠传输则不一样,它会实现发送端发送什么,接收端就接收到什么。 一般情况下,有线链路的误
1.可靠传输的基本概念
前面提到差错检测技术类似CRC,通过这种手段接收端就能发现帧在传输过程中是否产生了误码。而如果发现产生了误码,对于不可靠传输而言,仅仅丢弃有误码的帧,其他什么也不做。而可靠传输则不一样,它会实现发送端发送什么,接收端就接收到什么。
一般情况下,有线链路的误码率比较小,不要求数据链路层向上提供可靠传输服务,即使有误码,问题也由上层解决。无线链路容易受干扰,因此要求提供可靠传输服务。
从整个计算机系统看,比特差错只是传输差错中的一种,还有诸如分组丢失、分组失序、分组重复,这些错误一般不出现在数据链路层,而是在其上层。可靠传输服务也不局限于数据链路层,其它层均可以实现可靠传输。而可靠传输的实现手段就是我们需要进一步了解的。
2.实现机制
1.停止—等待协议SW

停止—等待协议就是当发送发发送一段数据后,会停下来等到接收方返回消息,确认收到或没有收到数据。如果收到数据,会返回确认消息ACK,发送方就可以继续发送,而如果没收到就会返回否认消息NAK,接收方会重新发送之前的数据。
但如果数据丢失了,发送方一直在等待接收方的确认或否认,数据传输就陷入停滞。针对这种情况可以设置超时计时器,设置重传时间,其值应略大于从发送方到接收方的平均往返时间,当接收方在重传时间内一直未得到反馈,就会重新发送原来的数据。
当出现超时重传的情况后,接收方需要判断接收到的数据分组是不是重复的,因此需要给每一个分组编号,因为每次发送端发送数据后都会停下来等待,所以相邻数据分组的编号只要互不相同即可,依次取0,1,0,1…当发现两次接收到同样编号的数据分组,将其丢弃即可。
同样的道理,确认信息也有可能出现晚点,这样就可能导致原本是上一个数据分组的确认信息,却被以为是新的分组的确认信息,造成误会。也可以给确认信息像发送端发送的数据分组一样编号。
SW协议的新到利用率如上图所示,在忽略处理数据时延的情况下,取决于发送实验TD,往返时间RTT,一般TA较小可忽略。
2.回退N帧协议GBN(Go-Back-N)

停止—等待协议的信道利用率比较低,如果采用上图所示的流水线传输,即一次性传输多个数据分组,可提升行动利用率,再次基础上,就可以引出回退N帧协议。
加入采用3个比特给分组编号,即序号0-7,选择发送窗口的尺寸在1~2^3-1之间,如果选择尺寸为8,会导致无法分辨新旧两组数据的问题。这里假设发送窗口分组数为5,接收窗口分组数为1。则发送方可以同时发送5个分组。
接收窗口每接收一个分组就向前进一格,并向发送端发送确认信息,发送窗口收到确认信息后,也会前进相应的分组数。
接收方不一定需要对收到的分组逐个发送确认,可以在收到几个分组后,对按序到达的最后一个分组发送确认。比如上图中接收方收到了5个数据分组,对分组4发送了确认,这样接收方就知道了这些分组被正确接收。并且即使其中有分组丢失了,也不需要发送方重传。
而如果上图中的分组5出现了误码被丢弃,那么接下来的4个分组序号就不匹配了,此时就会触发退回机制。
每接收到一个序号不符合的分组,接收方就会产生一个对接受到的最后一个分组4的确认,并发送给发送方,发送方就知道需要进行重传。
3.选择重传协议SR
GBN协议中一个数据分组的误码就会导致其后续多个数据分组被丢弃,会引起发送方的超时重传,这是对通信资源的巨大浪费。为了进一步提高性能,可以设法只传送出现误码的数据分组。接收窗口的尺寸不应该在等于1,当接收方收下失序到达但无误码、并且序号落在接收窗口内的数据分组,等待缺失分组收齐后再一起上交,这就是选择重传协议。
发送窗口的尺寸应在1~2^(3-1)之间,超过这个范围同样会引起无法分辨新老分组的情况。选择接收窗口和发送窗口的尺寸都为4,发送窗口传输4个分组到达接收方,其中分组2丢失了。
接收到前两个分组后,接收窗口前移两格,再将没有误码的分组3也接收,但并不前移。发送对0,1,3的确认给发送方,发送窗口会前移两格。
发送窗口将进入窗口的分组4和5页发送出去,并获得确认。而当重传计时器超时,发送方会重新发送分组2到接收方,接收完成后,接收窗口和发送窗口都向前移动4格。
更多推荐


所有评论(0)