一句话定位
TCP和UDP是互联网的两种运输协议:TCP像挂号信,保证送达;UDP像寄明信片,不管丢没丢。
它们是什么?
TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)是互联网数据传输的两种基本方式。
所有发往互联网的数据包,最终都会走TCP或UDP。它们的区别就像你寄快递的两种方式:
- TCP:挂号快递,有单号,能追踪,丢了能补发
- UDP:平邮明信片,扔进邮筒就不管了,丢不丢看你运气
核心区别
| 特性 | TCP | UDP |
|---|---|---|
| 连接方式 | 面向连接(先握手) | 无连接(直接发) |
| 可靠性 | 保证送达,乱序重排 | 不保证,丢了就丢了 |
| 速度 | 较慢(有额外开销) | 很快(轻量级) |
| 数据顺序 | 有序 | 无序 |
| 流量控制 | 有(自动调节发送速度) | 无 |
| 拥塞控制 | 有(网络堵了会慢下来) | 无 |
| 数据传输 | 流式(字节流) | 报文式(独立数据包) |
| 头部开销 | 20字节 | 8字节 |
为什么视频用UDP,文件用TCP?
视频通话和直播用UDP,因为延迟比完整性更重要。
想象你在和朋友视频通话。如果画面卡顿一下,你可以接受。但如果因为TCP的"重传机制"让每一帧都延迟几秒,你们对话就像在玩"你说完我再说"的延迟游戏,完全没法交流。
UDP的做法是:丢了就丢了,下一帧继续。你的大脑会自动脑补缺失的画面,体验反而更好。
下载文件用TCP,因为完整性比速度重要。
你下载一个软件安装包,如果文件缺了几个字节,安装包可能直接打不开。你必须保证每个字节都正确。TCP会逐个确认,丢了就重传,直到完整为止。
生活类比
| 场景 | 协议 | 原因 |
|---|---|---|
| 发电子邮件 | TCP | 邮件不能丢字少句 |
| 网上购物下单 | TCP | 订单信息必须完整 |
| 视频通话 | UDP | 实时性比完整更重要 |
| 在线游戏 | UDP | 0.1秒延迟也是延迟 |
| DNS查询 | UDP | 查询简单快速,丢了重发就行 |
| 文件传输 | TCP | 每个字节都不能错 |
一句话总结
TCP追求"必须送到",UDP追求"快点送到"。视频选UDP因为卡一帧无伤大雅;文件选TCP因为少一个字节就废了。