精简版 · 小杯2026-08 冻结,已停止更新(发布前修订了 4 处已知错误)。后续勘误与新增内容只在正式版。看正式版(中杯)→
Skip to content

TCP 与 UDP 对比 ​

考情分析 ​

TCP 和 UDP 的对比是选择题的常客。考法通常是给出一个场景或特性,判断应该选用 TCP 还是 UDP。端口号也偶尔出现在选择题中。

考频:★★★

全面对比 ​

对比项TCPUDP
是否面向连接面向连接(先握手再传数据)无连接(直接发)
可靠性可靠传输(确认、重传、序号)不可靠(尽最大努力交付)
是否保序保序(通过序号机制)不保序
传输方式面向字节流面向报文
通信模式一对一一对一、一对多、多对一、多对多
首部开销最少 20 字节固定 8 字节
流量控制有(rwnd)无
拥塞控制有(cwnd)无
传输速度相对较慢(机制开销)快(没有额外机制)
适用场景文件传输、网页、邮件等需要可靠传输的场景实时音视频、DNS 查询等对实时性要求高的场景

面向字节流 vs 面向报文 ​

这是一个高频考点,单独展开说明。

TCP 面向字节流: TCP 把应用层交下来的数据看作无结构的字节流。TCP 不关心应用层一次写了多少数据,它根据窗口大小和网络状况自行决定每个报文段装多少字节。发送方连续写入 3 次(100 字节、50 字节、200 字节),TCP 可能把它们合并成一个 350 字节的报文段发出去,也可能拆成两个发。接收方需要自己处理消息边界的问题。

UDP 面向报文: UDP 对应用层交下来的报文原样发送,不拆分也不合并。发送方发了 3 个报文(100、50、200 字节),接收方就会收到 3 个独立的报文,边界清晰。

适用场景对比 ​

适合用 TCP 的场景 ​

应用原因
HTTP/HTTPS(网页浏览)网页数据不能丢失、不能乱序
FTP(文件传输)文件内容必须完整且正确
SMTP/POP3/IMAP(邮件)邮件内容不能丢
SSH(远程登录)命令和输出必须可靠传输
数据库连接数据一致性要求高

适合用 UDP 的场景 ​

应用原因
DNS(域名查询)报文小、一问一答、不值得建立连接
DHCP(地址配置)需要广播,TCP 不支持
实时视频/音频(RTP)实时性优先,丢帧可容忍
SNMP(网络管理)简单查询,丢失可重试
在线游戏低延迟优先
TFTP(简单文件传输)简单场景,UDP 上层自己做可靠性

选用原则可以总结为:需要可靠性选 TCP,需要实时性/广播/简单快速选 UDP。

常见端口号 ​

408 选择题偶尔会考某个协议对应的端口号。

TCP 端口号 ​

协议端口号说明
FTP 数据20FTP 数据连接
FTP 控制21FTP 控制连接
SSH22安全远程登录
Telnet23远程登录(明文)
SMTP25发送邮件
HTTP80网页浏览
POP3110接收邮件
IMAP143接收邮件(在线管理)
HTTPS443加密网页浏览

UDP 端口号 ​

协议端口号说明
DNS53域名解析(也可用 TCP)
DHCP 服务器67动态主机配置
DHCP 客户端68动态主机配置
TFTP69简单文件传输
SNMP161网络管理
RIP520路由信息协议

既用 TCP 又用 UDP 的协议 ​

协议端口号说明
DNS53通常用 UDP,区域传送时用 TCP

DNS 默认用 UDP,但当响应数据超过 512 字节(DNS 报文在 UDP 中的上限)时,会切换到 TCP 传输。另外 DNS 主服务器和辅助服务器之间的区域传送(同步所有记录)也使用 TCP。

传输层复用与分用 ​

不管是 TCP 还是 UDP,传输层的一个核心功能是复用和分用。

复用(Multiplexing): 多个应用进程可以同时使用传输层的服务。发送方的传输层根据端口号,把不同应用进程的数据封装成不同的报文段/数据报,交给网络层发送。

分用(Demultiplexing): 接收方的传输层根据报文段/数据报中的目的端口号,把数据交给对应的应用进程。

TCP 和 UDP 的分用方式有区别:

对比项UDP 分用TCP 分用
标识一个连接的要素目的 IP + 目的端口源 IP + 源端口 + 目的 IP + 目的端口
含义只要目的端口相同就交给同一个进程四元组完全匹配才交给对应连接

TCP 用四元组标识连接意味着:同一个服务器端口(如 80)可以同时和不同客户端建立多个独立的 TCP 连接,因为每个连接的源 IP 和源端口不同。

端口号的分类 ​

范围名称说明
0~1023熟知端口分配给常用服务(HTTP=80, FTP=21 等)
1024~49151登记端口分配给其他注册服务
49152~65535动态/私有端口客户端临时使用的端口

易错点 ​

1. DNS 不是只用 UDP

DNS 查询通常用 UDP,但区域传送和大响应用 TCP。如果选择题说"DNS 只使用 UDP",这是错的。

2. "不可靠"不等于"不好"

UDP 的"不可靠"是指协议本身不提供确认和重传机制。应用层可以在 UDP 之上自己实现可靠性(比如 TFTP 在 UDP 上实现了简单的确认和重传)。"不可靠"是特性描述,不是质量评价。

3. TCP 不支持广播和多播

TCP 是点对点的,只能一对一通信。需要广播或多播的场景只能用 UDP。

4. 首部开销的对比

TCP 首部最少 20 字节(还可能有选项字段),UDP 首部固定 8 字节。这个差距在传输大量小报文时影响显著。

本文对应考点 ​

  • TCP 和 UDP 的核心区别(连接性、可靠性、字节流/报文、通信模式、首部开销)
  • 面向字节流 vs 面向报文的含义
  • TCP 适用场景 vs UDP 适用场景
  • 常见协议的端口号(HTTP:80, HTTPS:443, FTP:20/21, DNS:53, DHCP:67/68, SMTP:25)
  • DNS 既用 TCP 又用 UDP
  • 端口号的三个范围(0-1023 熟知,1024-49151 登记,49152-65535 动态)

真题练习 ​

相关真题(2题)