计算机网络 -可靠数据传输原理 -运输层
需要注意的是,在rdt3.0之前的协议都是以分组肯定会到接收方为前提的。
一、可靠数据传输的小知识点
- 可靠运输(rdt)在发送端发送出去以及在接收端接收到的都是要经过不可靠运输(udt)。
二、可靠运输协议中的rdt协议
本段图片均来源于作者springtostring的文章。
2.1 rdt1.0
这个协议其实就是完全相信信道不会出现丢失以及乱序。简单的发送方发出去以及接收方接收,接收方不会回复发送方是否收到。这种情况下,双方都不需要进行缓存,发送方接到上级请求之后就直接发送。
2.2 rdt2.0
在这个协议中他假设的是所有的分组都不会乱序的被接收方接收到。但他可以处理比特差错。
而且他还有另外一个名字停等协议让人印象深刻。因为发送方发送一个分组之后就会等待接收方发出ACK分组的时候才会继续发下一个分组,如果等到NAK分组的话会重新发送刚才发送失败的分组,需要注意的是,如果一直接收不到ACK/NAK的话他就会一直等待。
2.2.1 rdt2.0如何处理比特差错?
引入ACK和NAK的报文对每一次接收方接到的报文进行回复。如果接收到比特没有差错的话,接收方会返回一个肯定确认;如果接收到的分组存在比特差错的话,接收方会返回一个否定确认。那我就要疑问了,**有没有否定不确认呢?**有,就是分组在路上丢失了,但在rdt2.0协议中不会讨论,我们在后面的协议中会进行说明。
ACK/NAK分组需要什么呢?
理论上ACK/NAK分组只需要一个字节就可以完成任务,1表示ACK,0表示NAK。