我正在尝试找出丢包和重复包问题之间的区别。有没有人知道“包复制”是怎么回事?这与在TCP中检测到丢失时重传数据包是否相同?
发布于 2012-10-13 17:26:13
不是的。在TCP中,“数据包”的传输是可靠的(我认为在这种情况下,术语数据应该更好一些,因为它是面向流的协议)。
丢包和复制是与面向数据报的不可靠协议(如UDP )有关的问题。在UDP中,当你发送一个数据报时,它可能会重复到达、乱序到达,甚至根本不会到达。
在
中检测到丢失时,这是否与重新传输数据包相同?
是也不是。假设TCP在内部使用ack机制来检测丢失的数据,并自动重新提交它们。因此,丢失的数据对用户是透明的,并由协议本身处理。
有人知道“数据包复制”是怎么回事吗?
在某些情况下,可能会发生IP数据包在通往其目的地的路径上重复的情况。例如,路由器可以决定通过两个不同的网络接口转发传入流量。在这种情况下,两个IP分组都将到达目的地。
TCP处理重复的IP数据包的问题,所以你不关心它们。
UDP不会处理它们。当您收到数据报时,不能保证您以前没有收到过相同的数据报。你应该去检查一下。
发布于 2012-10-13 17:49:33
您可能指的是两个重复的数据包:有效负载(发送的数据)的重复或有效负载和报头的精确复制。TCP将尝试重新发送它没有接收到ACK (来自接收器的确认,数据包到达正常)的数据。然而,这导致了著名的"two Generals“问题,在这个问题中,您永远不能确定数据是否真正到达,或者如果您只是因为ACK数据包丢失而没有得到ACK。接收器本可以收到数据包,并以ACK应答,但ACK随后丢失。在这种情况下,发送方将假设从未接收到该数据包,并使用相同的有效负载复制向发送另一个数据包。由于这种情况,像TCP这样的协议需要处理多次发送数据。在这种情况下,答案是“是”,它们是同一件事。
第二件事重复的数据包可能意味着实际的100%重复的数据包(有效载荷和报头)。这可能是由于软件、硬件或路由问题中的错误或配置错误造成的。在这种情况下,不是,这是一个有点不同的问题与TCP故意发送新的数据包与重复的有效负载从检测到的数据包丢失。在这种情况下,发送方只发送了一个数据包,但路由器或硬件接口在此过程中的某处复制了该数据包。
https://stackoverflow.com/questions/12871760
复制相似问题