【计算机网络硬核入门 01】一文彻底搞懂 TCP 与 UDP:从通俗比喻到代码实战,面试 / 开发再也不懵

发布时间:2026/8/13 14:51:21

【计算机网络硬核入门 01】一文彻底搞懂 TCP 与 UDP:从通俗比喻到代码实战,面试 / 开发再也不懵
专栏定位本专栏专为计算机网络入门、面试备战、后端 / 前端 / 运维开发基础补牢打造拒绝堆砌晦涩术语用「大白话 生活实例 可运行代码」的方式把每一个核心知识点讲透、讲实。本文是专栏第 1 篇带你从零分清 TCP 与 UDP搞懂它们的本质区别与真实工业界应用场景。一、先答最基础的问题它们是同一个领域的术语吗结论先行是而且是完全同层级、同领域的核心协议。两者都属于计算机网络 → TCP/IP 四层模型 → 传输层的两大核心协议是互联网数据传输的 “底层规则”。简单说当两台电脑上的程序要互相发数据时几乎都是用 TCP 或者 UDP 来完成传输的。两者的官方标准均由互联网工程任务组IETF制定是全球互联网通用的标准UDP 官方标准RFC 768互联网标准 STD 6可在 IETF 官网验证https://datatracker.ietf.org/doc/html/rfc768TCP 最新官方标准RFC 92932022 年发布替代经典的 RFC 793互联网标准 STD 7验证地址https://datatracker.ietf.org/doc/html/rfc9293打个比方传输层就像 “物流行业”TCP 和 UDP 就是物流行业里的两种配送模式 —— 一个是 “精准送达、签字确认的顺丰快递”一个是 “追求速度、随发随走的同城闪送”都负责送货只是规则和优先级完全不同。二、UDP 是什么一句话讲透它的本质通俗定义UDP 全称用户数据报协议User Datagram Protocol是一种「无连接、不保证可靠、追求极致速度」的传输协议。你可以把它完美类比成「对讲机通话」你按下按键直接说话不需要提前拨号、问对方 “在不在、能不能听到”你说的话发出去就完事了对方有没有听到、听没听全、有没有听漏你完全不知道信号不好的时候会丢字、声音卡一下但绝对不会停下来重说一遍优先保证 “实时能对话”。核心特点对应技术术语无连接传输数据前不需要和对方建立连接知道对方的 IP 和端口直接发包就可以没有 “握手” 过程。不可靠交付不保证数据一定能送到不保证数据顺序不乱丢包了也不会自动重发。面向数据报数据是一个包一个包独立发送的有明确的边界发一次就是一个完整的包不会出现粘包。首部开销极小UDP 的首部只有 8 字节额外负担非常小。没有拥塞控制、流量控制不管网络堵不堵该发多少就发多少不会主动降速。生活 互联网实例微信 / QQ 的语音 / 视频通话网络卡的时候你只会听到对方声音卡一下、画面糊一下不会整个通话停下来等数据重传。丢半秒声音没关系总比延迟 3 秒等重传强。游戏直播 / 户外直播观众看到的画面永远是 “实时的”网络差的时候只会卡顿、降画质不会倒回去补之前丢的画面。王者荣耀 / 和平精英这类实时对战游戏你的走位、技能释放都是 UDP 传输。如果用可靠协议卡一下就要等重传操作延迟会高到没法玩。DNS 域名解析你输入网址后电脑向 DNS 服务器发查询请求发出去等回复就够了丢了大不了重发一次不需要建立连接的开销。三、TCP 是什么为什么它是互联网的 “靠谱担当”通俗定义TCP 全称传输控制协议Transmission Control Protocol是一种「面向连接、可靠交付、带流量控制和拥塞控制」的传输协议。对应的生活类比是「打电话 顺丰快递」的结合体打电话通话前必须先拨号对方接通了三次握手你们才能正式说话顺丰快递每个包裹都有单号寄出去后要等对方签收确认没签收就重发保证包裹一定送到而且按顺序送到不会乱序。核心特点对应技术术语面向连接传输数据前必须先通过「三次握手」和对方建立连接连接建好了才能发数据断开时还要走「四次挥手」。可靠交付保证数据一定能完整送到对方丢包自动重传保证数据按发送顺序到达乱序了会自动重排。面向字节流数据是像流水一样传输的没有明确的包边界可能会出现 “粘包” 现象。拥塞控制 流量控制网络堵的时候会主动降速对方处理不过来的时候也会少发保证网络稳定不把对方冲垮。首部开销大TCP 首部最少 20 字节比 UDP 大很多。生活 互联网实例浏览网页HTTP/HTTPS你打开一个网页文字、图片必须完整、准确地加载出来不能缺字少图也不能顺序乱掉所以用 TCP。下载文件 / 软件下载的文件必须完整无损少一个字节都可能打不开所以必须用 TCP 保证可靠。微信发文字消息 / 文件传输你发的文字不能缺字发的文件不能损坏必须保证对方完整收到。远程登录 SSH、远程桌面你敲的每一个命令、每一步操作都必须准确传到服务器不能丢包乱序。四、一张表讲清 TCP 与 UDP 的核心区别对比维度TCPUDP连接特性面向连接传输前必须三次握手建连接无连接知道地址直接发可靠性可靠保证送达、保证顺序、丢包重传不可靠不保证送达、不保证顺序、不重传传输形式面向字节流无明确包边界易粘包面向数据报有明确包边界不粘包拥塞 / 流量控制有网络拥堵时主动降速无不管网络状态一直发首部开销最小 20 字节最大可达 60 字节固定 8 字节开销极小传输速度较慢握手、确认、重传都有开销极快几乎没有额外开销资源占用较高需要维护连接状态极低不需要维护连接通俗总结区别TCP 是「靠谱但慢」适合对数据准确性要求高、对速度要求不极致的场景UDP 是「快但不靠谱」适合对实时性要求极高、丢一点数据没关系的场景。五、什么时候用 TCP什么时候用 UDP真实场景大盘点必须用 TCP 的场景可靠性优先网页访问HTTP/HTTPS 协议底层都是 TCP保证页面资源完整加载文件传输FTP、SFTP 文件传输保证文件无损邮件收发SMTP、POP3、IMAP 协议保证邮件内容完整远程控制SSH、远程桌面保证操作指令准确执行金融交易、订单系统每一笔交易数据都不能丢、不能错必须可靠传输。优先用 UDP 的场景实时性优先实时音视频通话微信语音、Zoom 会议、视频通话直播 / 流媒体抖音直播、B 站直播、网络电视实时多人游戏MOBA、FPS 类对战游戏DNS 解析域名查询请求小、开销低物联网设备数据上报传感器定时上报数据丢一两个数据点没关系。补充说明现在很多场景会做 “UDP 自定义可靠逻辑” 的方案比如 QUIC 协议HTTP/3 底层就是基于 UDP 改造的既保留 UDP 的低延迟又自己实现了可靠传输属于进阶用法。六、代码实战亲手写 TCP/UDP 通信程序下面用 Python 标准库socket实现最简单的 TCP、UDP 通信 Demo每行代码都加注释说明功能。代码来源基于 Python 官方 socket 库标准用法编写官方文档验证地址https://docs.python.org/3/library/socket.html6.1 UDP 通信示例UDP 是无连接的服务端不需要监听连接客户端也不需要提前连接直接发包即可。UDP 服务端代码# 导入Python标准socket库提供网络编程所需的套接字接口 import socket # 创建UDP套接字对象 # AF_INET 指定使用IPv4地址族SOCK_DGRAM 指定使用数据报类型对应UDP协议 udp_server_socket socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 绑定本机IP与端口号 # 空字符串表示绑定本机所有可用网卡8080为自定义监听端口 # 功能向操作系统注册端口将该端口的UDP数据转发给当前程序 udp_server_socket.bind((, 8080)) print(UDP服务端已启动等待接收数据...) # 开启无限循环持续接收客户端发来的数据 while True: # 阻塞等待接收数据单次最多接收1024字节 # 返回值为二元组(接收到的字节数据, 发送方的(IP地址, 端口号)) data, client_addr udp_server_socket.recvfrom(1024) # 将字节数据按UTF-8解码为字符串打印发送方地址与消息内容 print(f收到来自{client_addr}的消息{data.decode(utf-8)}) # 构造回复消息并编码为字节通过sendto发送回指定客户端地址 reply f服务端已收到{data.decode(utf-8)}.encode(utf-8) udp_server_socket.sendto(reply, client_addr)UDP 客户端代码# 导入Python标准socket库 import socket # 创建UDP客户端套接字参数与服务端一致IPv4 UDP协议 udp_client_socket socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 定义目标服务端的IP地址与端口号127.0.0.1代表本机 server_addr (127.0.0.1, 8080) # 定义要发送的文本消息通过encode编码为字节格式网络传输只能传字节 message 你好UDP服务端.encode(utf-8) # 直接向目标地址发送数据报UDP无需提前建立连接 # 功能将封装好的UDP数据包发送到指定的服务端地址 udp_client_socket.sendto(message, server_addr) # 阻塞等待接收服务端的回复数据单次最多接收1024字节 data, server udp_client_socket.recvfrom(1024) # 解码并打印回复内容 print(f收到服务端回复{data.decode(utf-8)}) # 关闭套接字释放系统资源 udp_client_socket.close()6.2 TCP 通信示例TCP 是面向连接的服务端要监听等待连接客户端要先建立连接才能发数据。TCP 服务端代码# 导入Python标准socket库 import socket # 创建TCP套接字对象 # AF_INET 指定IPv4SOCK_STREAM 指定字节流类型对应TCP协议 tcp_server_socket socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定本机IP与8080端口 tcp_server_socket.bind((, 8080)) # 开启监听模式参数5为最大挂起连接数 # 功能将套接字设为被动监听状态等待客户端发起连接请求 tcp_server_socket.listen(5) print(TCP服务端已启动等待客户端连接...) # 无限循环持续接受新的客户端连接 while True: # 阻塞等待客户端连接连接建立后返回两个值 # client_socket专门用于和该客户端通信的新套接字client_addr客户端地址 # 功能完成TCP三次握手建立可靠连接 client_socket, client_addr tcp_server_socket.accept() print(f客户端{client_addr}已连接) # 通过连接套接字接收客户端发来的数据单次最多1024字节 data client_socket.recv(1024) print(f收到客户端消息{data.decode(utf-8)}) # 构造回复消息并编码通过已建立的连接发送给客户端 reply f服务端已收到{data.decode(utf-8)}.encode(utf-8) client_socket.send(reply) # 关闭与该客户端的连接触发TCP四次挥手流程 client_socket.close()TCP 客户端代码# 导入Python标准socket库 import socket # 创建TCP客户端套接字IPv4 TCP协议 tcp_client_socket socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 向服务端发起连接请求 # 功能发起TCP三次握手连接成功前程序会阻塞等待 tcp_client_socket.connect((127.0.0.1, 8080)) # 构造发送消息并编码为字节 message 你好TCP服务端.encode(utf-8) # 通过已建立的TCP连接发送数据 tcp_client_socket.send(message) # 阻塞等待接收服务端返回的回复数据 data tcp_client_socket.recv(1024) print(f收到服务端回复{data.decode(utf-8)}) # 关闭TCP连接主动发起四次挥手释放系统资源 tcp_client_socket.close()运行说明先启动对应服务端程序再启动客户端程序即可看到通信效果可以直观感受到差异TCP 必须先连接成功才能传输数据UDP 无需连接直接发包。七、常见误区解惑误区TCP 一定比 UDP 慢答通常场景下是但不是绝对。TCP 的开销主要集中在建立连接和确认重传但在稳定长连接、大数据量传输场景下TCP 的传输效率并不低如果 UDP 在上层自己实现可靠传输逻辑整体开销也会上升。误区UDP 完全不可靠所以没用答恰恰相反。在实时性场景里“低延迟” 比 “零丢包” 重要得多。人类对语音延迟的容忍度仅几百毫秒若用 TCP 传输一丢包就重传延迟会高到无法正常通话。误区TCP 能保证数据一定送到对方应用程序里答TCP 只能保证数据送达对方操作系统的内核缓冲区无法保证对方的应用程序一定会读取处理。比如对方程序卡死数据已到系统缓冲区但未被读取不属于 TCP 协议的责任范围。八、全文总结TCP 和 UDP 同属 TCP/IP 模型的传输层协议是互联网数据传输的两大核心基石TCP 面向连接、可靠、传输开销大适合对数据准确性要求高的场景UDP 无连接、不可靠、传输速度快适合对实时性要求极高的场景协议没有绝对的优劣只有是否匹配业务场景。下一篇预告《拆解 TCP 三次握手与四次挥手为什么是三次不是两次为什么挥手要四次》带你从底层原理搞懂 TCP 连接的完整生命周期。来源说明TCP/UDP 的定义、所属层级、核心特性、标准协议属于计算机网络领域公认的基础核心知识有明确的 IETF RFC 标准文档支撑行业无争议。应用场景分类与行业实践基于互联网行业通用的技术选型共识是开发、运维、技术面试领域的通用结论。代码示例与功能说明基于 Python 官方标准库socket的标准用法可直接运行验证。可验证来源UDP 标准 RFC 768https://datatracker.ietf.org/doc/html/rfc768TCP 标准 RFC 9293https://datatracker.ietf.org/doc/html/rfc9293Python socket 官方文档https://docs.python.org/3/library/socket.html

