我一直在研究一本关于计算机网络的书(这不是一个家庭作业问题)
其中一个问题是比较基于ACK和NAK的数据传输协议,重点是对于基于NAK的协议,当收到第(x + 1)个数据包时,可以通过接收来检测数据包x的数据包丢失
但是,我的问题是如果接收方发送的NAK在到达发送方之前丢失会发生什么?发件人不会发现错误,也不会重新发送。如果数据包是序列中的最后一个怎么办? (没有后续的数据包可供测试)
我不知道NAK协议如何可靠(以正确的顺序传送每个数据包)
答案 0 :(得分:1)
我怀疑本书中描述的理论上下文假设数据包无限,并忽略了信道完全禁用等条件。在实践中,还有其他构造被定义为ACK / NAK协议的一部分,或者留给更高层或更低层的协议来处理。例如,物理层将提供诸如“信道被中断”的指示,并且可能上面的协议发送/接收“流末端”分组,其中定时器检测最后一个分组的NAK丢失的情况。这些只是假设的例子,但它们是现实协议所做的事情。
我不知道NAK协议如何可靠(提供每个协议) 数据包的顺序正确)
我确信这本书暗示有某种机制可以按顺序识别数据包。否则,接收器将无法指示它是哪个数据包NAK',即大多数协议在每个数据包/ ack / nak中使用序列号。
答案 1 :(得分:0)
仅NAK协议可以通过让接收器在发送NAK时启动定时器来实现可靠性,并在定时器超时之前重新发送NAK,然后重新发送丢失的数据包。