网工干货知识

超全学习笔记
当前位置:首页 > 干货知识

可靠的数据传输技术(RDT)2.0

更新时间:2026年03月27日   作者:spoto   标签(Tag):

可靠的数据传输协议RDT 2.0,其工作原理是基于在比特错误率较高的信道上进行的可靠数据传输。 这是一种更为现实的模型,可以用来检测在数据传输过程中可能出现的比特错误。也就是说,当数据包中的比特数据发生损坏时,这种模型就能有效地进行识别。 这种比特错误发生在网络中的物理组件上,通常发生在数据包的传输、传播或缓冲过程中。 在这里,我们假设所有被接收的数据包都是按照发送的顺序来接收的,无论这些数据包是否发生了损坏。

在这种情况下,我们需要用户发送ACK(确认消息),表示接收到的数据包是有效的,且没有被损坏。或者,用户也可以发送NAK(否定确认消息),表示接收到的数据包已经损坏了。在这个协议中,我们通过这种方式来检测错误。校验和字段校验和是一种表示传输数据中比特位数的数值。如果最终用户计算出的校验和值与原始校验和值有轻微的差异,那就意味着数据包已经损坏了。因此,需要一种机制来让接收方能够利用校验和来检测数据包中的比特错误。错误检测

这种技术使得接收方能够检测并纠正数据包中的比特错误。需要注意的是,这种技术需要额外的比特数据从发送方传输到接收方。这些额外的比特数据会被纳入RDT 2.0数据包的校验和字段中。

另一种技术是接收方的反馈由于发送者和接收者分别运行在不同的终端系统上,因此,发送者要了解接收者的情况,也就是是否成功收到了数据包,唯一的办法就是让接收者向发送者提供明确的反馈。这种反馈可以是“肯定应答”(ACK)或“否定应答”。NAK在消息输入场景中,回复的内容就是这种反馈的示例。值为0表示NAK,而值为1则表示ACK。

发送方

RDT 2.0的发送端有两种状态。 在一个状态下,发送端协议正在等待数据从上层传递到下层。 在另一个状态下,发送方协议正在等待来自接收方的ACK或NAK数据包(即反馈信息)。 如果收到了一个ACK数据包,即rdt_rcv(rcvpkt)且rcvpkt为ACK,那么发送方就知道最近传输的数据已经成功接收。此时,协议会回到等待上层层数据的状态。

如果收到NAK响应,那么该协议会重新发送最后一个数据包,并等待接收方对重新发送的数据包作出ACK或NAK的响应。 需要注意的是,当发送方处于“等待ACK或NAK”的状态时,它无法从上层获得更多的数据。这种情况只有在发送方收到ACK之后才会发生,此时发送方才会离开这种状态。 因此,发送方在确保接收方已正确接收到当前数据包之前,不会发送新的数据。由于这种协议行为,该协议也被称为……停止并等待协议


接收方

接收端只有一个状态。一旦数据包到达,接收端就会根据数据包是否损坏来发送ACK或NAK响应。具体来说,就是使用rtd_rcv(rcvpkt) && corrupt(rcvpkt)来判断数据包是否损坏;如果数据包损坏,则发送NAK响应;如果数据包没有损坏,则发送ACK响应。同样,也可以使用rtd_rcv(rcvpkt) && not corrupt(rcvpkt)来判断数据包是否完好无损。

RDT 2.0看起来似乎可以正常工作,但实际上它存在一些缺陷。很难判断那些用于发送ACK/NAK包的数据是否真的被损坏了。如果数据包被损坏了,那么协议又该如何处理这些错误呢?这里的难点在于,如果ACK或NAK包被损坏了,发送方就无法知道接收方是否成功收到了最后一条传输的数据。

              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

相关资讯

即刻预约

免费试听-咨询课程-获取免费资料