# 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/8/8 10:36:24 阅读更多 →
在Yank Note中集成AI:打造高效Markdown写作工作流

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

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

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

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

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

2026/8/8 10:36:24 阅读更多 →

最新新闻

西宁市网站建设公司排名全解析:避坑指南与深度选购策略

西宁市网站建设公司排名全解析:避坑指南与深度选购策略

在这个移动互联网几乎渗透到生活每一个角落的时代,对于西宁市的中小企业乃至大型集团来说,拥有一套专业、美观且功能强大的企业网站,早就不是“锦上添花”的选项,而是“刚需”中的刚需。你可能在深夜里辗转反侧,看着手里那份过时的官网发愁;也可能在拜访客户时,因为网站…

2026/8/8 11:31:05 阅读更多 →
TCP可靠传输机制与性能优化实践

TCP可靠传输机制与性能优化实践

1. TCP协议可靠传输的核心机制剖析TCP协议作为传输层的核心协议,其可靠传输特性建立在五个关键技术之上。首先是序列号机制,每个字节数据都被赋予唯一编号,这个32位的序列号空间允许在4GB数据范围内无重复标识。发送方维护的NextByteToSend变…

2026/8/8 11:31:05 阅读更多 →
告别窗口尺寸限制:用Window Resizer重新掌控你的桌面布局

告别窗口尺寸限制:用Window Resizer重新掌控你的桌面布局

告别窗口尺寸限制:用Window Resizer重新掌控你的桌面布局 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 还在为那些"顽固"的Windows窗口而烦恼吗&#xff1…

2026/8/8 11:31:05 阅读更多 →
终极指南:如何用BetterRenderDragon彻底改变你的Minecraft光影体验

终极指南:如何用BetterRenderDragon彻底改变你的Minecraft光影体验

终极指南:如何用BetterRenderDragon彻底改变你的Minecraft光影体验 【免费下载链接】BetterRenderDragon 更好的渲染龙 项目地址: https://gitcode.com/gh_mirrors/be/BetterRenderDragon 厌倦了Minecraft基岩版单调的画面?BetterRenderDragon作为…

2026/8/8 11:31:05 阅读更多 →
微信聊天数据本地化管理的三种实用方案对比

微信聊天数据本地化管理的三种实用方案对比

微信聊天数据本地化管理的三种实用方案对比 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsg 在数字时代&…

2026/8/8 11:31:05 阅读更多 →
SpringBoot+Vue+MySQL构建企业级招聘系统全解析

SpringBoot+Vue+MySQL构建企业级招聘系统全解析

1. 项目概述与技术栈选型这个招聘系统信息管理系统采用SpringBootVueMySQL的技术组合,是一套开箱即用的前后端分离解决方案。我在实际企业级开发中多次采用类似架构,这种组合既能满足快速开发需求,又具备良好的扩展性。SpringBoot作为后端框架…

2026/8/8 11:30:05 阅读更多 →

日新闻

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

当下AI应用飞速普及,无数企业下场搭建智能体系统,可落地阶段难题接踵而至:上下文无限堆积频繁爆栈、AI工具调用准确率低下、Token成本居高不下、企业数据权限混乱暗藏安全隐患……很多团队卡在架构搭建环节,空有前沿技术概念&…

2026/8/8 0:00:07 阅读更多 →
PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码 【免费下载链接】php-qrcode A PHP QR Code generator and reader with a user-friendly API. 项目地址: https://gitcode.com/gh_mirrors/ph/php-qrcode 在当今数字时代,二维码已…

2026/8/8 0:00:08 阅读更多 →
UniApp微信小程序隐私保护组件开发:从原理到实战

UniApp微信小程序隐私保护组件开发:从原理到实战

1. 项目缘起:为什么我们需要一个隐私保护通用组件?最近在维护一个基于uniapp开发的微信小程序矩阵时,我遇到了一个非常棘手的问题。随着平台对用户隐私保护的要求越来越严格,几乎每一个新版本发布,或者在某些特定机型&…

2026/8/8 0:00:08 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/8 8:58:26 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/7 23:24:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/7 17:02:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/7 23:54:54 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/7 17:02:36 阅读更多 →