TCP 与 UDP

区别总结:

  1. TCP 面向连接(如打电话要先拨号建立连接);UDP 是无连接的,即发送数据之前不需要建立连接

  2. TCP 提供可靠的服务。也就是说,通过 TCP 连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP 尽最大努力交付,即不保证可靠交付

  3. TCP 面向字节流,实际上是 TCP 把数据看成一连串无结构的字节流;UDP是面向报文的
    UDP 没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)

  4. 每一条 TCP 连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信

  5. TCP 首部开销 20 字节;UDP 的首部开销小,只有 8 个字节

  6. TCP 的逻辑通信信道是全双工的可靠信道,UDP 则是不可靠信道

为什么 UDP 有时比 TCP 更有优势?

UDP 以其简单、传输快的优势,在越来越多场景下取代了 TCP,如实时游戏

  • 网速的提升给 UDP 的稳定性提供可靠网络保障,丢包率很低,如果使用应用层重传,能够确保传输的可靠性
  • TCP 为了实现网络通信的可靠性,使用了复杂的拥塞控制算法,建立了繁琐的握手过程,由于 TCP 内置的系统协议栈中,极难对其进行改进

采用 TCP,一旦发生丢包,TCP 会将后续的包缓存起来,等前面的包重传并接收到后再继续发送,延时会越来越大,基于 UDP 对实时性要求较为严格的情况下,采用自定义重传机制,能够把丢包产生的延迟降到最低,尽量减少网络问题对游戏性造成影响

TCP 与 UDP 的适用场景

  • TCP:
    对数据传输的质量有较高要求,但对实时性要求不高。比如 HTTP,HTTPS,FTP 等传输文件的协议以及 POP,SMTP 等邮件传输的协议,应选用 TCP 协议

  • UDP:
    只对数据传输的实时性要求较高,但不对传输质量有要求。比如视频传输、实时通信等,应选用 UDP 协议

你可能感兴趣的:(TCP 与 UDP)