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

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.xdnf.cn/news/14851.html

相关文章:

  • nginx基本使用 linux(mac下的)
  • MSPM0G3507之GPIO配置报错 #Sysconfig报错
  • 数据结构与算法 --- 双向链表
  • 从 AJAX 到 axios:前端与服务器通信实战指南
  • VR训练美国服务器:高性能解决方案与优化指南
  • 可编程逻辑器件的发展与比较
  • 逆向入门(22)程序逆向篇-TraceMe
  • FPGA设计的上板调试
  • Cisco FMC events无法加载并且cpu high故障- Cisco bug
  • Grab×亚矩阵云手机:以“云端超级节点”重塑东南亚出行与数字生活生态
  • AngularJS Git 提交消息规范
  • VS Code 配置本地 Dev Container
  • (LeetCode 每日一题) 2099. 找到和最大的长度为 K 的子序列 (排序)
  • 翻译服务器
  • SpringMVC系列(七)(Restful架构风格(下))(完结篇)
  • 第一章 从零开始学习大型语言模型-搭建环境
  • Spring Cloud:微服务架构的基石与实践指南
  • 从0开始学习计算机视觉--Day04--损失函数
  • C++动态链接库之非托管封装Invoke,供C#/C++ 等编程语言使用,小白教程——C++动态链接库(一)
  • Linux系统(信号篇)信号的保存
  • 在反向代理环境下精准获取客户端真实 IP 的最佳实践
  • Vue样式绑定与条件渲染详
  • 玄机抽奖Spring Web项目
  • 【STM32 学习笔记】PWR电源控制
  • 高通手机跑AI系列之——穿衣试装算法
  • 数据结构进阶 - 第一章 绪论
  • 数据结构-第三节-树与二叉树
  • 什么是财务共享中心?一文讲清财务共享建设方案
  • Lynx vs React Native vs Flutter 全面对比:三大跨端框架实测分析
  • 人大金仓Kingbase数据库KSQL 常用命令指南