数据包丢失和数据包重复

sou*_*rar 7 udp tcp duplication network-protocols packet-loss

我试图找出丢包和数据包重复问题之间的区别.有谁知道'数据包重复'到底是什么?当在TCP中检测到丢失时,它是否与重新发送数据包相同?

Hei*_*bug 11

号在TCP交付"三包"是可靠的(我认为的项数据应该是在这种情况下更好,因为它是一个面向流的协议).

丢包和复制是与不可靠的协议数据报相关的问题UDP.在UDP中,当您发送数据报时,这可能会重复,无序或甚至根本不到达.

当在TCP中检测到丢失时,它是否与重新发送数据包相同?

是的,不是.假设TCP在内部使用ack机制来检测丢失的数据,并自动重新发送它们.因此,丢失的数据对用户来说是透明的,并由协议本身处理.

有谁知道'数据包重复'到底是什么?

在某些情况下,可能会发生IP数据包沿着到目的地的路径重复.例如,路由器可以决定通过2个不同的网络接口转发传入流量.在这种情况下,可能会发生两个IP数据包都将到达目的地.

TCP处理重复的IP数据包问题,所以你不关心它们.

UDP不处理它们.当您收到数据报时,不能保证您之前没有收到过相同的数据报.你应该检查一下.

  • 永远不能保证交付,您只需要合理地知道交付是发生还是失败。 (2认同)
  • 说TCP是“可靠的”,没有资格,这是“错误的”。不是,因为不可能,并假设它很危险。现实世界中的协议由于未实现而被破坏。TCP保证每个数据包只会到达一次,并且保证顺序(因此在这种情况下答案是正确的),但是如果连接中断,您将不知道确切到达了什么。您最多只能知道一切都已完成(已确认),但由于操作系统未向应用程序报告,反正使用率不高。 (2认同)

Phe*_*ide 9

有两件事你可能意味着重复数据包:有效负载的重复(正在发送的数据)或有效负载和标头的完全重复.TCP将尝试重新发送它没有收到ACK的数据(来自接收方的确认数据包到达的确认).然而,这导致着名的" 两个将军 "问题,你永远无法确定实际到达的数据,或者你是否因为ACK数据包丢失而没有得到ACK.接收方可能已收到数据包,并以ACK回复,但ACK随后丢失.在这种情况下,发送方将假定从未接收到数据包,并发送具有相同有效负载的另一个数据包.由于这种情况,像TCP这样的协议需要处理多次发送数据.在这种情况下,答案是"是",它们是相同的.

第二件事重复数据包可能意味着实际的100%重复数据包(有效负载和标头).这可能是由于软件,硬件或路由问题或配置错误导致的错误.在这种情况下没有,这是一个有点不同的问题,而不是TCP从检测到数据包丢失中发送具有重复有效负载的新数据包.在这种情况下,发送方只发送了一个数据包,但它在路由器或硬件接口的某个地方被复制.