本文目录导读:

TCP(传输控制协议)和 UDP(用户数据报协议)是传输层的两大核心协议,它们的核心区别可以通过一个比喻来理解:
TCP很像“打电话”: 需要先拨号建立连接(三次握手),通话时双方能确认你是否听清,通话结束要挂断(四次挥手),它很可靠,但效率稍低。
UDP很像“寄明信片”: 直接扔进邮筒,不需要提前打招呼,也不保证对方一定能收到,到达顺序也可能乱,它很灵活、效率高,但不可靠。
以下是它们的具体区分维度:
连接性
- TCP:面向连接
- 通信前必须建立连接(三次握手),通信结束后需要释放连接(四次挥手)。
- 例子: 打电话前必须确认对方在听。
- UDP:无连接
- 不需要建立连接,直接发送数据包。
- 例子: 直接在广播里喊一句话,不管谁听不听。
可靠性
- TCP:可靠传输
- 有确认机制: 接收方收到数据后,会回复确认,如果发送方没收到确认,会自动重传。
- 有顺序保证: 数据包到达乱序时,接收方会重新排序,确保应用层拿到的数据是完整的顺序流。
- 结果: 无差错、不丢失、不重复、按序到达。
- UDP:尽最大努力交付(不可靠)
- 无确认机制: 发送后就不管了,不管对方收没收到。
- 无顺序保证: 如果发的是“1、2、3”,对方可能收到“2、1、3”或只收到“1、3”。
- 结果: 可能丢失、可能重复、可能乱序。
传输方式
- TCP:面向字节流
- 把应用层的数据看作一连串无结构的字节流,它不知道数据包的边界(比如发送方发了两个“你好”,接收方可能一次收到“你好好你”)。
- 特点: 像水管里流动的水,没有严格的“数据块”划分。
- UDP:面向报文
- 保留应用层传递下来的报文边界,应用程序发送一个“Hello”,接收方读到的就是完整的“Hello”,不会把它和别的报文合并。
- 特点: 像寄包裹,每个包裹是独立的。
速度与开销
- TCP:速度较慢,开销大
- 因为要维护连接状态、发送确认、重传、排序、流量控制(慢启动、拥塞避免)等复杂机制。
- 头部开销: 头部最短20字节(无选项时)。
- UDP:速度较快,开销小
- 没有复杂的连接维护和可靠性控制,发就完了”。
- 头部开销: 头部固定只有8字节。
应用场景(对比记忆)
| 协议 | 典型应用 | 为什么选这个协议? |
|---|---|---|
| TCP | 文件传输(FTP)、网页浏览(HTTP/HTTPS)、邮件(SMTP/IMAP)、远程登录(SSH) | 要求数据完整、准确、有序。 网页少加载一个字图片都可能出错,文件缺个字节就损坏。 |
| UDP | 视频直播、网络游戏(如FPS射击游戏)、语音通话(VoIP)、DNS查询、DHCP | 要求低延迟,可以容忍少量丢包。 直播卡一下可以忍,但延迟高就很烦;游戏里牺牲一点精度(丢几个包)换实时响应更重要。 |
总结表
| 特性 | TCP | UDP |
|---|---|---|
| 连接性 | 面向连接(需三次握手) | 无连接 |
| 可靠性 | 可靠(确认、重传、排序) | 不可靠(尽最大努力) |
| 传输单位 | 字节流 | 报文 |
| 速度 | 较慢 | 较快 |
| 头部大小 | 20-60字节 | 8字节 |
| 流量控制 | 有(滑动窗口) | 无 |
| 拥塞控制 | 有(慢启动、拥塞避免) | 无 |
| 数据边界 | 无(流式) | 有(保留报文边界) |
快速判断口诀
TCP稳如老狗,保证不丢;UDP快如闪电,丢了不管。
当你在网络编程中需要“下载文件、浏览网页、发邮件”时,用 TCP;需要“看直播、打游戏、语音通话”时,用 UDP。
标签: UDP
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播