# TCP和UDP到底有什么区别?一篇文章彻底搞懂两种网络通信协议
TCP和UDP到底有什么区别一篇文章彻底搞懂两种网络通信协议前言在嵌入式开发、服务器开发、物联网设备以及网络通信领域经常会遇到两个非常重要的协议TCPUDP很多初学者都会问TCP和UDP到底有什么区别为什么有的软件使用TCP有的软件使用UDP简单来说TCP追求可靠传输UDP追求高速传输。例如网页访问使用TCP文件下载使用TCP微信聊天使用TCP视频直播部分场景使用UDP在线游戏大量使用UDP工业实时控制可能使用UDP但是仅仅知道“TCP可靠UDP快”是不够的。本文将从网络分层数据传输方式连接建立数据可靠性速度区别使用场景嵌入式开发几个方面详细介绍TCP和UDP。一、TCP和UDP属于哪一层在学习TCP和UDP之前需要先了解TCP/IP网络模型。常见TCP/IP模型应用层 | 传输层 | 网络层 | 网络接口层其中应用层负责具体业务。例如HTTPHTTPSMQTTModbus TCPFTP传输层负责端到端的数据传输。主要协议TCP UDPTCP和UDP的作用将应用程序的数据交给网络并负责不同设备之间的数据传输。网络层主要协议IP协议负责寻找目标地址路由选择数据包转发例如192.168.1.100就是IP地址。二、TCP和UDP是什么1. TCP是什么TCPTransmission Control Protocol中文传输控制协议TCP是一种面向连接可靠面向字节流的通信协议。特点发送前需要建立连接保证数据可靠到达保证数据顺序自动重传错误数据具有流量控制和拥塞控制简单理解TCP像打电话通信前必须先建立连接。例如A你好我准备发送数据 B收到可以发送 A开始发送 B确认收到2. UDP是什么UDPUser Datagram Protocol中文用户数据报协议UDP是一种无连接不保证可靠面向数据报的通信协议。特点不需要建立连接直接发送数据不保证数据一定到达不保证顺序没有自动重传简单理解UDP像寄普通信件发出去之后不管结果。例如发送 你好 然后结束不会确认对方是否收到是否丢失是否顺序正确三、TCP和UDP核心区别总结对比TCPUDP中文名称传输控制协议用户数据报协议连接方式面向连接无连接可靠性可靠不保证可靠数据形式字节流数据报速度较慢较快是否重传支持不支持是否排序支持不支持是否确认支持不支持资源消耗较高较低应用场景网页、文件、聊天直播、游戏、实时控制一句话TCP宁愿慢一点也保证正确 UDP宁愿丢一点也保证速度四、TCP为什么可靠TCP可靠主要依靠几个机制1. 三次握手建立连接TCP通信前必须建立连接。过程客户端 服务器 SYN ---------------- SYNACK ------ ACK ---------------- 连接建立分别解释第一次握手客户端发送SYN表示我要建立连接。第二次握手服务器回复SYN ACK表示我收到你的请求也准备好了。第三次握手客户端发送ACK表示收到确认可以通信。最终TCP连接建立为什么需要三次握手因为双方需要确认自己发送能力正常自己接收能力正常对方发送和接收能力正常如果只有两次可能出现客户端以为连接成功 服务器不知道客户端是否收到确认所以需要第三次确认。五、TCP四次挥手关闭连接TCP关闭连接需要四次。过程客户端 服务器 FIN ------------- ACK ------- FIN ------- ACK ------------- 连接关闭原因TCP是全双工通信。两个方向的数据需要分别关闭。例如客户端我不发送数据了但是服务器可能还有数据发送所以需要分别关闭两个方向。六、UDP为什么不需要握手UDP发送数据直接发送数据 ↓ UDP ↓ IP ↓ 网络没有建立连接确认等待因此速度更快。例如视频直播如果等待TCP确认发送 等待 确认 重新发送会产生明显延迟。UDP直接发送下一帧即使丢失一点数据用户也可能感觉不到。七、TCP如何保证数据可靠TCP主要通过以下机制1. 序列号Sequence NumberTCP给每个数据编号。例如发送数据A 编号1 数据B 编号2 数据C 编号3接收端如果收到1 3发现缺少2就知道数据B丢失。2. ACK确认机制接收端收到数据后发送ACK例如发送数据编号100回复ACK 101表示编号100已经收到。3. 超时重传如果发送数据1但是没有收到ACKTCP认为可能丢失。重新发送数据14. 校验和TCP包含校验字段用于检测数据损坏传输错误5. 流量控制防止发送太快。例如接收端处理能力10MB/s发送端100MB/sTCP会自动调整发送速度。八、UDP为什么速度更快UDP少了很多机制TCP建立连接 ↓ 发送数据 ↓ 等待确认 ↓ 检查顺序 ↓ 重传 ↓ 调整速度UDP发送数据因此UDP延迟更低。九、TCP和UDP的数据格式区别TCP数据结构TCP头---------------- |源端口 | |目标端口 | |序列号 | |确认号 | |控制标志 | |窗口大小 | |校验和 | ---------------- |数据 ----------------TCP头通常20字节以上。UDP数据结构UDP头---------------- |源端口 | |目标端口 | |长度 | |校验和 | ---------------- |数据 ----------------UDP头固定8字节。因此UDP开销更小。十、TCP和UDP速度对比很多人认为UDP一定比TCP快。实际上不完全正确。速度受到网络环境数据大小延迟要求丢包率影响。但是一般情况下UDP优势延迟低协议简单资源占用少TCP优势自动处理错误稳定可靠十一、TCP应用场景1. HTTP网页访问浏览网页例如浏览器 | TCP | 服务器为什么不用UDP因为网页数据不能丢。例如网页代码html少一个字符页面可能错误。2. 文件传输例如下载软件上传文件FTP原因文件必须完整。3. 邮件例如SMTP协议。邮件内容不能丢失。4. 数据库连接例如MySQL连接。数据必须可靠。十二、UDP应用场景1. 视频直播例如直播画面第100帧 第101帧 第102帧偶尔丢一帧影响不大。但是延迟增加用户体验下降。2. 在线游戏游戏更关注实时性。例如玩家移动当前位置如果TCP等待重传玩家可能瞬移。3. 语音通话例如VoIP。丢几个声音包还能听懂。但是延迟非常影响体验。4. 工业实时控制例如机器人控制位置数据 速度数据更关注实时响应。十三、嵌入式开发中的TCP和UDP在STM32、ESP32、Linux嵌入式设备中经常使用网络通信。硬件STM32 ↓ 以太网PHY ↓ RJ45 ↓ 网络软件Socket接口 ↓ TCP/UDP ↓ IP协议十四、STM32 TCP通信流程TCP客户端初始化网络 ↓ 创建Socket ↓ 连接服务器 ↓ 发送数据 ↓ 接收数据 ↓ 关闭连接类似socket()connect()send()recv()close()十五、STM32 UDP通信流程UDP创建Socket ↓ 绑定端口 ↓ 发送数据 ↓ 接收数据函数socket()sendto()recvfrom()不需要connect()十六、工业通信中如何选择TCP还是UDP选择原则数据不能丢选择TCP例如配置参数文件升级数据上传数据实时性优先选择UDP例如视频控制数据实时状态数据少但频繁可以考虑UDP例如传感器每10ms发送一次状态十七、TCP和UDP常见误区误区1UDP一定不可靠错误。UDP本身不保证可靠。但是应用层可以自己实现ACK重传校验序号例如QUIC协议就是基于UDP实现可靠传输。误区2TCP一定慢错误。TCP经过优化后高速网络下性能非常高。误区3UDP没有连接准确来说UDP没有传输层连接。但是应用程序可以维护逻辑连接。误区4TCP一次发送对应一次接收错误。TCP是字节流。例如发送hello world接收可能helloworld或者hello wor ld需要应用层自己定义协议。十八、TCP和UDP如何选择总结需求选择网页访问TCP文件传输TCP数据库TCP聊天消息TCP视频直播UDP在线游戏UDP语音通话UDP实时控制UDP可靠数据采集TCP十九、总结TCP和UDP最大的区别不是速度。而是是否愿意牺牲速度换取可靠性。TCP连接 确认 排序 重传 可靠UDP简单 快速 低延迟 不保证可靠记忆TCP 像打电话 先建立连接 确认身份 保证每句话听清。 UDP 像广播喊话 直接发送 速度最快 但可能有人没听见。在嵌入式、物联网和工业通信领域配置数据文件传输设备管理通常选择TCP。而实时控制状态广播高频数据通常选择UDP。真正优秀的工程设计不是选择更先进的协议而是根据应用场景选择最合适的通信方式。、