相关新闻

文件备注技术全解析:从元数据到影子文件的跨平台管理方案

文件备注技术全解析:从元数据到影子文件的跨平台管理方案

2026/8/13 14:51:21

1. 先搞清楚“文件备注”到底能解决什么实际问题 给电脑文件挂载备注,听起来是个小功能,但真正用好了,能解决很多实际工作中的痛点。它解决的核心问题是: 如何在文件本身之外,附加一段可搜索、可查看的说明性文字&…

WinForms与Halcon联合编程:构建高效工业视觉应用框架

WinForms与Halcon联合编程:构建高效工业视觉应用框架

2026/8/13 14:41:21

如果你正在用 C# WinForms 开发工业视觉应用,却苦于原生控件功能简陋,无法流畅显示和处理高分辨率图像;或者你尝试将 Halcon 强大的图像算法集成到桌面程序时,总是卡在窗口绑定、内存管理或跨线程刷新这些“坑”里,那么…

3步解锁专业翻译:DeepL Chrome插件让外文网页阅读零障碍

3步解锁专业翻译:DeepL Chrome插件让外文网页阅读零障碍

2026/8/13 14:41:21

3步解锁专业翻译:DeepL Chrome插件让外文网页阅读零障碍 【免费下载链接】deepl-chrome-extension A DeepL Translator Chrome extension 项目地址: https://gitcode.com/gh_mirrors/de/deepl-chrome-extension 还在为阅读外文网页而头疼吗?DeepL…

M3U8下载工具深度解析:从多线程原理到批量自动化实践

M3U8下载工具深度解析:从多线程原理到批量自动化实践

2026/8/13 15:41:25

你有没有遇到过这样的场景:想下载一个在线视频,发现它用的是 M3U8 格式,浏览器开发者工具里能看到一串串的.ts文件。你试过用一些现成的工具,要么速度慢得像蜗牛,要么批量处理时动不动就卡死,要么就是界面复…

Vue+SpringBoot实验室耗材管理系统:从设计到部署的全栈实践

Vue+SpringBoot实验室耗材管理系统:从设计到部署的全栈实践

2026/8/13 15:41:25

1. 项目概述与核心价值 实验室耗材管理,这事儿听起来简单,但真干过的人都知道有多头疼。试剂瓶标签模糊、库存数量对不上、领用记录全靠手写本、采购申请流程混乱……这些场景几乎在每个科研实验室都上演过。传统的人工或Excel表格管理方式,在…

B站缓存视频转MP4,5秒无损搞定:m4s-converter 使用全攻略

B站缓存视频转MP4,5秒无损搞定:m4s-converter 使用全攻略

2026/8/13 15:41:25

B站缓存视频转MP4,5秒无损搞定:m4s-converter 使用全攻略 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter B站缓存视频转M…

多Agent协作框架:从原理到实战,构建高效AI智能体系统

多Agent协作框架:从原理到实战,构建高效AI智能体系统

2026/8/13 15:41:25

1. 项目概述:为什么我们需要一个多Agent协作框架? 最近在折腾AI应用开发的朋友,估计都绕不开“Agent”这个概念。从年初开始,各种单Agent应用层出不穷,从能帮你写周报的,到能自动分析数据的,确实…

KiCad Footprint Libraries完整清单:从电阻电容到连接器的1000+封装类型全解析

KiCad Footprint Libraries完整清单:从电阻电容到连接器的1000+封装类型全解析

2026/8/13 15:41:25

KiCad Footprint Libraries完整清单:从电阻电容到连接器的1000封装类型全解析 【免费下载链接】kicad-footprints Official KiCad Footprint Libraries for Kicad version 5 项目地址: https://gitcode.com/gh_mirrors/ki/kicad-footprints KiCad Footprint …

Rust模块系统详解:从mod、use到多文件项目组织

Rust模块系统详解:从mod、use到多文件项目组织

2026/8/13 15:31:24

1. 从“孤岛”到“模块化”:Rust代码组织的核心诉求 刚开始接触Rust时,很多朋友都会遇到一个看似简单却让人困惑的问题:我的代码都写在一个 main.rs 里,现在想分到不同的文件里,该怎么引入?比如&#xff…

比较好的亚太EMBA,问了6位校友师资差别真的挺大

比较好的亚太EMBA,问了6位校友师资差别真的挺大

2026/8/13 11:01:28

比较好的亚太EMBA核心差异先看什么?对于希望兼顾工作与系统管理能力提升的亚太区高管而言,筛选匹配度高的EMBA项目时,师资配置是决定学习体验与实际收获的核心要素之一。我们结合3-4个公开信息透明、办学历史较长的亚太区主流EMBA项目特点&am…

备考3个月对比6份资料 海外游学的亚洲EMBA面试注意点

备考3个月对比6份资料 海外游学的亚洲EMBA面试注意点

2026/8/11 8:44:43

备考海外游学的亚洲EMBA面试,核心要围绕项目国际化设计逻辑、个人跨文化管理经验匹配度两个维度准备,避免把游学模块等同于普通旅游参访的认知偏差。不少备考者花3个月对比6份资料,却容易忽略面试官对“国际视野落地能力”的考察——比如香港…

比较好的国内EMBA,问了二十位校友聊透人脉价值

比较好的国内EMBA,问了二十位校友聊透人脉价值

2026/8/11 15:57:54

比较好的国内EMBA核心差异体现在哪些方面?比较好的国内EMBA的核心长期价值,很大程度上依托于校友网络的连接质量与资源生态的活跃度,这也是不少高管在择校时优先考量的因素。我们结合3-4个市场关注度较高的项目公开信息,从课程、师…

电商毛利率别再手动算了!2026年3种自动分析工具实测对比

电商毛利率别再手动算了!2026年3种自动分析工具实测对比

2026/8/13 0:00:21

一、开篇:毛利率——电商运营最该盯但最难盯的指标 电商运营中有一个指标,几乎所有老板都会问,但几乎所有运营都回答得不够确定——毛利率。不是"店铺毛利率",而是"每条链接的毛利率""每个品类的毛利率…

15-SaaS系统灰度发布:滚动更新、金丝雀发布、不停机迭代

15-SaaS系统灰度发布:滚动更新、金丝雀发布、不停机迭代

2026/8/13 0:00:21

15-SaaS系统灰度发布:滚动更新、金丝雀发布、不停机迭代 一、为什么需要不停机发布? 传统发布方式:停服务 → 替换包 → 启服务。在内部系统里勉强能用,但在SaaS系统中是灾难。 我们的无人售货柜SaaS平台服务全国几千台设备&#…

17-线上Bug热修复流程:紧急分支、补丁合并、版本快速回退方案

17-线上Bug热修复流程:紧急分支、补丁合并、版本快速回退方案

2026/8/13 0:00:21

17-线上Bug热修复流程:紧急分支、补丁合并、版本快速回退方案 前言 大家好,我是黒漂技术佬。 线上出 Bug 这种事,就像你正吃着火锅唱着歌,突然接到电话说"柜子门打不开了"。炸不炸?慌不慌?别急&a…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/8 5:07:31

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/9 13:42:46

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/8 2:30:15

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…