UDP是不可靠的,为什么I2P (大蒜路由,一个替代Tor)使用UDP而不是可靠的替代: TCP?I2P不会因为UDP而变得不可靠吗?
发布于 2023-04-21 11:33:54
除了Zac之外,我不能代表I2C的开发人员发言,但是这里有一些一般性的想法。
(1) UDP添加一个包含端口号和校验和的报头。您需要一个端口号来标识套接字。否则,它提供与发送原始IP数据包相同的服务类型。是的,这是最大的努力/不可靠。
(2)在不可靠服务的基础上建立可靠的服务。这基本上就是TCP所做的。然而,TCP有一种非常具体的方法来实现这种可靠性,这可能是不必要的和/或不适合某些应用程序的。除了可靠性之外,TCP还有许多其他机制,这些机制可能适合或不适合应用程序,最显著的是拥塞控制。
(3) UDP的大多数用法实际上涉及在UDP之上实现另一个协议,这更适合于所讨论的任务。正如Zac67所说,由于防火墙和NAT盒以及传输协议通常是OS内核的一部分,在UDP之上有另一个协议更容易。其中一个非常著名的例子就是QUIC。另一个例子是RTP (用于VoIP流量)。
(4)最后,如果你考虑建造隧道的任务,以隧道网络流量。Web流量是TCP,它旨在运行在不可靠的IP服务之上。不需要有可靠的隧道(因为TCP无论如何都会处理它),在某些情况下,可能会产生更多的问题,然后才能解决(堆栈中的两个TCP实例可能会相互不利地交互)。
发布于 2023-04-21 10:26:13
一般答案:如果你需要/想要更多的控制传输,并愿意忍受送货跟踪和无序求助,那么你使用UDP。
TCP确保可靠的传递,但引入了您可能希望避免的额外开销和延迟。
可靠的UDP是一件事,但是由于IPv4 NAT的普遍存在以及在开放的互联网上几乎不可能使用TCP和UDP以外的其他协议,所以您可以在这两种协议之间进行选择。
至于xyz为什么使用UDP而不是TCP,您需要使用开发人员。还请注意,传输层上的协议在这里显式地脱离了主题。
https://networkengineering.stackexchange.com/questions/82974
复制相似问题