用户数据报文协议(UDP)

UDP是一种基于IP协议的不可靠网络传输协议,在IP数据的位置如下图所示。

用户数据报文协议(UDP)_第1张图片 UDP数据在IP数据的位置

1.UDP协议的特点

  1. UDP是无连接的,即传输数据时不需要建立或释放连接,减少了开销和发送数据之前的时延。
  2. UDP使用尽最大努力交付,即不保证可靠交付。
  3. UDP是面向报文的。对应用程序交下来的报文在添加首部后就向下交付IP层。对应用层交下来的报文即不合并也不拆分,而是保留这些报文的边界。即UDP一次交付一个完整的报。
  4. UDP没有拥塞控制。
  5. UDP支持一对一、一对多、多对一和多对多的交互通信。
  6. UDP的首部开销小,只有8字节。

 

  • UDP协议是TCP/IP的传输层协议的部分,与TCP 的传输不一样,它提供无连接的、不可靠的传输服务。UDP协议把应用程序需要传递的数据发送出去,不提供发送数据包的顺序;接收方不向发送方发送接收的确认信息,如果出现丢包或者重包的现象,也不会向发送方发送反馈,因此不能保证使用UDP协议的程序发送的数据一定到达了接收方或者到达接收方的数据顺序和发送方的致性。
  • 使用UDP协议传输数据的应用程序,必须自已构建发送数据的顺序机制和发送接收的确认机制,以此来保证发送数据的正确到达,保证接收数据的顺序与发送数据的一致性,也就是说,应用程序必须根据UDP的缺点提供解决方案。
  • UDP协议相比较TCP协议执行时的速度要比TCP快得多,对系统造成的负载低。在高负载的系统( 例如服务器)或者系统资源受限的系统(例如嵌入式系统)上应用比较多,在不需要可靠传输的应用程序上有比较广泛的应用,例如流媒体的传输、域名服务器、嵌入式机顶盒系统等。

2.UDP数据报首部格式

UDP数据报首部格式
  1. 源端口:占2字节,源端口号。需要对方回信时选用,不需要时可用全0。
  2. 目的端口:占2字节,目的端口号。
  3. 长度:占2字节,UDP用户数据报的长度,最小值为8(仅有首部)
  4. 检验和:占2字节,检验UDP用户数据报在传输中是否有错,有错就丢弃
  5. 计算检验和时要在UDP用户数据报之前增加12个字节的伪首部
  6. 伪首部不是UDP用户数据报真正的首部,只是在计算检验和时临时添加,变成临时UDP用户数据报。
  7. UDP计算检验和方法和IP数据报首部检验和方法相似,但IP数据报的检验和只检验IP数据报的首部,UDP的检验和把首部和数据部分一起检验。

3.UDP数据的传输过程

  • 如图所示为使用UDP协议的应用程序的数据传输过程,用户数据由主机A发送给主机B,数据封装在UDP的数据部分。
用户数据报文协议(UDP)_第2张图片 UDP协议层的用户数据传输过程
  • 发送的过程是个封包的过程。 主机A上,在传输层,用户发送的数据增加UDP头部,用户数据封装在UDP的数据部分。在IP层增加IP的头部数据,UDP的数据和头部都封装在IP层的数据部分。IP层将数据传输给网络设备的驱动程序,以太网增加头部和尾部后,发送到以太网上。
  • 接收数据的过程是一个解封包的过程。主机B上,驱动程序从以太网上接收到数据,然后将数据去除头部和尾部并进行CRC校验后,将正确的数据传递给IP层。IP层剥去IP头,进行校验,将数据发送给其上层UDP层。UDP则将UDP的包头剥去,根据应用程序的标识符判断是否发送给此应用程序。在主机B上的应用程序会得到干净的有效数据,然后进行处理。

你可能感兴趣的:(Linux网络编程,UDP协议)