世界超算排行榜:太湖之光!

IT教程学习网

网站建设

UDP协议与UDP数据包格式

文章来源:深腾网   作者:静岳   浏览量:

UDP是什么


    UDP是一个简单的面向数据报的传输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的 IP数据报。UDP不提供可靠性:它把应用程序传给IP层的数据发送出去,但是并不保证它们能到达目的地。应用程序必须关心 IP数据报的长度。如果它超过网络的 MTU,那么就要对IP数据报进行分片。如果需要,源端到目的端之间的每个网络都要进行分片,并不只是发送端主机连接第一个网络才这样做。  

UDP协议首部 


udp协议头部
  1. 源端口:可选字段。当它有有效数值时表示的是发送进程使用的端口号,如果没有其他信息,此端口被用来作为返回消息的目的端口。如果不用,置0。
  1. 目的端口:目的主机接受此数据包的端口。
  2. 长度:为UDP首部加上数据部分的长度,单位为字节。(这意味着最小长度为8字节)
  1. 校验和:和通常的校验和计算方法相同,但它计算的范围有为来自IP首部信息的UDP伪首部+UDP首部+UDP数据,如果数据部分长度不是偶数,需要在末尾填0,但注意,这些0 不会被作为数据的一部分发出去。

UDP协议伪首部

  首先它是不存在数据报中的,它只是为了计算校验和而创建的一个结构,或者说一个概念。它包括:源地址,目的地址,协议类型,UDP长度,共12个字节。如下图

UDP伪头部

UDP协议检验和 

  UDP检验和是一个端到端的检验和。它由发送端计算,然后由接收端验证。其目的是为了发现UDP首部和数据在发送端到接收端之间发生的任何改动。
  尽管UDP检验和是可选的,但是它们应该总是在用。在 8 0年代,一些计算机产商在默认条件下关闭UDP检验和的功能,以提高使用 UDP协议的NFS( Network File System)的速度。在单个局域网中这可能是可以接受的,但是在数据报通过路由器时,通过对链路层数据帧进行循环冗余检验(如以太网或令牌环数据帧)可以检测到大多数的差错,导致传输失败。不管相信与否,路由器中也存在软件和硬件差错,以致于修改数据报中的数据。如果关闭端到端的UDP检验和功能,那么这些差错在 UDP数据报中就不能被检测出来。另外,一些数据链路层协议(如SLIP)没有任何形式的数据链路检验和。
  RFC声明, UDP检验和选项在默认条件下是打开的。它还声明,如果发送端已经计算了检验和,那么接收端必须检验接收到的检验和(如接收到检验和不为0)。但是,许多系统没有遵守这一点,只是在出口检验和选项被打开时才验证接收到的检验和。 
 

UDP协议的主要特点

  • UDP是一种无连接的、不可靠的传输层协议;
  • 在完成进程到进程的通信中提供了有限的差错检验功能;
  • 设计比较简单的UDP协议的目的是希望以最小的开销来达到网络环境中的进程通信目的;
  • 进程发送的报文较短,同时对报文的可靠性要求不高,那么可以使用UDP协议。
 

分享到:

  • Copyright © 2014-2026 深腾网 版权所有:静岳互联网咨询工作室
  • 冀ICP备16020878-1