指尖上的记忆指尖上的记忆
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub

TCP和UDP协议使用场景

TCP 的典型使用场景,结合它的特性来看。

🔹 先看 TCP 的特点
  • 面向连接:三次握手建立连接,保证通信可靠。
  • 可靠传输:有序、无丢失、无重复(靠序列号、确认应答、重传)。
  • 流量控制 & 拥塞控制:保证传输不会把对方或网络压垮。
  • 面向字节流:数据是连续的字节流,适合大块数据传输。

因此:TCP 适合对数据完整性和可靠性要求高的场景。


🔹 TCP 使用场景
1. 网页访问(HTTP/HTTPS)
  • 绝大多数网页加载基于 HTTP/1.1 和 HTTP/2 → TCP(HTTP/3 除外,它基于 QUIC/UDP)。
  • 要求:数据必须完整,HTML/CSS/JS 少一个字节都可能出错。
2. 文件传输
  • FTP、SFTP、FTPS、SMB、NFS 等。
  • 要求:文件必须 100% 完整,不能丢数据。
3. 电子邮件
  • SMTP、IMAP、POP3 都基于 TCP。
  • 要求:邮件必须完整送达,不能缺失。
4. 数据库访问
  • MySQL、PostgreSQL、Oracle、SQL Server 等。
  • 要求:SQL 查询结果必须可靠返回,事务数据绝不能丢。
5. 远程登录
  • SSH、Telnet。
  • 要求:命令和输出必须可靠有序,不能乱序。
6. 即时通讯(文字为主)
  • 微信文字聊天、Slack、WhatsApp 消息(消息层用 TCP 或基于 TCP 的协议)。
  • 要求:文字消息不能丢,必须按顺序送达。
  • (语音/视频实时通话则更多走 UDP)
7. 大多数 API 调用
  • REST API(基于 HTTP/HTTPS)
  • gRPC(默认基于 HTTP/2 → TCP)
  • 要求:请求和响应必须可靠。
8. 大部分区块链网络
  • 例如 比特币、以太坊 P2P 节点,常用 TCP 传输区块数据。

🔹 UDP 的使用场景

🔹 先回顾 UDP 特点
  • 无连接:不需要三次握手,直接发包。
  • 不可靠:不保证包一定送达,也不保证顺序。
  • 轻量级:头部开销小(8字节,对比 TCP 的 20+ 字节)。
  • 实时性强:延迟低,不需要等待确认。

所以:UDP 适合对速度要求高、但能容忍部分丢包的场景。

🔹 典型使用场景
1. 实时音视频/语音通话
  • 场景:Zoom、微信语音、腾讯会议、直播推流
  • 原因:语音/视频是实时流,偶尔丢几个包只会造成瞬时马赛克,比延迟要好得多。
  • 协议:很多基于 RTP/RTCP (Real-time Transport Protocol),底层是 UDP。
2. 在线游戏
  • 场景:LOL、王者荣耀、CS:GO 等
  • 原因:游戏对实时性要求高,玩家移动/攻击数据必须快速同步,丢个包就算了,下一个包会更新位置。
  • 协议:常见的游戏引擎(如 Unity、Unreal)提供 UDP 网络模块。
3. DNS (域名解析)
  • 场景:解析 www.example.com -> IP
  • 原因:DNS 查询通常只有一个请求+一个响应,短小快速,不必建立 TCP 连接。
  • 说明:大部分 DNS 用 UDP,只有在响应过长或需要可靠性时才会切 TCP。
4. DHCP (动态主机配置协议)
  • 场景:电脑开机自动获取 IP 地址
  • 原因:刚开机时还没有 IP,无法建立 TCP 连接;用 UDP 广播发送发现包更合适。
5. 流媒体传输
  • 场景:视频直播(RTSP、QUIC 之前的 RTP/UDP 流)、IPTV
  • 原因:对实时性要求高,允许一定丢包,UDP 更适合。
6. 物联网(IoT)和轻量协议
  • 场景:传感器上报数据、MQTT-SN 等
  • 原因:设备算力有限,UDP 更节省资源。
7. 新一代协议(基于 UDP 封装可靠性)
  • QUIC(HTTP/3 使用)

    • Google 开发,跑在 UDP 上,但自己实现了可靠传输、加密、多路复用。
    • 好处:比 TCP+TLS+HTTP/2 快,尤其适合移动网络。
  • 所以,HTTP/3 = QUIC = 基于 UDP,但表现出类似 TCP 的可靠性。


TCP和UDP对比

TCP vs UDP 对比表 + 场景举例

特性TCPUDP
类型面向连接无连接
可靠性可靠传输,保证数据完整、有序不保证可靠性,可能丢包或乱序
数据传输面向字节流面向报文(Message)
连接建立三次握手无需握手,直接发包
连接关闭四次挥手不需要关闭
流量控制有(避免拥塞)无
传输延迟较高(可靠性开销)低(轻量、实时)
头部开销20 字节8 字节
适合场景文件传输、网页访问、邮件、数据库、远程登录实时语音/视频、在线游戏、DNS 查询、直播、IoT 上报
典型应用协议HTTP/HTTPS、FTP/SFTP、SMTP/IMAP/POP3、MySQL/PostgreSQL、SSHDNS、DHCP、RTP/RTCP(音视频)、QUIC(HTTP/3)、游戏自定义协议
使用特点数据完整性优先,允许延迟速度和实时性优先,可容忍丢包

🔹 总结对比

  • TCP → 数据必须完整,能等,适合文件、网页、数据库、邮件、API。
  • UDP → 要快、实时,丢一点没关系,适合语音视频、游戏、DNS、直播。