CodeRookie262 / JavaScript-Algorithm-Training

巩固前端基础知识,了解框架实现原理,数据结构与算法训练。
9 stars 0 forks source link

说说 TCP 和 UDP 的区别 #18

Open CodeRookie262 opened 3 years ago

CodeRookie262 commented 3 years ago

网络知识毫无疑问是每个前端er必须掌握的知识点之一,今天一起来了解TCP和UDP的区别和使用场景吧~

UDP

  1. UDP 是无连接的,发送数据前不需要建立连接,因此减少了开销和发送数据之前的时延。
  2. UDP 的传输方式支持一对一、一对多、多对一和多对多的交互通信。
  3. UDP 是面向报文的,应用层交给UDP多长的报文,UDP 就发送什么,并不会对报文做拆分和拼接,因此应用程序需要选择合适大小的报文。
  4. UDP 没有拥塞控制,因此网络拥塞的话并不会减低原服务器的发送速率。
  5. UDP 采用 尽最大努力交付,不敢保证可靠交付,因此主机不需要维持复杂的连接状态表。
  6. UDP 的首部开销小,只有 8 个字节。

TCP

  1. TCP 是面向连接的,建立连接前需要进行3次握手判断连接的可靠性,断开连接时需要进行4次挥手。
  2. TCP 的传输方式仅正常一对一。
  3. TCP 是面向字节流,不像UDP一样一个个报文独立的传输,而是在不保留报文的情况下以字节流的方式传输。
  4. TCP 提供拥塞控制,当网络出现拥塞是,能够减小向网络注入数据的速率和数量来缓解拥塞。
  5. TCP 具有可靠性,主要体现在确认响应超时重传校验和内部连接对象需要维护有序性数据去重流量控制(PS:传输可靠 并不等于 数据安全)。
  6. TCP 的首部最小得 20 字节,最大 60 字节。

TCP 和 UDP 的比较

比较 TCP UDP
是否连接 面向连接 无连接
连接对象个数 只支持一对一 支持一对一,一对多,多对一和多对多
是否可靠 可靠 不可靠
传输方式 面向字节 面向报文
首部开销 首部最小 20 字节,最大 60 字节 首部开销小,仅 8 字节

使用场景

如果对数据准确性要求高的话可以选用 TCP,例如支付场景;反正如果我们不注意部分数据的丢失的话可以使用 UDP 进行数据传输,例如直播。