TCP 保证交付。 UDP 则不然。

这就是核心区别。其他一切都由此而来。

TCP(传输控制协议)

确保每个数据包按顺序完好无损地到达。如果数据包丢失,TCP 会重新发送它。就像带有跟踪功能的认证邮件一样。

工作原理:

  • 发送数据前建立连接
  • 确认收到每个数据包
  • 重新发送丢失的数据包
  • 以正确的顺序传送数据包

缺点: 较慢。所有检查和重新发送都会增加开销。

使用者:

  • 网页浏览 (HTTP/HTTPS)
  • 电子邮件(SMTP、IMAP)
  • 文件传输 (FTP)
  • SSH/远程访问
  • 任何精度比速度更重要的情况

UDP(用户数据报协议)

发送数据包而不进行确认。火并忘记。就像没有追踪的普通邮件一样。

工作原理:

  • 无连接设置
  • 立即发送数据包
  • 不检查他们是否到达
  • 不保证订单

优点: 快得多。没有来自确认的开销。

使用者:

  • 在线游戏(实时动作)
  • 视频流(Netflix、YouTube)
  • VoIP 通话(Zoom、Discord)
  • DNS 查找
  • 任何速度比完美更重要的情况

为什么游戏使用 UDP

在多人游戏中,如果包含您在时间 1:23:45 的位置的数据包丢失,则无需重新发送它。当它到达时,它已经过时了。你已经到了一个新的位置。

最好只发送下一个位置更新并继续移动。缺少一帧就好了。等待重传会导致延迟。

为什么网页浏览使用 TCP

加载网页需要每一部分(HTML、CSS、图像)完好无损。丢失一个数据包可能会破坏整个页面布局。

速度比准确性更重要。您宁愿多等待 0.2 秒,也不愿看到损坏的页面。

哪个更好?

都不是。他们解决不同的问题。

在以下情况下使用 TCP: 数据必须完整且准确(下载、消息、财务交易)。

在以下情况下使用 UDP: 速度和实时性能比完美交付(游戏、实时视频、语音通话)更重要。

需要选择吗?

通常不会。应用程序自动使用适当的协议。您的浏览器使用 TCP,您的游戏使用 UDP,您的视频通话使用 UDP。

你只会在以下情况下关心这个:

  • 配置防火墙(需要允许TCP或UDP的特定端口)
  • 游戏端口转发(通常是UDP)
  • VPN 或连接问题故障排除
  • 设置服务器或网络应用程序

底线

TCP 可靠但速度较慢(验证交付)。 UDP 速度快但不可靠(无验证)。

应用程序根据需要进行选择。网页需要准确性(TCP)。视频游戏需要速度(UDP)。

不需要选择。软件会自动处理它。