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

UDP和TCP对比通俗讲解

把网络通信想象成“寄包裹”

网络通信就是一台计算机向另一台计算机发送数据,这个过程就像你从北京往上海寄包裹。


TCP:可靠的“顺丰快递”

TCP 就像你选择用顺丰快递寄送一份非常重要的文件(比如一份房屋合同原件)。

它的特点是:
  1. 要先打电话确认(三次握手)

    • 你(北京)先给上海的朋友打个电话:“喂,我要给你寄个文件,你准备好收一下吗?”
    • 上海的朋友说:“好的,我准备好了,你寄吧!”
    • 你说:“行,那我这就寄了!”
    • 这个建立联系的过程,就是 TCP 的“三次握手”。只有确认对方能收,我才开始寄。
  2. 极致的可靠性

    • 顺丰小哥上门取件,会给你一张回执单。这就是 TCP 的确认机制(ACK)
    • 包裹每到一个中转站(路由器),都会有记录,确保包裹不会丢在路上。
    • 如果上海的朋友没收到,顺丰会告诉你“投递失败”,然后你会重新寄一份。这就是 TCP 的超时重传
  3. 保证顺序

    • 如果你要寄三箱书,顺丰会保证这三箱书按照“第一箱、第二箱、第三箱”的顺序送达。不会出现第三箱先到,第一箱后到的混乱情况。
    • TCP 会给每个数据包编号,接收方会按照编号重新组装,保证数据顺序准确无误。
  4. 速度相对慢一点

    • 因为要做“打电话确认”、“签回执”、“按顺序整理”这些额外的工作,所以整个过程开销大,速度相对慢一些

总结 TCP:

TCP 是一种面向连接的、可靠的、基于字节流的传输协议。它像打电话,需要先建立连接,确保对方听到你说的每一句话,没听清会让你重复。它追求的是“数据100%准确无误地送达”,适合传输重要数据,如网页浏览(HTTP)、邮件(SMTP)、文件传输(FTP)。


UDP:高效的“寄明信片”

UDP 就像你在景区给自己寄一张明信片

它的特点是:
  1. 拿起就寄,不管对方在不在(无连接)

    • 你不需要提前打电话问朋友“你能不能收明信片”。你写好,贴上邮票,扔进邮筒,就完事了。你根本不知道对方会不会收到,什么时候收到。
  2. 尽最大努力交付,但不保证

    • 邮局会“尽最大努力”去投递这张明信片。但如果明信片在路上被风吹走了、被雨淋湿了、或者丢在了某个角落,那就丢了,没了。邮局不会给你重寄一张,你也不知道它丢了。
  3. 不保证顺序

    • 如果你连续寄三张明信片,它们可能通过不同的邮路,第三张可能比第一张先到。接收方需要自己处理顺序混乱的问题。
  4. 速度极快,开销小

    • 因为没有任何“确认”、“重传”、“排序”的额外操作,UDP 非常轻量,延迟极低,速度极快

总结 UDP:

UDP 是一种无连接的、不可靠的传输协议。它像学校里的广播站,只管朝着操场广播通知,不关心下面的学生有没有听到、听全。它追求的是“速度”,适合那些允许少量数据丢失但对延迟极其敏感的应用,如视频通话、在线游戏、直播流媒体。


核心区别对照表

特性TCP (顺丰快递)UDP (寄明信片)
连接面向连接 (必须先打电话)无连接 (拿起就寄)
可靠性可靠 (有确认和重传)不可靠 (尽力而为,丢了就丢)
顺序保证顺序 (按编号组装)不保证顺序 (可能后发先至)
速度/开销 (机制复杂,开销大) (机制简单,开销小)
应用场景网页、邮件、文件、数据库视频会议、语音聊天、直播、DNS查询

作为开发者如何选择?

  • 你要传的是绝对不能错的数据吗?比如一个程序的源代码、一笔交易的金额。选 TCP
  • 你要传的是实时性要求极高,偶尔丢一帧数据无所谓的数据吗?比如视频通话中少了几像素、游戏里丢了一个无关紧要的位置更新。选 UDP。因为对用户来说,卡顿短暂模糊 要糟糕得多。

最终的哲学是:没有最好的协议,只有最合适的场景。 TCP 把复杂性和可靠性都封装在了协议内部,为开发者提供了简单的可靠传输服务;而 UDP 则把控制权完全交给了开发者,让你可以基于它去构建适合自己的、高度定制化的传输策略(比如在UDP之上实现自己的重传逻辑)。

http://www.dtcms.com/a/391082.html

相关文章:

  • 【ReText】1.3 Python multiprocessing 库详解
  • Liunx系统下出现“Could not resolve host: mirrorlist.centos.org; 未知的错误”地解决方案
  • CentOS Stream 9安装系统(LVM扩容案例)
  • Docusign AI 全球化:构建安全、合规的多语言协议管理
  • C# 基于halcon的视觉工作流-章37-零件测量
  • 第二部分:VTK核心类详解(第38章 vtkPointData点数据类)
  • 木卫四科技 × 一汽解放商用车开发院: 共驱商用车 AI 研发新程
  • 【C++闯关笔记】STL:stack与queue的学习和使用
  • [HCTF 2018] WarmUp
  • Vue 学习随笔系列二十六 —— 动态表头
  • BIM 可视化运维平台 + IBMS 中央集成系统一体化解决方案:构建虚实融合的智慧运营中枢
  • XSUN_DESKTOP_PET(桌面宠物)
  • 具身智能VR遥操开发记录
  • 构建AI智能体:三十八、告别“冷启动”:看大模型如何解决推荐系统的世纪难题
  • [重学Rust]之结构体打印和转换
  • 数据结构(陈越,何钦铭) 第十一讲 散列查找
  • 2025年JBD SCI2区TOP,基于改进蚁群算法的应急路径规划,深度解析+性能实测
  • UIKit-layer
  • 一物一码公司推荐再互动平台
  • Wireshark捕获MQTT报文
  • Docker镜像核心作战手册:镜像命令全解析+离线迁移实战+压缩共享储存,打造无缝跨环境部署!
  • Static Deinitialization Order Fiasco
  • 如何使用 Qt Creator 高效调试
  • 保障路灯用电安全!配电箱漏电检测,为城市照明筑牢防线
  • 不同版本tensorflow推理报错解决方法
  • 嵌入式铁头山羊STM32-各章节详细笔记-查阅传送门
  • 在没有随机对照的情况下如果做实验对比:双重差分法(结合虚拟变量回归)(五)
  • 材质、效率双突破:Rendercool 解决室内渲染核心痛点
  • 【ThreeJs】【材质Material】核心材质参数解析手册
  • 无人机桨叶的材质与工艺对飞行速度的影响