栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

实现TCP协议端到端的可靠传输 RDT

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

实现TCP协议端到端的可靠传输 RDT

RDT2.0:


在RDT2.0中,传输通道被视为有可能发生比特错误,我们使用差错检测来检验接收到的包有没有错误,以此来判断是否应该重传。接收方会返回NAK或ACK,分别对应数据错误和数据正确。在Log.txt中可以看到,在此处接收方返回了NAK,让发送方重传数据。


RDT2.1:

RDT2.1解决了RDT2.0一个致命的问题,那就是返回的NAK或ACK也可能会出现比特位翻转,为了解决这个问题,我们在RDT2.0的基础上增加一个序号(0或1)。这时,发送方有两种发送状态发送0号数据包和1号数据包,接收方也有两种等待状态等待0号数据包和1号数据包。

当ACK和NAK没有发生比特翻转时,当发送方发送0号数据包时,接收方此时期待0号数据包,如果发送时数据没有发生比特翻转,接收方通过检验发现没有问题,会向发送方返回ACK,并期待1号数据包,发送方接收到此返回值,会继续发送1号数据包。如果发送时数据发生比特翻转,接收方通过检验发现错误,会向发送方返回NAK,发送方接收到此返回值,会重新发送0号数据包。

当ACK和NAK发生比特翻转时,假设当发送方发送0号数据包时,接收方返回ACK,但是ACK发生比特翻转,此时接收方期待1号数据包,发送方重新发送0号数据包,所以接收方会拒绝接收0号数据包避免出现重复。如果接收方返回NAK,但是NAK发生比特翻转,此时接收方期待0号数据包,发送方继续发送1号数据,所以接收方会拒绝接收1号数据包避免出现顺序错乱。


RDT2.2:

RDT2.2去掉了NAK,全部返回ACK,只是返回的时候会返回数据包发送过来时的序号。


RDT3.0:

RDT2.2没有考虑到可能会出现丢包的情况,所以RDT3.0在RDT2.2的基础上增加了计时器的机制,如果在RTT时间内,发送方没有接收到接收方返回的返回值,那么发送方会认为数据包在发送过程中丢失了,所以发送方会自动重传。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/692545.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号