UDP 协议

UDP 协议

UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务。并且它是将应用程序发来的数据在收到的那一刻,立刻按照原样发送到网络上的一种机制。

即使是出现网络拥堵的情况下,UDP也无法进行流量控制等避免网络拥塞的行为。此外,传输途中如果出现了丢包,UDO也不负责重发。甚至当出现包的到达顺序乱掉时也没有纠正的功能

IPV4 头部 | UDP 头部 | UDP 数据 20字节 | 8字节

UDP 头部:

  • 源端口号 2字节
  • 目的端口 2字节
  • 长度 2字节
  • 校验和 2字节

TCP与UDP区别总结:

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

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

  3. TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的

UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)

  1. 每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
  2. TCP首部开销20字节;UDP的首部开销小,只有8个字节
  3. TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

UDP是有边界的,应用层要整包地收,一次只能收一包,每次接收的要么是一个独立的完整的数据包,要么什么也接收不到

UDP 可靠传输

需要在应用层保障可靠

  1. 添加序号
  2. 超时重传
  3. 应答确认
  4. 滑动窗口流量控制

应用

DNS在进行区域传输的时候使用TCP协议,其它时候则使用UDP协议

绑定端口

TCP 和 UDP 可以绑定同一个端口,因为在内核协议栈中 TCP 和 UDP 是独立的两个模块,因此它们的端口号也是独立的