【问题标题】:udp vs tcp packet droppingudp vs tcp 丢包
【发布时间】:2018-03-18 17:25:36
【问题描述】:

如果我通过网络发送两个数据包,一个是UDP数据包,另一个是TCP数据包,哪个数据包更有可能到达目的地?有人告诉我 TCP 协议更安全,但这是因为它的“故障安全”机制。但这是否也意味着 UDP 数据包更有可能被挡住?

我认为这与特定的路由器实现有关,因为一方面如果 UDP 数据包消失,那么双方可能都知道它可能会发生并且可以承受丢失一两个数据包但另一方面如果 TCP 数据包消失然后通过它的“故障安全”机制,它将发送另一个并解决问题,并且 TCP 数据包要重得多。 我想对这个问题有更可靠的答案,因为我觉得这个主题很有趣。

【问题讨论】:

  • 你已经自相矛盾了。 TCP 具有可靠性特性,那为什么还要靠路由器实现呢?

标签: tcp udp transport


【解决方案1】:

如果您决定为您的应用程序使用哪种协议,您确实需要更详细地研究这两者。下面只是一个概述。

TCP 是一种流协议,它提供了多种交付机制:保证按顺序交付数据。它将控制发送数据的速率(它将开始缓慢传输,然后提高速度直到达到对等方可持续的速率)。它将重新发送另一端未收到的任何数据。为此,您需要付出代价(例如启动缓慢、需要确认收到的所有数据等)

另一方面,UDP 是“数据块”(数据报)协议,不提供完整性/速率/顺序检查。它通过(可能)更快地“补偿”:您尽可能快地输出数据,另一方接收它能够捕获的任何东西,在极端情况下以全网速接收。不保证数据到达另一方的交付或顺序。他们要么收到整个数据报,要么什么都不收到。

人们通常做出的任何决定都与丢失或不丢失数据的可能性无关,而与丢失任何数据的严重性无关。视频流多次通过 UDP 完成,因为丢失偶尔的数据报不如拥有流畅的图像重要。文件传输不能承受任何数据丢失或数据块反转,因此 TCP 是自然的选择。

除了这个问题,请记住网络协议只是您问题的一半。另一半正在提出您的应用程序协议来解释您收到的字节......

【讨论】:

    猜你喜欢
    • 2011-07-23
    • 2014-01-23
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 2016-07-08
    • 2013-11-21
    • 2013-11-14
    相关资源
    最近更新 更多