当前位置: 首页 > news >正文

TCP 和 UDP 是什么?

TCP 和 UDP 是什么?

TCP(传输控制协议)和 UDP(用户数据报协议)是互联网最核心的 传输层协议,用于在网络上发送数据。它们的主要区别在于 可靠性、速度和连接方式


1. TCP(Transmission Control Protocol)

特点

可靠传输:数据必须完整到达,否则会重传。
面向连接:通信前需要“三次握手”建立连接。
有序传输:数据按发送顺序到达。
流量控制:避免发送方压垮接收方(滑动窗口机制)。
拥塞控制:自动调整发送速率,避免网络拥堵。

适用场景

  • 需要数据完整性的场景
    • 网页浏览(HTTP/HTTPS)
    • 文件传输(FTP)
    • 电子邮件(SMTP)
    • 数据库查询(MySQL、PostgreSQL)

TCP 的“三次握手”

1. 客户端 → 服务器:SYN(我要连接)  
2. 服务器 → 客户端:SYN + ACK(我同意连接)  
3. 客户端 → 服务器:ACK(确认连接)  

然后才开始传输数据。


2. UDP(User Datagram Protocol)

特点

无连接:直接发送数据,不需要握手。
不可靠:不保证数据一定到达,也不保证顺序。
速度快:没有 TCP 的复杂控制机制,延迟低。
无拥塞控制:适合高速传输,但可能丢包。

适用场景

  • 实时性 > 可靠性的场景
    • 视频/语音通话(Zoom、微信通话)
    • 在线游戏(LOL、PUBG)
    • DNS 查询
    • 直播流(RTMP、QUIC)

UDP 的工作方式

发送方:直接发数据包,不管对方收没收到。  
接收方:收到就处理,没收到就丢弃。  

3. TCP vs UDP 对比

特性TCPUDP
连接方式面向连接(三次握手)无连接
可靠性可靠(丢包重传)不可靠(可能丢包)
数据顺序保证顺序不保证顺序
速度较慢(有控制机制)极快(无额外开销)
适用场景文件传输、网页浏览视频通话、在线游戏

4. 常见问题

(1)为什么 HTTP 用 TCP,而 DNS 用 UDP?

  • HTTP 需要完整加载网页,不能丢数据(TCP)。
  • DNS 查询只需一个请求+响应,UDP 更快(如果丢包,客户端会重试)。

(2)游戏为什么用 UDP?

  • 游戏要求 低延迟,TCP 的重传机制会导致卡顿,UDP 更适合实时操作。

(3)有没有结合 TCP 和 UDP 的协议?

  • QUIC(HTTP/3):基于 UDP,但提供类似 TCP 的可靠性,用于加速网页加载。

5. 总结

  • 用 TCP:当你需要数据 100% 正确(如下载文件、访问网站)。
  • 用 UDP:当你需要 速度 > 可靠性(如视频通话、游戏)。

简单记忆

  • TCP = 打电话(必须接通才能说话)
  • UDP = 发短信(发了就不管了) 🚀

相关文章:

  • 计算机操作系统(十七)内存管理
  • 暑假复习篇之运算与逻辑
  • 【软考--软件设计师】11 关系型数据库
  • lambda、function基础/响应式编程基础
  • 路由器对不同数据帧的处理
  • 一分钟了解思路链提示词(Chain-of-thought Prompting)
  • 【软考高项论文】论信息系统项目的成本管理
  • Ubuntu 主机通过 `enp4s0` 向开发板共享网络的完整步骤
  • Swift × Android:官方工作组成立意味着什么?
  • n8n和dify有什么区别
  • 设计模式精讲 Day 17:中介者模式(Mediator Pattern)
  • 【Actix Web 精要】Rust Web 服务开发核心技术与实战指南
  • 权限提升-工作流
  • 压力测试(GUI界面压测,非GUI压测)
  • WPS之PPT镂空效果实现
  • 车载诊断架构 --- 非易失性存储器(NVM)相关设置项
  • 阿里云-arms监控
  • Unity2D 街机风太空射击游戏 学习记录 #16 道具父类提取 旋涡道具
  • CompletableFuture 深度解析
  • 阿里 Qwen3 模型更新,吉卜力风格get