目录

🍏 TCP 与 UDP 的区别

相关问题:

  • 请说一下 TCP 与 UDP 的区别?
  • 分别说一下对 TCP 与 UDP 的理解?

# TCP 与 UDP 的区别

  • TCP 是 面向连接的;UDP 是 无连接的,发送数据之前不需要先建立连接;
  • TCP 提供 可靠服务,通过 TCP 连接传输的数据无差错、不丢失、不重复且按序到达,适合带来大量数据的交换;UDP 尽最大努力交付,不保证可靠交付;
  • TCP 面向字节流;UDP 面向报文,网络出现拥塞不会使得发送速率降低(因此会出现丢包,在实时的应用比如电话、视频会议中);
  • TCP 只能是 一对一的;UDP 支持 一对一、一对多;
  • TCP 的首部较大,为 20 字节;UDP 只有 8 字节;

对比:

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

应用场景:

  • TCP:适用于对效率要求低、准确性高的要求有可靠连接的场景:
    • 电子邮件 / SMTP 协议
    • 远程终端接入 / TELNET 协议
    • 万维网 / WWW 协议
    • 文件传输 / FTP 协议
  • UDP:适用于对于效率要求高、准确性要求低的场景:
    • 域名转换 / DNS 协议
    • 文件传输 / TFTP 协议
    • 网络管理 / SNMP
    • 远程文件管理 / NFS

# TCP

TCP (Transmission Control Protocol) 传输控制协议,是一种可靠的、面向字节流的通信协议,将应用层交下来的数据看成是 无结构的字节流

看成是流水形式,发送方 TCP 会将数据放入蓄水池(缓冲区),等到可以发送的时候就发送,不能发送就等着,TCP 会根据当前网络的拥塞状态来确定每个报文段的大小;

TCP 的报文首部有 20 个字节,额外开销大。

TCP 特点:

  • 充分实现数据传输时的各种控制功能。可以进行丢包的重发控制;对次序乱掉的分包进行顺序控制(UDP 中无)

  • 是面向有连接的协议。只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。

根据 TCP 这些特点,在 IP 这种无连接的网络上也能实现高可靠性的通信。

# UDP

UDP (User Datagram Protocol) 用户数据包协议,简单面向数据报的通信协议,对应用层交下来的报文,不合并、不拆分,只才其上面加上首部后就交给下面的网络层。

无论应用层交给 UDP 多长的报文,都会统统发送,一次发送一个报文;接收方接收到后直接去除首部,交给上面的应用层就完成任务。

UDP 的报文头部包括 4 个字段,每个字段占用 2 个字节,标题短、开销小。

UDP 特点:

  • 不提供复杂的控制机制,面向 IP 提供 无连接的通信服务
    • 传输途中出现丢包,UDP 不负责重发
    • 包的到达顺序乱序,UDP 不会纠正;
  • 收到数据的那一刻,立刻按照原样发送到网络上,即使网络出现拥塞。UDP 没有流量控制等避免网络拥塞的行为。

# 参考

📢 上次更新: 2022/09/02, 10:18:16