← 每日面试题 学习看板

TCP和UDP的区别是什么?

面试题/04 计算机相关-网络-组件-虚拟化/02 计算机网络/TCP和UDP的区别是什么?.md

面试记录 2026-09-27

题目:TCP和UDP的区别是什么?

难度:low

标签:computer/network, general/knowledge

评分:⭐⭐⭐☆☆(3/5)

我的回答

TCP 跟 UDP 都是网络协议,核心的区别在于可靠与非可靠,是两种不同的选择,应用于不同的场景。TCP 常用来可靠连接的保持,而 UDP 主要是用来高性能的数据传输,然后以及一些探测性作用的工作,就 DNS。TCP 通过多次握手重试,然后投信息,确保信息在网络中能够稳定、安全的有序的达到目标。而 UDP 选择另一种设计哲学,它选择更高性能的去数据传输,放弃了一些可靠性方面的验证。

点评

优点:

不足:

补充:

完整讲解

第一部分:知识重点剖析

核心考点定位:考察 TCP/UDP 两种传输层协议的核心机制差异,以及背后"可靠性 vs 性能"的设计权衡思想。

知识点拆解:

  1. 连接模型:TCP 是有连接的(三次握手建立、四次挥手断开),通信双方必须先握手才能传输;UDP 是无连接的,直接发数据报,没有连接建立和释放过程。
  2. 可靠性保障:TCP 通过序列号 + ACK 确认 + 超时重传 + 校验和实现可靠传输;UDP 仅有校验和(且可选),不保证送达、不保证顺序、不重传。
  3. 首部开销:TCP 首部 20~60 字节,UDP 首部固定 8 字节。对小报文 UDP 优势明显(DNS 单条请求常小于 512 字节)。
  4. 有序性:TCP 通过序列号保证有序到达,乱序包会缓存重排;UDP 保持发送顺序,到达顺序不保证。
  5. 流控与拥塞控制:TCP 有滑动窗口流量控制(接收方通告窗口大小)和拥塞控制(慢启动、拥塞避免、快重传快恢复、AIMD);UDP 都没有。
  6. 数据模型:TCP 面向字节流(丢失消息边界),UDP 面向数据报(保留消息边界)。
递进:从"是什么"(连接性、可靠性)→ "怎么做"(握手/重传/流控/拥塞控制)→ "为什么"(首部开销差异导致的应用场景差异)。

第二部分:考察方向与延伸递进

考察方向:

延伸递进面试题:

  1. QUIC 为什么基于 UDP 而不是 TCP?
  1. TCP 为什么会队头阻塞?QUIC 如何解决?
  1. 你在生产环境遇到过 TCP 相关问题吗?如何排查?

第三部分:面试者参考回答(300-600 字口语化)

面试官您好,TCP 和 UDP 最本质的区别是可靠 vs 性能,这个权衡决定了一切。

第一个维度是连接性。TCP 是有连接的,先三次握手建立连接,再传数据,最后四次挥手释放。这就带来一个好处——连接建立后有一个稳定的上下文。UDP 无连接,直接发数据报,没有握手过程。

第二个维度是可靠性。TCP 通过序列号 + ACK 确认 + 超时重传 + 校验和实现可靠传输,保证数据不丢、不重复、有序到达。UDP 只有一个可选的校验和,其他什么都不做。

第三个维度是首部开销。TCP 首部 20 字节起,UDP 固定 8 字节。对小报文,比如 DNS 一条查询几十字节,UDP 的优势明显。

第四个维度是流控和拥塞控制。TCP 有滑动窗口做流量控制,接收方控制发送速度;还有慢启动、拥塞避免、快重传快恢复做拥塞控制,防止把网络打爆。UDP 都没有,应用自己负责。

第五个维度是数据模型。TCP 是字节流,会丢失消息边界;UDP 是数据报,保留消息边界,一发一收对应。

应用场景上,HTTP、SSH、数据库协议都选 TCP,因为要可靠;DNS 短查询选 UDP、视频直播、实时音视频、游戏选 UDP,因为丢了不重要、速度更重要。现在 QUIC 用 UDP 承载,把可靠性和拥塞控制上移到用户态,就是为了绕开内核 TCP 的限制,做到握手和 TLS 合并、避免队头阻塞。