TCP、UDP连接

383 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

TCP、UDP都是作用于传输层的数据传输协议。既然作用相同,那么两种协议之间就必然会存在相同之处与不同之处。

TCP、UDP区别

  1. TCP 是面向连接的,UDP 是面向无连接的
  2. UDP程序结构较简单
  3. TCP 是面向字节流的,UDP 是基于数据报的
  4. TCP 保证数据正确性,UDP 可能丢包
  5. TCP 保证数据顺序,UDP 不保证

什么是面向连接,什么是面向无连接

  1. 在互通之前,面向连接的协议会先建立连接,如 TCP 有三次握手,而 UDP 不会
  2. UDP想发数据就可以开始发送了。并且也只是数据报文的搬运工,不会对数据报文进行任何拆分和拼接操作。

TCP 为什么是可靠连接

  1. 通过 TCP 连接传输的数据无差错,不丢失,不重复,且按顺序到达。
  2. TCP 报文头里面的序号能使 TCP 的数据按序到达
  3. 报文头里面的确认序号能保证不丢包,累计确认及超时重传机制
  4. TCP 拥有流量控制及拥塞控制的机制

UDP的不可靠性

  1. 首先不可靠性体现在无连接上,通信都不需要建立连接,想发就发,这样的情况肯定不可靠。
  2. 并且收到什么数据就传递什么数据,并且也不会备份数据,发送数据也不会关心对方是否已经正确接收到数据了。
  3. 再者网络环境时好时坏,但是 UDP 因为没有拥塞控制,一直会以恒定的速度发送数据。即使网络条件不好,也不会对发送速率进行调整。这样实现的弊端就是在网络条件不好的情况下可能会导致丢包,但是优点也很明显,在某些实时性要求高的场景(比如电话会议)就需要使用 UDP 而不是 TCP。

UDP的优点

  1. 虽然 UDP 协议不是那么的可靠,但是正是因为它不是那么的可靠,所以也就没有 TCP 那么复杂了,需要保证数据不丢失且有序到达。
  2. 因此 UDP 的头部开销小,只有八字节,相比 TCP 的至少二十字节要少得多,在传输数据报文时是很高效的。
  3. UDP 不止支持一对一的传输方式,同样支持一对多,多对多,多对一的方式,也就是说 UDP 提供了单播,多播,广播的功能。

UDP的使用场景

  1. 需要资源少,网络情况稳定的内网,或者对于丢包不敏感的应用,比如 DHCP 就是基于 UDP 协议的。
  2. 不需要一对一沟通,建立连接,而是可以广播的应用。因为它不面向连接,所以可以做到一对多,承担广播或者多播的协议。
  3. 需要处理速度快,可以容忍丢包,但是即使网络拥塞,也毫不退缩,一往无前的时候。
  4. 直播。直播对实时性的要求比较高,宁可丢包,也不要卡顿的,所以很多直播应用都基于 UDP 实现了自己的视频传输协议
  5. 实时游戏。游戏的特点也是实时性比较高,在这种情况下,采用自定义的可靠的 UDP 协议,自定义重传策略,能够把产生的延迟降到最低,减少网络问题对游戏造成的影响