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

计算机网络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 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