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)。
不需要选择。软件会自动处理它。