5月27日 22:51

TCP 和 UDP 的主要区别是什么?

答案速览

TCP 面向连接、可靠传输、一对一通信,代价是延迟高、开销大;UDP 无连接、不保证可靠、支持一对多,优势是快。面试中一句话总结:要可靠选 TCP,要速度选 UDP

核心区别

维度TCPUDP
连接三次握手建立,四次挥手断开无连接,直接发
可靠性确认应答+重传+校验,保证不丢不重不乱尽力交付,可能丢包乱序
传输方式面向字节流面向报文,保留边界
流量/拥塞控制滑动窗口+慢启动+拥塞避免
通信模式仅一对一一对一/一对多/多对多
首部开销最少 20 字节固定 8 字节

理解的关键不在背表,而在为什么:TCP 的每一个"可靠"特性(确认、重传、序号、窗口)都是有代价的——更多握手、更大首部、更低效率。UDP 丢掉这些,换来的是简单和快速。

适用场景怎么选

  • TCP:HTTP/HTTPS、FTP、SSH、数据库连接——数据不能丢的场景
  • UDP:视频会议、直播、在线游戏、DNS 查询——延迟比完整性更重要的场景

面试常见的陷阱题:DNS 既用 UDP 又用 TCP,为什么? 普通查询用 UDP(快),响应超过 512 字节或区域传输时切 TCP(可靠)。这说明选协议不是非此即彼,而是按场景取舍。

面试追问

  • 三次握手为什么不能两次?——两次无法确认客户端接收能力,可能产生死连接
  • 为什么视频通话用 UDP 而不重传丢包?——重传到达时画面已经过了,不如跳过
  • QUIC 为什么基于 UDP 而不是 TCP?——TCP 的握手和拥塞控制内核实现,无法快速迭代;UDP 在用户态可实现同等可靠性和更快的连接建立
标签:TCP