基于本文回答

播面 播面

文图音视,全方位拆解八股文
0
评论

TCP 和 UDP 的主要区别是什么?

知识点图片

TCP(传输控制协议)和 UDP(用户数据报协议)是互联网传输层中最核心的两个协议。

简单来说:TCP 注重数据的准确性和可靠性,而 UDP 注重数据的传输速度和实时性。

以下是它们的主要区别详解:

1. 核心区别对比表

特性 TCP (Transmission Control Protocol) UDP (User Datagram Protocol)
连接性 面向连接 (需要三次握手建立连接) 无连接 (直接发送数据)
可靠性 可靠 (保证数据不丢失、不重复、无错误) 不可靠 (尽最大努力交付,可能丢包)
有序性 有序 (保证数据按发送顺序到达) 无序 (接收顺序可能与发送顺序不同)
传输速度 较慢 (因需建立连接、确认机制、拥塞控制) (无额外开销,适合实时传输)
头部开销 (最小 20 字节) (固定 8 字节)
传输方式 面向字节流 (无明显边界) 面向报文 (保留报文边界)
拥塞控制 (网络拥堵时会减慢发送) (不管网络好坏,全速发送)

2. 详细解析

A. 连接 vs 无连接

  • TCP: 在传输数据前,必须先建立连接(著名的三次握手)。传输结束后,必须断开连接(四次挥手)。这就像打电话,必须对方接通了才能开始说话。
  • UDP: 不需要建立连接,想发就发。这就像寄信或者校园广播,发出去就行,不管对方在不在。

B. 可靠性 vs 效率

  • TCP: 拥有确认机制(ACK)、重传机制(超时重传)和流量控制。如果数据包丢了,TCP 会自动重新发送,直到对方确认收到。
  • UDP: 发送端发出去就不管了。如果网络不好导致丢包,UDP 协议层不会重发(除非应用层自己处理)。

C. 面向字节流 vs 面向报文

  • TCP (字节流): TCP 把数据看作一连串无结构的字节流。如果发送方发了 10 次 10 字节的数据,接收方可能一次性收到 100 字节,也可能分两次收到。没有固定的边界
  • UDP (报文): UDP 保护消息边界。发送方发一句,接收方就收一句。发 10 次,接收方就得收 10 次。

3. 应用场景

什么时候用 TCP?

数据的准确性高于一切,且不能容忍数据丢失时。

  • 网页浏览 (HTTP/HTTPS): 网页内容不能缺字少图。
  • 文件传输 (FTP): 下载的文件必须完整,错一个字节都无法使用。
  • 邮件发送 (SMTP/POP3): 邮件内容不能乱码或丢失。

什么时候用 UDP?

实时性(速度)高于准确性,或者允许少量丢包时。

  • 视频会议/直播 (Zoom, 直播): 画面偶尔卡顿或模糊一下没关系,但不能有太大的延迟。
  • 在线游戏 (王者荣耀, FPS游戏): 玩家的操作需要立即反馈,丢几个位置包可以通过预测补偿,但延迟高了就没法玩。
  • DNS 查询: 快速查询域名 IP,发一个包过去,回一个包过来,用 TCP 建立连接太浪费时间。

4. 通俗比喻

  • TCP 就像“挂号信”或“打电话”:

    • 你需要确认对方收到(签收)。
    • 顺序不能乱(信件内容按页码读)。
    • 如果丢了,邮局得负责找回或重寄。
  • UDP 就像“发传单”或“大喇叭广播”:

    • 你只管发,不管路人接没接。
    • 发得快,成本低。
    • 路人可能先接到第二张传单,再接到第一张(乱序),或者根本没接到(丢包),你也不在乎。
00:00
00:00