UDP是一种无连接传输层协议,不需要服务器监听,不必等待客户端与服务器建立连接后才能通信,当然,UDP也不能保证最后能否把数据传输成功。

  TCP采用的是面向连接的分组报文传输方式,UDP采用的无连接的数据报传输方式。分组报文头部有明确的源地址和目的地址,而数据报头部没有这些信息。

  UDP对消息中传输的数据提供不可靠的、尽最大努力的传输。它不保证数据报的到达,不保证所传送数据包的顺序是否正确。

  UDP有以下几个方面的特性:

  1、无连接性

  2、不可靠性

  3、以报文为边界

  UDP直接对应用层提交的报文进行封装、传输,但是不拆分,也不合并,保留原有报文的边界。因此,UDP是报文流,TCP是字节流。

  4、无流量控制和拥塞控制功能

  因为这类传输的连续性比数据的完整性更重要,所以允许在传输过程中有部分数据丢失。

  5、支持各种交互通信方式

  UDP支持各种通信方式,可以使一对一、多对一、一对多和多对多的方式。

  UDP数据报格式:

  源、目标端口号字段:占16比特。作用与TCP数据段中的端口号字段相同,用来标识源端和目标端的应用进程。

长度字段:占16比特。标明UDP头部和UDP数据的总长度字节。

校验和字段:占16比特。用来对UDP头部和UDP数据进行校验。和TCP不同的是,对UDP来说,此字段是可选项,而TCP数据段中的校验和字段是必须有的。

/*UDP头定义,共8个字节*/
typedef struct _UDP_HEADER 
{
 unsigned short m_usSourPort;       // 源端口号16bit
 unsigned short m_usDestPort;       // 目的端口号16bit
 unsigned short m_usLength;        // 数据包长度16bit
 unsigned short m_usCheckSum;      // 校验和16bit
}__attribute__((packed))UDP_HEADER, *PUDP_HEADER;
posted on 2016-04-23 09:52  suvllian  阅读(535)  评论(0)    收藏  举报