TCP与UDP协议对比解析

57 阅读3分钟

一、TCP (Transmission Control Protocol)

基本概念

  • 面向连接:通信前需建立双向连接(三次握手)
  • 可靠性保障:通过确认机制、重传机制、校验和等确保数据无误且有序
  • 流式传输:数据被视为无结构的字节流,无固定边界

核心特性

  1. 可靠传输

    • 序列号与确认号(ACK)机制跟踪数据包
    • 超时重传:未收到ACK则自动重发
    • 数据校验:通过校验和检测损坏包
  2. 流量控制

    • 滑动窗口协议:接收方通过窗口大小动态控制发送速率
  3. 拥塞控制

    • 慢启动、拥塞避免、快速重传、快速恢复算法
    • 动态调整发送窗口(cwnd)
  4. 有序传输

    • 序列号保证接收端按序重组数据
  5. 连接管理

    • 三次握手建立连接:
      客户端 → SYN → 服务端
      客户端 ← SYN+ACK ← 服务端
      客户端 → ACK → 服务端
      
    • 四次挥手终止连接:
      主动方 → FIN → 被动方
      主动方 ← ACK ← 被动方
      主动方 ← FIN ← 被动方
      主动方 → ACK → 被动方
      

TCP 头部结构(20字节基础)

字段长度功能说明
源端口16位发送方端口号
目的端口16位接收方端口号
序列号32位数据字节流的定位
确认号32位期望接收的下一个字节序号
数据偏移4位TCP头部长度(单位:4字节)
控制位6位URG/ACK/PSH/RST/SYN/FIN 标志
窗口大小16位接收窗口可用空间
校验和16位头和数据完整性校验
紧急指针16位URG标志有效时紧急数据位置

二、UDP (User Datagram Protocol)

基本概念

  • 无连接:直接发送数据,无需预先建立连接
  • 尽最大努力交付:不保证可靠性,可能丢包或乱序
  • 面向报文:保留应用层报文边界

核心特性

  1. 低延迟

    • 无连接建立/断开开销
    • 无确认/重传机制
  2. 无拥塞控制

    • 适合实时应用(容忍部分丢失)
  3. 头部开销小

    • 固定8字节头部(TCP至少20字节)

UDP 头部结构(8字节)

字段长度功能说明
源端口16位可选,可为0
目的端口16位必需,目标端口
长度16位UDP报文总长度(头+数据)
校验和16位可选(IPv4),IPv6强制使用

三、关键差异对比

特性TCPUDP
连接方式面向连接无连接
可靠性高(确认/重传)低(可能丢包)
数据顺序保证有序不保证顺序
传输速度较慢(控制机制多)极快(头部开销小)
流量控制滑动窗口支持无内置机制
拥塞控制复杂算法管理无控制
头部大小20-60字节固定8字节
适用场景文件传输、Web浏览、邮件视频流、DNS、VoIP、游戏

四、典型应用场景

TCP 适用场景

  • 可靠性要求高:HTTP/HTTPS、FTP、SMTP
  • 大数据量传输:文件下载、数据库同步
  • 需要有序交付:远程桌面(SSH/RDP)

UDP 适用场景

  • 实时性优先:视频会议(Zoom)、在线游戏
  • 广播/组播:IPTV、DHCP
  • 简单查询响应:DNS、SNMP
  • 容忍丢包:VoIP(如Skype)

五、协议选择策略

QQ浏览器截图20250623210648.png

:现代协议如QUIC(HTTP/3基础)融合TCP可靠性+UDP效率,在应用层实现优化传输。

此对比总结覆盖核心原理、结构差异及实践应用,可作为网络协议选型的技术参考依据。