TCP 与 UDP 一览
比较可靠的面向连接 TCP 与快速轻量的 UDP
TCP 与 UDP 一览 是 CoddyKit 上的免费 Network+ Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Network+ Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Network+ Academy 课程共包含 4 节课。
两种传输协议
在传输层,两种协议承载了大部分互联网流量:TCP(传输控制协议)和 UDP(用户数据报协议)。
两者都负责在应用程序之间传输数据,但在可靠性和速度之间做出了截然不同的取舍。了解各自的使用场景是 Network+ 的核心知识。
TCP 面向连接
TCP是面向连接的协议:发送数据前会先建立连接,确保双方都已准备就绪。它能保证数据完整且有序地到达。
如果某个数据段丢失,TCP 会检测到缺口并重新传输。正是这种可靠性,使 TCP 成为网页、电子邮件和文件传输的首选,因为这些场景中的每个字节都很重要。
三次握手
TCP 通过三次握手启动连接:SYN、SYN-ACK、ACK。客户端发送 SYN,服务器回复 SYN-ACK,客户端再通过 ACK 进行确认。
只有完成这次交换后,数据才会开始传输。握手会让双方实现同步,是考试中的经典考点——请记住这三个步骤的顺序。
Client -> SYN
Server -> SYN-ACK
Client -> ACKUDP 无连接
UDP是无连接的:它无需握手即可立即发送数据,也不保证数据送达或保持顺序。它只是将称为数据报的数据包直接发送向目的地。
这使 UDP 快速而轻量,但如果应用程序在意数据是否丢失或乱序,就必须自行处理这些情况。
可靠性与速度
核心取舍很明确:TCP 通过确认和重传来提高可靠性,但会带来时间和额外开销。UDP 则跳过这些机制,以换取纯粹的速度。
- TCP:可靠、有序,但较慢。
- UDP:快速、轻量,尽力而为。
请根据准确性和速度哪个更重要来进行选择。
TCP 更适用的场景
当每个字节都必须正确到达时,请使用 TCP。网页浏览(HTTP/HTTPS)、电子邮件(SMTP)和文件传输(FTP)都依赖 TCP。
网页或文件中缺少一段数据就可能导致内容损坏,因此 TCP 的可靠性成本非常值得。按流量总量计算,互联网上的大多数流量都使用 TCP。
UDP 更适用的场景
当速度和低延迟比完美送达更重要时,请使用 UDP。实时的语音和视频通话、在线游戏和流媒体通常使用 UDP。
在视频通话中,丢失一帧通常比暂停等待重传更好。DNS 查询也使用 UDP,因为它查询快速且数据量小。
流量控制和窗口
TCP 包含流量控制机制,以避免接收方过载;它使用一个滑动窗口,调整在收到确认之前可以同时传输多少数据。
TCP 还会执行拥塞控制,在网络繁忙时降低发送速度。UDP 没有这些机制,速率控制完全交给应用程序负责。
首部和额外开销
TCP 的首部更大(最少 20 字节),因为其中包含序列号、确认信息和标志位。UDP 的首部只有 8 字节,仅保存源端口、目的端口和长度。
UDP 更小的首部意味着每个数据包的额外开销更少,这也让它在大流量实时通信中具备速度优势。
在两者之间进行选择
要做出决定,请先问自己:该应用是否需要有保证且有序的数据传输?如果需要,请选择 TCP;如果更看重速度并且能够容忍一定的数据丢失,请选择 UDP。
许多协议都会有意识地进行选择——DNS 使用 UDP 来执行快速查询,但在传输大量数据时会切换到 TCP。理解这种取舍,就能明白这些设计选择的原因。
TCP 与 UDP 协同工作
两种协议都使用端口号将流量定向到正确的应用程序,这是下一课的主题。它们共享同一套寻址方案,但在传输保证方面有所不同。
了解 TCP 与 UDP 的区别,是理解本课程后续具体协议和端口的基础。
快速检查
将协议与需求匹配起来。
回顾
您比较了 TCP 和 UDP。
- TCP:面向连接、可靠、有序;使用 SYN/SYN-ACK/ACK 握手。
- UDP:无连接、快速、尽力传输、不进行握手。
- TCP 适用于网页、电子邮件和文件传输;UDP 适用于语音、视频、游戏和 DNS 查询。
- TCP 提供流量控制和拥塞控制;UDP 将这些工作交给应用程序。
- 两者都使用端口号来访问应用程序。
常见问题解答
「TCP 与 UDP 一览」课时是免费的吗?
是的 — 「TCP 与 UDP 一览」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Network+ Academy 课程的其余内容,请升级到 CoddyKit PRO。 Network+ Academy 课程共包含 4 节课。
「TCP 与 UDP 一览」这节课中我会学到什么?
比较可靠的面向连接 TCP 与快速轻量的 UDP 你通过在浏览器中直接运行的动手代码来练习 Network+ Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Network+ Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Network+ Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「TCP 与 UDP 一览」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Network+ Academy 课中编写并运行代码吗?
能。每节 Network+ Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。