60 秒回答模板

TCP 和 UDP 都在传输层,负责主机进程之间的数据传输;TCP 面向连接,提供可靠、有序的字节流,包含确认、重传、流控和拥塞控制;UDP 面向数据报,头部简单、延迟低,但不保证可靠和有序。HTTP 是应用层协议,定义请求方法、状态码、Header 和 Body 语义。HTTP/1.1、HTTP/2 通常跑在 TCP 上,HTTP/3 跑在 QUIC 上,而 QUIC 是基于 UDP 实现可靠传输和多路复用的协议。

考点 核心机制与工程取舍
难度 中高频面试题
回答目标 按定义、机制、场景讲清楚

深入解析

01

分层关系

HTTP 不和 TCP、UDP 处于同一层。HTTP 解决应用如何表达请求和响应,TCP/UDP 解决字节或数据报如何从一个进程传到另一个进程。

02

TCP 能力

TCP 提供连接、可靠性、有序性、流量控制和拥塞控制。代价是握手、状态维护、队头阻塞和更复杂的内核协议栈处理。

03

UDP 能力

UDP 保留消息边界,开销低、无连接,适合 DNS、音视频、实时游戏等可以自定义可靠性或允许少量丢包的场景。可靠性可以在应用层或上层协议中补充。

04

HTTP 演进

HTTP/1.1 在 TCP 上复用连接但仍容易队头阻塞;HTTP/2 在单 TCP 连接上多路复用,TCP 层丢包仍会阻塞所有流;HTTP/3 用 QUIC 在 UDP 上做连接迁移和流级别多路复用。

05

面试表达

比较时不要说 HTTP 比 TCP 更可靠这类跨层说法。正确表达是:HTTP 的可靠交付通常依赖底层传输协议,HTTP/3 则通过 QUIC 在 UDP 之上重新实现可靠、有序的流。

易错点

  • 把 HTTP、TCP、UDP 当成同一层协议直接比较优劣。
  • 认为 HTTP 必须基于 TCP,漏掉 HTTP/3、QUIC 和 UDP 的关系。
  • 把 UDP 说成完全不能可靠传输,忽略上层可以补协议能力。
  • 不知道 TCP 是字节流,误以为一次发送对应一次接收。

面试官追问

TCP 为什么是可靠的?

靠序列号、确认应答、超时重传、滑动窗口、流量控制和拥塞控制来保证字节流可靠有序到达。

UDP 是否一定不可靠?

UDP 本身不保证可靠,但上层协议可以实现确认、重传、FEC、排序等能力,QUIC 就是在 UDP 之上实现可靠传输。

HTTP/2 和 HTTP/3 的关键差异是什么?

HTTP/2 多路复用仍受单个 TCP 连接丢包影响;HTTP/3 基于 QUIC,把多路复用和可靠性做到用户态,减少连接建立和队头阻塞问题。

为什么说 TCP 是字节流?

TCP 不保留应用写入边界,接收方看到的是连续字节,需要应用层协议自己定义报文边界。