🍏 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 没有流量控制等避免网络拥塞的行为。
# 参考
编辑 (opens new window)
📢 上次更新: 2022/09/02, 10:18:16