UDP(User Datagram Protocol,用户数据报协议)是轻量的、不可靠的、面向数据报(datagram)、无连接的协议,它可以用于对可靠性要求不高的场合。与TCP通信不同,两个程序之间进行UDP通信不需要预先建立持久的socket连接,UDP每次发送数据报都需要指定目的地址和端口。
UDP消息传送有单播、广播、组播三种模式。
(1)单播( ( unicast)模式:一个UDP客户端发出的数据报只发送到另一个指定地址和端口的UDP客户端,是一对一的数据传输。
(2)广播 (broadcast)模式:一个UDP客户端发出的数据报,在同一网络范围内其他所有的UDP客户端都可以收到。广播经常用于实现网络发现的协议。一般的广播址是255.255.255.255。
(3)组播( multicast)模式:也称为多播。UDP客户端加入到另一个组播IP地址指定的多播组,成员向组播地址发送的数据报组内成员都可接收到,类似于QQ群的功能。加入多播组后,UDP的收发与正常的UDP数据收发方法一样。
注1:使用广播和多播模式,UDP可以实现一些比较灵活的通信功能,而TCP通信只有单播模式,没有广播和多播模式。所以,UDP通信虽然不能保证数据传输的正确性,但是具有灵活性,一般的即时通信软件都是基于UDP通信的。
注2:UDP组播的特性
UDP组播是主机之间“一对一组”的通信模式,当多个客户端加入由一个组播地址定义的多播组之后,客户端向组播地址和端口发送的UDP数据报,组内成员都可以接收到,其功能类似于QQ群。
组播报文的目的地址使用D类IP地址,D类地址不能出现在IP报文的源IP地址字段。用同一个IP多播地址接收多播数据报的所有主机构成了一个组,称为多播组(或组播组)。所有的信息接收者都加入到一个组内,并且一旦加入之后,流向组地址的数据报立即开始向接收者传输,组中的所有成员都能接收到数据报。组中的员是动态的,主机可以在任何时间加入和离开组。
所以,采用UDP组播必须使用一个组播地址。组播地址是D类IP地址,有特定的地址段。多播组可以是永久的也可以是临时的。多播组地址,有一部分由官方分配,称为永久多播组永久多播组保持不变的是它的IP地址,组中的成员构成可以发生变化。永久多播组中成员的数量可以是任意的,甚至可以为零。那些没有保留下来的供永久多播组使用的IP组播地址,可以被临时多播组利用。关于组播IP地址,有如下的一些约定:
(1)224.0.0.0~224.0.0.255,为预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其他地址供路由协议使用;
(2)224.0.1.0~224.0.1.255公用组播地址,可以用于 Internet;
(3)224.0.2.0~238.255.255.255为用户可用的组播址(临时组地址),全网范围内有效:
(4)239.0.0.0~239.255.255.255为本地管理组播地址,仅在特定的本地范围内有效。
UDP组播特点是使用组播地址,其他的端口绑定、数据报收发等功能的实现与单播UDP完全相同。