相关新闻

知识蒸馏实战:从ResNet-50到ResNet-18的模型压缩与部署指南

知识蒸馏实战:从ResNet-50到ResNet-18的模型压缩与部署指南

在实际 AI 应用开发和模型部署的语境下,“蒸馏”通常指知识蒸馏(Knowledge Distillation),这是一种将大型、复杂模型(教师模型)的知识迁移到小型、轻量模型(学生模型)中的技术。其核…

2026/10/17 2:09:57 阅读更多 →
在Yank Note中集成AI:打造高效Markdown写作工作流

在Yank Note中集成AI:打造高效Markdown写作工作流

1. 项目概述:当Markdown编辑器遇上AI作为一名长期与文字和代码打交道的创作者,我一直在寻找一个能让我“沉浸式”写作,同时又能无缝整合现代AI能力的工具。传统的Markdown编辑器要么功能过于简陋,要么为了追求大而全变得异常臃肿&…

2026/10/17 3:11:01 阅读更多 →
SAP会计科目主数据:FICO模块的基石设计与核心配置详解

SAP会计科目主数据:FICO模块的基石设计与核心配置详解

1. 从“科目表”说起:SAP财务体系的基石 如果你刚接触SAP FICO模块,可能会被“会计科目主数据”这个概念搞得有点懵。它不像我们日常在Excel里记流水账,随便新建一行写个“办公费”那么简单。在SAP里,会计科目更像是一套精心设计、…

