当前位置: 首页 > 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 = 发短信(发了就不管了) 🚀
http://www.lqws.cn/news/558451.html

相关文章:

  • 【Python基础】06 实战:视频压缩迷你脚本设计
  • 深入理解C#委托操作:添加、移除与调用全解析
  • 港澳地区,海外服务器ping通可能是地区运营商问题
  • MySQL为什么要使用b+树
  • 1 Studying《Computer Architecture A Quantitative Approach》1-4
  • 鸿蒙HarmonyOS 5小游戏实践:数字记忆挑战(附:源代码)
  • 信号处理学习——文献精读与code复现之TFN——嵌入时频变换的可解释神经网络(下)
  • 给定一个整型矩阵map,求最大的矩形区域为1的数量
  • Insar 相位展开真实的数据集的生成与下载(随机矩阵放大,zernike 仿真包裹相位)
  • Launcher3中的CellLayout 和ShortcutAndWidgetContainer 的联系和各自职责
  • 剑指offer50_0到n-1中缺失的数字
  • python -日期与天数的转换
  • autoas/as 工程的RTE静态消息总线实现与端口数据交换机制详解
  • 解决flash-attn安装报错的问题
  • 【C】陷波滤波器
  • 鸿蒙开发:资讯项目实战之底部导航封装
  • MySQL之MVCC实现原理深度解析
  • 类和对象(中)
  • springboot+Vue驾校管理系统
  • 开疆智能ModbusTCP转CClinkIE网关连接台达DVP-ES3 PLC配置案例
  • Java-正则表达式
  • 测量 Linux 中进程上下文切换需要的时间
  • cocos creator 3.8 - 精品源码 - 挪车超人(挪车消消乐)
  • 同步日志系统深度解析【链式调用】【宏定义】【固定缓冲区】【线程局部存储】【RAII】
  • 蚂蚁百宝箱体验:如何快速创建“旅游小助手”AI智能体
  • LINUX628 NFS 多web;主从dns;ntp;samba
  • AlphaGenome:基因组学领域的人工智能革命
  • Linux离线搭建Redis (centos7)详细操作步骤
  • 深入解析 Electron 核心模块:构建跨平台桌面应用的关键
  • 《Go语言高级编程》玩转RPC