Skip to content

如何理解 UDP 和 TCP

什么是 UDP

一句话描述:UDP 是一种无连接的协议。在发送数据之前,不需要建立连接。此外,UDP 不保证数据包的顺序或是否会到达,这意味着数据包可能会丢失或乱序。

特点

  1. 无连接:UDP 在发送数据之前,不需要建立连接
  2. 不可靠:UDP 不保证数据包的顺序或是否会到达,这意味着数据包可能会丢失或乱序
  3. 速度快:由于 UDP 不需要进行连接建立和确认,因此通常比 TCP 更快
  4. 实时性:UDP 的无连接和快速特性使其非常适合需要实时性的应用,如视频会议、流媒体和在线游戏
  5. 无拥塞控制:因此,网络出现拥塞不会使源主机的发送速率降低(对实时应用有利)
  6. 报头短:UDP 的报头只有 8 字节,比 TCP 的报头短,因此开销小(包含字段:源端口号、目标端口号、长度、校验和)
  7. 一次发送一个报文:无论应用层交给 UDP 多长的报文,它统统发送,一次发送一个报文
  8. 接收方处理简单:对接收方,接到后直接去除首部,交给上面的应用层就完成任务
  9. 支持广播和多播:支持一对一、一对多、多对一和多对多的交互通信

什么是 TCP

一句话描述:TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议(数据视为无结构的字节流),它提供了数据的有序传输、错误检查和拥塞控制等功能。

特点

  1. 面向连接:在数据传输之前,发送方和接收方必须建立一个连接。

  2. 可靠性:TCP 提供了一种可靠的服务,它确保数据包将按照其发送的顺序到达。如果数据包丢失或损坏,TCP 将重新发送数据包。

  3. 有序性:如果 TCP 报文段在传输过程中发生乱序,TCP 将重新排序,保证接收方接收的数据是有序的。

  4. 控制拥塞:当网络出现拥塞时,TCP 会降低数据的发送速率,尽量避免丢包。

  5. 流量控制:TCP 通过滑动窗口机制控制数据的发送速率,防止接收方处理不过来。

  6. 数据完整性:TCP 提供校验和机制来检查数据在传输过程中是否有错误。

TCP 与 UDP 区别

特性TCPUDP
可靠性可靠不可靠
连接性面向连接无连接
报文面向字节流面向报文
效率传输效率低传输效率高
双共性全双工一对一、一对多、多对一、多对多
流量控制滑动窗口
拥塞控制慢开始、拥塞避免、快重传、快恢复
传输效率

具体描述:

  • TCP 是面向连接的协议,建立连接 3 次握手、断开连接四次挥手,UDP 是面向无连接,数据传输前后不连接连接,发送端只负责将数据发送到网络,接收端从消息队列读取
  • TCP 提供可靠的服务,传输过程采用流量控制、编号与确认、计时器等手段确保数据无差错,不丢失。UDP 则尽可能传递数据,但不保证传递交付给对方
  • TCP 面向字节流,将应用层报文看成一串无结构的字节流,分解为多个 TCP 报文段传输后,在目的站重新装配。UDP 协议面向报文,不拆分应用层报文,只保留报文边界,一次发送一个报文,接收方去除报文首部后,原封不动将报文交给上层应用
  • TCP 只能点对点全双工通信。UDP 支持一对一、一对多、多对一和多对多的交互通信

使用场景

  • TCP 使用场景:

    • Web 应用:HTTP 和 HTTPS 协议都是基于 TCP 的,因为它们需要可靠的数据传输。

    • 邮件传输:SMTP、POP3 和 IMAP 协议都是基于 TCP 的,因为邮件需要完整且有序的传输。

    • 文件传输:FTP 和 SFTP 协议都是基于 TCP 的,因为文件传输需要数据的完整性和可靠性。

  • UDP 使用场景:

    • 实时应用:例如 VoIP(网络电话)和视频会议,它们需要快速的数据传输,而且可以容忍一些数据丢失。

    • 广播和多播应用:例如 IPTV 和在线游戏,它们需要快速的数据传输,并且可以同时发送给多个接收者。

    • 简单查询:例如 DNS 查询,它只需要发送一小部分数据,并且不需要建立连接。

如有转载或 CV 的请标注本站原文地址