叁只技术宅 2022-12-30 23:01 采纳率: 33.3%
浏览 56
已结题

计算机网络rdt2.1的问题咨询

题主初探计算机网络,在学习rdt2.1的时候 rdt2.1说解决了位出错的问题,增加了编号机制规避了重复(不按时到序、丢包、等其他问题暂不考虑)

产生了如下疑问:
假设有两台主机:主机A、主机B
如果主机A发送一个消息给主机B,主机B验证校验和发现这条消息有误,那么B主机发送NAK给主机A,但是如果在途中经过位错误,万一变为了合法的ACK被主机A接受(A主机验证校验和正确且是正确的ACK)那么A主机继续发送下一个分组,这样的话就导致死循环问题吗?(主机B收到下一个分组消息发现不是自己要求的序号分组,再次发送一个NAK,A主机(误认为上一个分组已经正确接受)接到NAK还发这个B主机永远无法确认的下一个分组)

  • 写回答

4条回答 默认 最新

  • heart_6662 2022-12-31 00:30
    关注

    望采纳!!点击该回答右侧的“采纳”按钮即可采纳!!
    我觉得你描述的情况可能会导致死循环问题。


    为了避免这种情况,我们通常在发送和接收消息时会使用计数器或序号来确保每条消息的唯一性和正确性。

    举个例子吧:
    在主机 A 和主机 B 之间的通信中,主机 A 可能会将每条消息的序号附加到消息本身中
    ,而主机 B 可能会将收到的消息序号与期望收到的序号进行比较,以确定是否应该接受消息。
    如果收到的序号不是期望的序号,则主机 B 可能会发送 NAK 消息,要求主机 A 重新发送消息。

    同时,主机 A 可能会在每次发送消息时将序号增加 1,
    以便主机 B 可以通过序号来确定是否已经接收到了最新的消息。
    这样,即使在途中出现位错误,主机 B 也可以通过序号来确定是否已经接收到了最新的消息,
    从而避免死循环问题。

    当然,还有其他方法可以避免死循环问题(我就不一一列举咯),比如使用重传计数器或添加超时时间等。不过,这些方法的具体实现可能会因环境和应用场景而异。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 1月8日
  • 已采纳回答 12月31日
  • 修改了问题 12月30日
  • 创建了问题 12月30日

悬赏问题

  • ¥15 如何删除这个虚拟音频
  • ¥50 hyper默认的default switch
  • ¥15 网站打不开,提示502 Bad Gateway
  • ¥20 基于MATLAB的绝热压缩空气储能系统代码咨询
  • ¥15 R语言建立随机森林模型出现的问题
  • ¥15 中级微观经济学,生产可能性边界问题
  • ¥15 TCP传输时不同网卡传输用时差异过大
  • ¥15 请各位看看我写的属于什么算法,或者有更正确的写法?
  • ¥15 html5 qrcode 扫描器
  • ¥15 爬取网页信息并保存需要完整代码