TCP 与 UDP 对比

官官方信息技术老师·7 页·深入(追求细节与边界)·0 次浏览·33 天前
信息技术大学

TCP 与 UDP 对比

计算机基础面试八股 · 第 1 章 计算机网络

按 空格/→ 演示下一步

问一句
1 / 7 页

全部页面点击任意一页,跳回舞台从这页播放

信息技术大学

TCP 与 UDP 对比

计算机基础面试八股 · 第 1 章 计算机网络

1第 1 页 · TCP 与 UDP 对比

UDP 特点与适用场景

UDP 只保留最简传输能力:无连接、不保证可靠,换来封包即刻发送。

无连接
不握手不挥手,绑定端口直接发包
尽力而为
不保证到达、不保证有序、不重传
面向报文
保留应用层报文边界,不拆不并
适用场景
DNS、直播、游戏语音,QUIC 的底座
2第 2 页 · UDP 特点与适用场景

TCP 与 UDP 怎么选

两个传输层协议的取舍:完整性与实时性难以兼得。

TCP
  • 可靠有序,丢包重传补齐
  • 头部 20 字节起步
  • 网页、文件、邮件交付
UDP
  • 尽力而为,无重传负担
  • 头部固定 8 字节
  • 直播、语音、DNS 查询
要完整选 TCP,要实时选 UDP;QUIC 证明 UDP 之上也能自建可靠。
3第 3 页 · TCP 与 UDP 怎么选

TCP 粘包拆包成因与解决

TCP 是字节流,没有消息边界:粘包是应用层没划界的错觉,不是协议 bug。

成因
发送端攒包与接收端缓冲读取,把写入边界打乱
定长切分
按固定长度切包,实现最简但浪费空间
显式分界
分隔符(如换行)或长度前缀声明报文边界
4第 4 页 · TCP 粘包拆包成因与解决

基于 UDP 的可靠传输设计

在 UDP 上自选配方搭可靠层:QUIC、KCP 都这么干,为绕开内核 TCP 的僵化。

自带确认
应用层自己实现序列号、ACK 与重传
自选拥塞
按业务定制退让策略,不被内核算法绑死
QUIC 示范
流级独立重传、连接迁移、内建加密
5第 5 页 · 基于 UDP 的可靠传输设计

本节要点

  • ✓TCP 可靠有序,UDP 尽力而为
  • ✓粘包是字节流无边界,定长/分隔/长度前缀解
  • ✓UDP 上自建可靠:确认、重传、自选拥塞
延伸主题:对比 QUIC 与 TCP+TLS用 nc 发一次 UDP 包
6第 6 页 · 本节要点

课后思考

先自己回答,再展开参考答案——能讲出来才算真懂。

1视频通话丢一帧无所谓,为什么不用 TCP 重传补回来?

参考答案实时媒体看重时效:重传到达的数据早已过时,反而挤占带宽抬高延迟;UDP 尽力而为,丢了就丢了,靠纠错编码与码率自适应兜底。

2为什么说粘包不是 TCP 的缺陷?

参考答案TCP 的契约就是把字节流原样送达,从无边界承诺;应用层写两次、内核攒一次发送是正常优化。要边界就得应用层自己划:定长、分隔符或长度前缀。

3在 UDP 上做可靠传输,和直接用 TCP 差在哪?

参考答案TCP 的拥塞与重传策略锁死在内核改不动;UDP 上自己写可以按业务定制(QUIC 流独立重传、KCP 激进重传),代价是可靠性正确性全要自己兜住。

7第 7 页 · 课后思考