UDP 和 TCP 有什么区别?

Guy*_*Guy 47 networking tcpip router tcp udp

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

spl*_*tne 75

你可以在这里找到一个很好的总结:

UDP 和 TCP 互联网协议有什么区别?

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

最重要的区别是:

  • 可靠性
    TCP:面向
    连接 UDP:无连接
  • Ordered :
    TCP: 保证接收消息的
    顺序 UDP: 不保证顺序
  • 协议权重
    TCP:重量级,因为连接/排序开销
    UDP:轻量级,很少开销
  • 数据包
    TCP:流式传输,数据作为“流”读取,没有区别一个数据包的结束位置和另一个数据包的开始位置。每个读取调用可能有多个数据包。
    UDP:数据报,每个读取调用一个数据包。

框架结构

当数据通过网络发送时,它需要被封装到所谓的“帧”中。根据所使用的协议和拓扑,有多种封装方法。下图显示了 TCP 和 UDP 帧结构的不同之处。

这是 TCP 帧结构:

TCP帧

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

UDP帧

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


小智 53

TCP由 acks 和重试支持,以确保您的数据到达目的地。UDP是无连接和“即发即忘”。UDP 主要用于流类型的应用程序,如果您丢失了一些数据,则无需再次尝试发送。

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

  • +1。补充一点,任何寻求更深入理解的人都应该阅读 W. Richard Stevens 中关于该主题的许多优秀书籍之一。“TCP/IP Illustrated, v1”和“UNIX Network Programming”是优秀的教程和参考资料。 (15认同)
  • 这是有道理的 - 所以如果你正在流式传输视频,那么稍后重新发送丢失的帧就没有意义了,因为你已经过了那个点。谢谢 (3认同)

pgs*_*pgs 46

以及CEO级别的解释:

UDP 是当您将纸张扔向垃圾箱的大致方向时。

TCP 是当它错过时,你一次又一次地扔同一张纸的精确副本,直到它掉进垃圾箱。会浪费纸张,甚至重新发送 TCP 数据包会导致网络或系统资源的浪费。


Bri*_*ian 7

TCP 和 UDP 都是运行在 IP 之上的协议。TCP 有保证的交付,而 UDP 没有。您可以根据您尝试转发的服务选择一个或另一个进行端口转发。HTTP,例如是 TCP。如果您不知道您尝试转发的服务是什么协议,则几乎可以肯定它是 TCP。