本文讲解了计算机网络中如何实现可靠传输的工作协议
一、可靠传输
我们首先要知道,什么是可靠传输。
可靠传输是指,在传输过程中,要保证数据传输的可靠性,包括帧丢失重传的解决。
最简单的可靠传输方法: 停止等待协议
简单来说就是:
- 我给你写了一封信,寄出去(存在丢失的可能),只有确认你收到回信我才继续写信
- 你收到信,寄给我一封“已收到”(存在丢失的可能)
- 如果我收到“已收到”,则继续邮寄下一封信
- 如果出现我寄出的信丢失,有两种方法进行确定,一是超时后,你邮寄给我“未收到”的信,我进行重发;二是我规定一个时间没收到你的回信我就重发。
可以看出,这种方法效率非常低下,但是可靠性确实是得到了保证,接下来我们需要对其加以改善,如果网络这样的话,太慢了。
二、流水线传输
在计算机组成原理中我们学到过,指令的执行可以使用流水线来提高CPU利用率,这里我们也可以利用流水线思想提高计算机网络的利用率。
对于可靠性的问题,就要看下面的协议进行解决了。
三、连续ARQ协议 / GBN协议
3.1 实现原理
和流水线一样,发送方可以连续发送数据,出现错误的话,返回出错的地方重新发送出错之后的所有帧(回退N帧)。
采用否认帧的方式:
采用超时重传的方式:
3.2 GBN缺陷
- 回退N帧效率低下,很多帧需要重传
- 需要对帧进行编号,进一步加大系统开销
四、滑动窗口
以上三种方法,都有一个共同点,就是发送方可以传输一个或多个数据,但是接收方只能接收一个帧。
针对这种情况,可以进行进一步优化:在发送方和接收方都维持一个窗口。
- 发送方:维持一个固定长度的窗口,只有收到一个最左边的确认帧才对窗口进行右移。
- 接收端:收到数据帧的发送序号落入接收窗口内, 才允许将该数据帧收下,否则一律丢弃。
特点:
- 如果接收窗口大小是1,则退回了GBN协议。
- 如果接收窗口和发送窗口大小都是1,则退回了停止等待协议。