2026/10/17 3:14:49 阅读更多 →

最新新闻

JMeter并发测试核心参数配置:线程数、Ramp-Up与Duration实战

JMeter并发测试核心参数配置:线程数、Ramp-Up与Duration实战

跑过几次JMeter并发测试之后,你会发现真正决定结果靠不靠谱的,往往不是脚本写得有多花哨,而是线程组里那几个参数怎么搭配。线程数、Ramp-Up、循环次数、Duration,每一项单独看都很好理解,但组合在一起就成了最容易踩坑…

2026/10/18 13:05:46 阅读更多 →
Navicat解压即用版安装配置与故障排查实战指南

Navicat解压即用版安装配置与故障排查实战指南

简介:这份资源是 Navicat 数据库管理工具的免安装解压即用版本,面向需要快速搭建数据库连接环境、又不愿经历繁琐安装流程的开发者与运维人员。压缩包共收录 122 个文件,以 108 个 dll 动态链接库为核心,涵盖数据库驱动与界面组件…

2026/10/18 13:05:46 阅读更多 →
Navicat解压即用版安装配置全攻略:从环境依赖到连接数据库

Navicat解压即用版安装配置全攻略:从环境依赖到连接数据库

简介:这份资源是 Navicat 数据库管理工具的免安装解压即用版本,面向需要快速搭建数据库连接环境、又不愿经历繁琐安装流程的开发者与运维人员,尤其适合临时调试、多版本共存或受权限限制无法正常安装的场景。压缩包共收录 122 个文件&#xf…

2026/10/18 13:05:46 阅读更多 →
Navicat Premium 11 免安装版配置指南:从解压到多数据库连接实战

Navicat Premium 11 免安装版配置指南:从解压到多数据库连接实战

简介:NavicatPremium11破解免安装版面向数据库开发与运维人员,尤其适合需要快速上手、不想经历繁琐安装注册流程的初学者与日常使用者。该版本解压后即可直接运行,无需安装、无需注册,即开即用,能有效解决临时环境搭建…

2026/10/18 13:05:46 阅读更多 →
卡尔曼滤波实战指南:状态估计、EKF/UKF与多传感器融合

卡尔曼滤波实战指南:状态估计、EKF/UKF与多传感器融合

简介:《Kalman Filter from the Ground Up v1.0.2》是一份面向导航、控制、机器人及信号处理等领域的卡尔曼滤波系统教程,适合具备线性代数与概率统计基础的工程技术人员、研究生和科研人员,尤其对状态估计、多传感器融合和动态建模有实践需求…

2026/10/18 13:05:46 阅读更多 →
Java打印PDF全攻略:PDFBox静默打印 + exe4j打包部署

Java打印PDF全攻略:PDFBox静默打印 + exe4j打包部署

刚做完一个跟Java打印PDF有关的交付,正好把整套思路和踩过的坑整理出来。需求不复杂:业务系统里生成了一批PDF报告,要直接从后端送打印机,不弹Windows打印对话框,运维机上还没装Java运行时,程序得打成exe双…

2026/10/18 13:04:45 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →