计网八股-TCP跟UDP的区别是啥?
📅 2026/8/3 3:30:10
👁️ 次浏览
深入浅出TCP 与 UDP 全解析 —— 从原理到选型一个追求绝对可靠一个追求极致速度。面试八股常客、网络编程必修课TCP 和 UDP 到底怎么选一文讲透。目录一、TCP 与 UDP 是什么二、TCP可靠传输的快递专线三、UDP简单粗暴的发件即达四、TCP vs UDP 全面对比五、典型应用场景六、如何选型七、总结一、TCP 与 UDP 是什么1.1 传输层的两个主角在 OSI 七层模型中传输层位于网络层之上、应用层之下。它负责端到端的数据传输而TCP和UDP正是传输层的两大核心协议。协议全称一句话概括类比TCPTransmission Control Protocol面向连接、可靠传输 快递专线送达签收UDPUser Datagram Protocol无连接、尽力而为 平邮寄信寄出即完记住TCP 像打电话先拨通再说话UDP 像发短信发出去就行对方收没收到不保证。1.2 端口号传输层的地标无论是 TCP 还是 UDP都通过端口号区分同一台主机上的不同应用。IP 地址 → 定位到哪台主机 端口号 → 定位到哪个进程知名端口服务协议21FTPTCP53DNSUDP80HTTPTCP443HTTPSTCP123NTPUDP二、TCP可靠传输的快递专线2.1 三次握手建立连接TCP 是面向连接的协议通信前必须先打招呼确认双方在线。客户端 服务端 │ SYN1, seqx ────▶ │ │ │ │ SYN1, ACK1, seqy ◀──── │ │ ackx1 │ │ │ │ ACK1, seqx1 ────▶ │ │ acky1 │ │ │步骤发送方内容意义①客户端SYN我要连接你②服务端SYN ACK收到我也要连你③客户端ACK确认连接建立 ✅2.2 可靠传输四大机制TCP 的可靠不是天生的而是靠一系列机制堆出来的机制作用类比确认应答ACK收到数据后回执快递签收超时重传没收到 ACK 就重发签收失败重新派件序列号与去重给数据编号乱序可重组包裹上的单号校验和检测数据是否损坏验货检查核心观点可靠性 编号 确认 重传 校验缺一不可。2.3 流量控制与拥塞控制除了保证送达TCP 还要控制速度避免把对方或网络撑爆。机制防的是什么手段流量控制接收方处理不过来滑动窗口动态调整发送速度拥塞控制网络中间设备拥堵慢启动、拥塞避免、快重传、快恢复2.4 四次挥手断开连接客户端 服务端 │ FIN1 ────▶ │ │ │ ← 服务端可能还有数据要发 │ ACK1 ◀──── │ │ │ │ FIN1 ◀──── │ │ ACK1 ────▶ │步骤发送方内容意义①客户端FIN我说完了想断开②服务端ACK收到但我要把数据发完③服务端FIN我也发完了断开吧④客户端ACK确认正式断开⚠️ 为什么四次而不是三次因为 TCP 是全双工双方要各自说一次再见。三、UDP简单粗暴的发件即达3.1 UDP 的三个没有特征TCPUDP连接有连接无连接可靠性可靠不可靠流量/拥塞控制有没有正是这三个没有换来了 UDP 的两大优势快没有握手开销没有确认重传发送即走简单首部只有 8 字节而 TCP 首部至少 20 字节3.2 首部对比轻量级 vs 重量级TCP 首部至少 20 字节 UDP 首部固定 8 字节 ┌───────────────┐ ┌───────────────┐ │ 源端口 16bit │ │ 源端口 16bit │ │ 目的端口 16bit│ │ 目的端口 16bit│ │ 序列号 32bit │ │ 长度 16bit │ │ 确认号 32bit │ │ 校验和 16bit │ │ 数据偏移 4bit │ └───────────────┘ │ 标志位 6bit │ 够轻量够直接 │ ... 各种选项 │ └───────────────┘四、TCP vs UDP 全面对比维度TCPUDP连接方式面向连接无连接可靠性可靠传输尽力而为传输方式字节流有序数据报无序速度慢快首部开销20~60 字节8 字节流量控制✅ 有❌ 无拥塞控制✅ 有❌ 无粘包问题有需处理无按报文边界应用场景文件、网页、邮件视频、语音、游戏核心观点TCP 用开销换可靠UDP 用可靠换速度没有谁更好只有谁更合适。五、典型应用场景5.1 用 TCP数据不能丢场景协议原因HTTP/HTTPSTCP网页必须完整加载FTP 文件传输TCP文件缺一个字节都不能用SMTP 邮件TCP邮件不能丢SSH 远程登录TCP命令要按顺序执行5.2 用 UDP速度优先场景协议原因DNS 域名解析UDP查询短平快丢了重查一次就行视频/直播UDP丢一帧无伤大雅卡顿才致命实时语音通话UDP延迟 完整性在线游戏UDP位置信息要实时不需要旧包核心观点判断标准很简单 ——丢了能不能重来不能重来就用 TCP能接受偶尔丢失就用 UDP。六、如何选型6.1 选型决策树数据必须 100% 送达 ├─ 是 ────▶ TCP └─ 否 ── 对实时性要求高 ├─ 是 ────▶ UDP └─ 否 ──▶ TCP图省事就用 TCP6.2 代码示例Socket 编程# TCP 服务端可靠、有序importsocket serversocket.socket(socket.AF_INET,socket.SOCK_STREAM)# SOCK_STREAM TCPserver.bind((0.0.0.0,8080))server.listen(5)conn,addrserver.accept()# 先建立连接dataconn.recv(1024)# 按字节流接收# UDP 服务端无连接、尽力而为importsocket serversocket.socket(socket.AF_INET,socket.SOCK_DGRAM)# SOCK_DGRAM UDPserver.bind((0.0.0.0,8080))data,addrserver.recvfrom(1024)# 直接收不用 acceptserver.sendto(bpong,addr)# 直接发无连接对比项TCPUDPPython Socket 类型SOCK_STREAMSOCK_DGRAM接收函数recv()recvfrom()建立连接需要connect/accept不需要七、总结7.1 核心要点TCP面向连接、可靠、有序三次握手建连、四次挥手断连适合不能丢的数据UDP无连接、尽力而为、轻量适合要快、可容忍丢失的场景选型关键看业务是不能丢还是不能慢首部差异TCP 20-60 字节 vs UDP 仅 8 字节UDP 更省网络开销TCP 自带的ACK、超时重传、滑动窗口、拥塞控制四件套保证可靠性7.2 最后的话核心观点没有绝对的好坏 —— 可靠与速度本就是一对矛盾TCP 和 UDP 只是站在天平的两端由你的业务场景来抉择。记住面试常考三次握手、四次挥手、可靠机制必须背熟开发常选HTTP/DNS 是现成的例子写代码时想想你的数据能不能丢进阶方向QUIC 协议基于 UDP 实现了类 TCP 的可靠传输是未来的趋势参考资料《计算机网络第7版》谢希仁RFC 793 —— TCP 协议规范RFC 768 —— UDP 协议规范TCP/IP 详解卷 1协议标签计算机网络, TCP, UDP, 传输层, 三次握手, 面试题
1. 项目概述:为什么选择XIAO ESP32S3 (Sense)玩转WiFi?最近在捣鼓一个需要无线连接的小项目,手头正好有一块Seeed Studio的XIAO ESP32S3 (Sense)开发板,就决定用它来深度折腾一下WiFi功能。这块板子虽然小巧,但集成了E…
📅 2026/8/3 3:29:10
如何让群晖NAS支持任意硬盘:Synology_HDD_db 完全指南 【免费下载链接】Synology_HDD_db Add your HDD, SSD and NVMe drives to your Synologys compatible drive database and a lot more 项目地址: https://gitcode.com/GitHub_Trending/sy/Synology_HDD_db …
📅 2026/8/3 3:29:10
1. 项目概述:从“看见”到“看清”的无线电艺术雷达,这个听起来充满军事与科幻色彩的词,其实早已融入我们生活的方方面面。从保障飞机安全起降的空中交通管制,到汽车上帮你自动跟车、紧急刹车的毫米波雷达,再到气象台预…
📅 2026/8/3 3:29:10
003006002_WPF WrapPanel 基类官方类定义逐行深度解析摘要:本文基于 .NET 8 官方开源源码,对 WPF 的 WrapPanel 流式布局容器进行逐行深度解析。文章从类层次结构出发,依次剖析完整类定义、静态构造函数、三个核心依赖属性(Orient…
📅 2026/8/3 4:30:46
1. 项目概述:当无线图传遇上远距离通信最近在折腾一个挺有意思的项目,起因是老家有个果园,想搞一套低成本、低功耗又能覆盖几公里范围的安防监控。传统的4G摄像头方案,一来是电费感人(拉市电不方便)&#x…
📅 2026/8/3 4:30:46
1. 项目概述:为什么要在Java里用SQLite?如果你是一个Java开发者,正在为一个桌面应用、移动端原型或者一个轻量级的服务寻找一个本地数据存储方案,那么SQLite这个名字大概率会出现在你的候选清单里。它不像MySQL、PostgreSQL那样需…
📅 2026/8/3 4:30:46
你是不是也刷到过那些“一周学会Python”“学完就能接单”的标题?点进去发现要么是零散的知识点,要么是过时的代码,学完还是不知道如何从零开始一个真正的项目。对于想入门Python,特别是瞄准爬虫和数据分析这两个热门方向的新手来…
📅 2026/8/3 4:30:46
1. 项目概述:从“杰夫”看网络链接安全陷阱最近在社交媒体和群聊里,一个叫“杰夫”的链接成了大家热议和警惕的对象。这其实不是什么新鲜事,每隔一段时间,网络上就会冒出类似的“明星链接”,它们伪装成各种诱人的内容—…
📅 2026/8/3 4:30:46
1. 项目概述:AI提示词管理平台的行业需求在AI技术爆发式增长的当下,提示词(Prompt)已成为人机交互的核心媒介。根据最新行业调研,专业AI使用者平均每天需要处理37组不同场景的提示词,而其中68%的时间消耗在…
📅 2026/8/3 4:29:45
PC服务器具身机器人:构建具身智能从仿真到量产的闭环迭代混合架构一、前言:具身智能需要“混合算力闭环系统”传统人工智能依赖云端静态数据集训练,不具备物理交互能力,无法适应真实世界的不确定性。具身智能(Embodied…
📅 2026/8/3 0:00:19
前言构建机器人、具身智能这类分布式实时系统,通信底座直接决定整套系统的实时性、容错性、组网能力。分布式领域长期存在 4 类经典通信架构:点对点模式、Broker 中间代理模式、广播模式、以数据为中心(DDS)模式。很多开发者疑惑&…
📅 2026/8/3 0:00:19
完整指南:如何让2008-2017年老款Mac运行最新macOS系统 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher
还在为手中的老款Mac无法升级到最新系统而烦…
📅 2026/8/3 0:00:19
1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…
📅 2026/8/3 1:24:09
温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…
📅 2026/8/3 1:24:09
1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同ÿ…
📅 2026/8/3 1:24:09
AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言
HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…
📅 2026/8/3 1:24:08
无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut
在数字媒体创作领域,视频编辑处理的质量损…
📅 2026/8/3 1:24:08
1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…
📅 2026/8/3 1:24:08