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

计算机网络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 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数
  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥15 vba使用jmail发送邮件正文里面怎么加图片
  • ¥15 vb6.0如何向数据库中添加自动生成的字段数据。