UDP 是 User Datagram Protocol 的简称, 中文名是用户数据包协议,是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。它是IETF RFC 768 是 UDP 的正式规范。 UDP 报头 UDP 报头由4 个域组成,其中每个域各占用2 个字节,具体如下: 源 端口号 目标端口号 数据报长度 校验值 UDP 协议使用端口号为不同的应用保留其各自的数据传输通道。UDP 和 TCP 协议正 是采用这一机制实现对同一时刻内多项应用同时发送和接收数据的支持。数据发送一方(可以是客户端或服务器端)将UDP 数据报通过源端口发送出去,而数据接 收一方则通过目标端口接收数据。有的网络应用只能使用预先为其预留或注册的静态端口;而另外一些网络应用则可以使用未被注册的动态端口。因为UDP 报头使 用两个字节存放端口号,所以端口号的有效范围是从0 到 65535。一般来说,大于49151 的端口号都代表动态端口。 数据报的长度是指包括报头和数据部分在内的总字节数。因为报头的长度是固定的,所以该域主要被用来计算可变长度的数据部分(又称为数据负载)。 数据报的最大长度根据操作环境的不同而各异。从理论上说,包含报头在内的数据报的最大长度为65535字节。不过,一些实际应用往往会限制数据报的大小, 有时会降低到8192 字节。 UDP 协议使用报头中的校验值来保证数据的安全。校验值首先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还需要再重新计算。如果 某个数据报在传输过程中被第三方篡改或者由于线路噪音等原因受到损坏,发送和接收方的校验计算值将不会相符,由此UDP 协议可以检测是否出错。这与TCP 协议是不同的,后者要求必须具有校验值。 许多链路层协议都提供错误检查,包括流行的以太网协议,也许想知道为什么UDP也要提供检查和。其原因是链路层以下的协议在源端和终端之间的某 些通道可能不提供错误检测。虽然UDP 提供有错误检测,但检测到错误时,UDP 不做错误校正,只是简单地把损坏的消息段扔掉,或者给应用程序提供警告信 息。 UDP 协议的几个特性 ( 1) UDP 是一个无连接协议, 传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是 受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP 把每个消息段放在队列中,应用程序每次从队...