一、UDP概述
  1UDP是一种基本的通信协议,只在发送的报文中增加了端口寻址和可选的差错检测功能。
  2UDP不是一种握手信息协议,不能确认接收到的数据或交换其他流量控制信息。
  3UDP是一种非连接协议,计算机在使用UDP发送报文之前,不要求远程已联网或指定的目的端口可用于通信。正因为如此,将UDP称为不可靠协议,即如果只使用
UDP,则发送方不知道目的主机何时是否接收到报文。
  4、定义UDP的文档是RFC0768:User Datagram Protacal。在标准STD0006中也获得通过。
  5、使用UDP发送报文的计算机将报文置于UDP数据报中。UDP数据报由报头及其后面包含报文的报文组成。
  6、发送计算机将UDP数据报置于IP数据报的数据字段中。在以太网中,IP数据报存放在以太网帧的数据字段中。接收到以太网帧后,目的计算机网络栈将UDP数据报的数据部分传递给数据报报头指定的端口或进程。
  7通信协议UDP的大多数功能不如TCP,所以UDP的实现要简单些,更适合于特定的应用场合。如
果需要,则可在使用UDP进行通信时自定义握手协议。例如:接收接口在接收到报文之后,将返回包含确认代码或其他请求信息的响应。如果发送方在合理的时间内没有接收到响应信息,就会重新发送报文。但是,如果应用程序需要的不仅仅是最基本的握手或流量控制,则应该考虑使用TCP而不是UDP进行重构。
  8UDP有一个TCP没有的功能,就是可将报文发送到多个目的主机,包括向局域网内所有的IP地址以广播方式发送,或者向指定的IP地址以组播方式发送。对于TCP而言,广播和组播都不现实,因为源主机必须与所有目的主机握手。

二、UDP报头
  UDP报头由4个字段组成,后面紧接着是要传输的数据。
  1、源端口号:源端口号标识发送报文的计算机端口或进程。长度2字节,可选,如果接收进程不需要知道发送数据报的进程,则该字段可置为0
  2、目的端口号:目的端口号标识接收报文的目的主机端口或进程。2字节。
  3、数据报长度:指整个数据报的长度,以字节为单位,包括报头,最大值为65535。该字段为2字节。
  4UDP检验和:是根据UDP数据报 和伪报头计算得到的差错检测值,可选,该字段伪为2个字节。
  伪报头包含源和目的IP地址,以及来自IP数据报报头的协议值。IP数据报在网络中传送时包含UDP数据报。伪报头并不会在网络中传送,校验和中所包含的伪报头内容可以避免目的端错误地接收错误路由的数据报。校验和值的计算方法和IP报头检验和的计算方法类似。
  仅在局域网内部传输报文不需要UDP校验和,因为以太网帧的校验和已经提供了差错控制。而对于那些需要通过不同的、也许未知网络传输的报文而言,校验和可以让目的主机能检测到错误数据。

三、UDP数据
  1、一个UDP数据报最大可达到65535个字节,且报头为8字节,因此一个数据报最多可以携带65527个字节的数据。
  2、实际上,源计算机常将数据报限制在较短的长度内。使用较短的数据报的一个原因是,过大的数据报可能不适合目的主机的接收缓冲器大小;或者因为接收数据的应用程序
可能需要特定长度的报文。
  3、较短数据报也许更高效。当大的数据报经过不同能力的网络时,网络协议可能会将数据报拆分为报片,要求目的主机将这些报片重组。所有数据都会到达目的主机,但一般来说,在源主机处拆分数据,然后在目的主机处重组,会比依赖IP进行这项工作更高效。
  4IP标准要求主机能接收最大长度为576字节的数据报。没有可选项的IP报头长度为20字节,UDP报头为8字节,因此一个最大长度为548字节且没有IP选项的UDP数据报不经过拆分便可到达目的主机。