UDP与TCP的区别

简易区别:

  • TCP 像打电话:需要先建立连接,可靠、有序、重传,速度相对慢。适用于网页浏览、文件传输、邮件等。

  • UDP 像发短信/广播:无需连接,直接发送,可能丢失或乱序,速度极快。适用于视频通话、在线游戏、直播等。

以下是详细的对比表格:

TCP与UDP核心区别对比表

特性 TCP (传输控制协议) UDP (用户数据报协议)
连接 面向连接 传输前需通过"三次握手"建立连接,传输后通过"四次挥手"断开连接。 无连接 直接发送数据,无需事先建立连接。
可靠性 高可靠性 提供确认、重传、排序机制,确保数据无误、不丢失、按序到达。 不可靠传输 不保证送达,不保证顺序,可能丢包。
传输形式 字节流 无固定报文边界,应用层需自行处理粘包/拆包问题。 数据报文 有明确边界,每个数据包独立发送和接收。
拥塞控制 有 拥有复杂的滑动窗口、慢启动等算法,能有效避免网络拥塞。 无 无控制,持续以恒定速率发送,可能加剧网络拥塞。
首部开销 大 (20-60字节) 包含序列号、确认号、状态标志等大量控制信息。 小 (8字节) 仅包含源/目的端口、长度和校验和,非常精简。
传输速度 相对较慢 由于建立连接、确认、重传等机制,延迟较高。 非常快 无连接、无确认,实时性高,延迟低。
资源占用 多 需要维护连接状态和大量参数,系统开销大。 少 无需维护连接,开销极小。
应用场景 要求数据准确完整 的场景: • 网页浏览 (HTTP/HTTPS) • 文件传输 (FTP) • 电子邮件 (SMTP/POP3) • 数据库连接 要求实时性、速度快 ,可容忍部分丢失的场景: • 视频流、语音通话 (Zoom, Teams) • 在线游戏、直播 • DNS查询 • SNMP网络管理

除此之外,TCP是可靠连接,那么是不是TCP一定就优于UDP呢?并非如此,TCP和UDP之间的优点和缺点。 不能简单,绝对的进行比较。

  • TCP用于可靠传输的情况,应用于文件传输,重要状态更新等场景。
  • UDP用于对高速传输和实时性要求较高的通信领域,例如, 早期的QQ, 视频传输等。另外UDP可以用于广播。

归根结底,TCP和UDP都是程序员的工具,什么时机用,具体怎么用,还是要根据具体的需求场景去判定。

一句话总结:要可靠、数据完整,选TCP;要速度、实时性,能容忍丢包,选UDP。

用UDP实现可靠传输(经典面试题)

当面试官让你用UDP实现可靠传输时,你一定要立马想到TCP协议,因为TCP协议就是当前比较完善的保证可靠性的协议,面试官让你用UDP这个不可靠的协议来实现可靠传输,无非就是让你在应用层来实现可靠性,此时就可以参考TCP协议保证可靠性的各种机制。

例如:

  • 引入序列号,保证数据按序到达。
  • 引入确认应答,确保对端接收到了数据。
  • 引入超时重传,如果隔一段时间没有应答,就进行数据重发。
  • ...

但TCP保证可靠性的机制太多了,当你被面试官问到这个问题时,最好与面试官进一步进行沟通,比如问问这个用UDP实现可靠传输的应用场景是什么。因为TCP保证可靠性的机制太多了,但在某些场景下可能只需要引入TCP的部分机制就行了,因此在不同的应用场景下模拟实现UDP可靠传输的侧重点也是不同的。

相关推荐
十年磨一剑~12 分钟前
Linux 内核中断处理机制与软硬件协同流程
linux·嵌入式硬件
Ruiery15 分钟前
Linux 6.6内核并发与同步(五):mutex 可睡眠锁
linux·运维·服务器
莫晓燚30 分钟前
双机部署若依 (RuoYi‑Vue) 传统环境部署---实战
linux·运维·数据库·redis·mysql·nginx·ruoyi
开开心心就好1 小时前
竖式除法出题工具,整除余数混合模式
运维·服务器·前端·javascript·ocr·perl·1024程序员节
updayday8541 小时前
客户附件不该发往旧邮箱,如何在发送前拦截 - Ping64 邮件安全管控
大数据·网络·数据库·安全·智能路由器
其实防守也摸鱼1 小时前
Chrome 扩展安全攻防实录:从攻击面到防御实践
开发语言·前端·网络·chrome·安全·web安全·php
领麦微红外1 小时前
红外测温传感器 赋能充电桩热安全与运维智能化
运维·安全·产品经理·智能硬件
小茬粥1 小时前
QEMU 宿主机网卡实例发现与采集脚本(标准 Linux / Proxmox VE 适配版)COLT_CMDB_QEMU_IFACE.sh
网络
CQU_JIAKE2 小时前
10.30【A】
linux