it-swarm.cn

UDP和TCP有什么区别?

设置端口转发时,我的路由器有两个协议(和“两个”选项)可供选择:UDP和TCP。这两种协议之间有什么区别?在端口转发中何时选择一种?

47
Guy

[〜#〜] tcp [〜#〜] 由acks和retry支持,以确保您的数据到达要去的地方。 [〜#〜] udp [〜#〜] 是无连接的,“解雇了”。 UDP主要用于流式应用程序,在这种情况下,如果丢失了一些数据,则无需尝试再次发送。

您使用哪一个取决于应用程序。例如,Web服务器使用TCP。

52
user640

您可以在此处找到良好的摘要:

UDP和TCP Internet协议?

TCP和UDP都在传输层TCP/IP模型上工作,但用法却大不相同。

最重要的区别是:

  • 可靠性
    TCP:面向连接
    UDP:无连接
  • 订购
    TCP:保证消息接收的顺序
    UDP:无法保证顺序
  • 协议权重
    TCP:重量级,因为存在连接/排序开销
    UDP:轻量级,开销很少
  • 数据包
    TCP:流传输,数据被读取为“流”,没有任何区别可以区分一个包在何处结束而另一个包在何处开始。每个读取呼叫可能有多个数据包。
    UDP:数据报,每个读取调用一个数据包。

框架结构

通过网络发送数据时,需要将其封装为所谓的“帧”。有多种封装方法,具体取决于所使用的协议和拓扑。下图显示了TCP和UDP帧结构如何不同。

这是TCP帧结构:

TCP frame

这个UDP帧结构,简单得多:

UDP frame

使用TCP)的典型协议是HTTP,FTP和SMTP。使用UDP的协议示例是DNS和DHCP。

74
splattne

和CEO级别的解释:

UDP是指您将纸张扔向垃圾箱的一般方向时的情况。

TCP丢失时,您会一次又一次地扔掉同一张纸的精确副本,直到它落入垃圾箱。可能会浪费纸张,甚至重新发送TCP数据包也会导致网络或系统资源的浪费。

45
pgs

TCP和UDP都是在IP之上运行的协议。 TCP可以保证传递,而UDP无法保证。您可以根据要转发的服务选择一个或另一个来进行端口转发。例如,HTTP是TCP。不知道您要转发的服务是哪种协议,几乎可以肯定是TCP。

7
Brian

要回答问题的其他部分,您必须转发应用程序使用的内容。要转发HTTP通信,请选择TCP。要转发TFTP流量,请选择UDP。 p2p程序大多数同时使用tcp和udp,因此将它们都转发。

这完全取决于您使用的协议和程序。

3
hayalci

以及到目前为止提到的差异TCP还提供了

流量控制。使用窗口机制,接收方可以限制发送方必须等待发送更多数据之前必须从发送方接收多少个八位字节(字节)。接收方可以随着对话的进行更改窗口的大小。这使接收方可以“限制”发送方的数据速率:UDP不允许这样做,并且接收方可以做的就是丢弃无法缓冲或在到达时进行处理的数据。

一些更多的技术功能,例如非连续确认(使用选择性确认,以使发送方仅重新发送丢失的帧,而不是丢失的帧以及接收方已经以常规方式无法确认的后续帧),拥塞处理和自适应重传(调整计时器,该计时器决定在未收到确认时重新发送已发送帧的时间)。这些与UDP不相关,但可以帮助TCP通过UDP提供额外的服务,而不会大大增加相同有效负载量的网络负载。

2
mas

TCP尽力确保将数据传递给接收方; UDP没有。

2
J. Polfer

没关系,所有答案都可以解释一个对另一个。为了设置端口转发,规则非常简单:您需要选择TCP,除非要使用的协议/应用程序文档使用UDP。通常,使用UDP的人与流相关,或者是非常简单的事物,它们倾向于轻量级协议/速度而不是可靠性(尤其是DNS和NTP)。请注意,除了TCP和UDP之外)还有其他协议-ICMP,隧道协议等。

1
Lee B

协议越广为人知,路径上的路由器介入的协议越多。发送tcp数据包,很有可能接收到的数据包受到了严重破坏。 UDP通常不是那么混乱,而其他254个IP paylod协议通常是完全不受影响的。

1
user60557

用户数据报协议(UDP)

它是Internet协议套件基本协议的一部分。联网计算机上的程序可以发送短消息,有时也称为数据报。 UDP不保证任何可靠性(碰巧数据报可能会乱序到达,重复或丢失,恕不另行通知)。事实证明,对于不需要保证传送的应用程序,由于不检查是否所有数据包都已实际传送,因此UDP证明更快,更有效。 UDP在以下情况下可以找到其用途:

时间敏感的应用程序。避免了由于延迟数据包引起的问题

它对于回答来自大量客户端的小查询的服务器也很有用。 UDP支持数据包广播(传送给本地网络上的所有用户)和多播(传送给所有订户)。

传输控制协议(TCP)

由于该协议在Internet协议套件中的重要性,通常将其称为TCP/IP。 TCP在更高级别上运行,仅与两个终端系统有关(例如,在Web浏览器和Web服务器之间)。 TCP提供从一台计算机上的一个程序到另一台计算机上的另一个程序的可靠,顺序的数据流传递。 TCP重新组合电子邮件支持以及文件传输和Web应用程序的常见用法。在其管理任务中,TCP控制消息大小,消息交换速率以及网络流量拥塞。至于IP,它处理从计算机到计算机的较低级别的传输,作为通过Internet传输的消息。

0
surendran

嗯,这两种网络协议都是建立在称为Internet协议或IP的东西之上的。互联网协议是互联网的主要协议,例如,它使我们能够浏览网络。这就是为什么您经常会看到这些协议写为TCP/IP或UDP/IP的原因。它们实际上是互联网的核心协议。

在这两种情况下,您的数据都分成称为数据包的数据块。 TCP确保这些数据包以正确的顺序到达目的地,并且没有任何错误。

另一方面,UDP无法确保数据包甚至会到达。它将仅确保如果确实到达,它将没有错误。

通常,其他协议将在TCP和UDP)之上运行,因此称为应用程序协议,因为它们在应用程序而不是操作系统内运行。您的网络浏览器使用HTTP协议,该协议将使用TCP协议。

域名查询或DNS查询通常使用UDP,但也可以使用TCP。许多流服务在另一个应用程序协议下使用UDP。

我希望能用简单的英语回答您的问题。

0
Matt