一、单播、组播、广播区别与联系
单播:在同一网络内,两个设备点对点的通信就是单播通信。
组播:在同一网络可达范围内,一个网络设备与关心其数据的部分设备进行通信就是组播。
广播:在同一网络可达范围内,一个网络设备向本网络内所有设备进行通信就是广播。
具体如下:
简单地说,单播->组播->广播,是通信数量不断增加的通信方式。当然,通信数量的增多,带来的是通信设备的资源消耗更大,整体网络环境的复杂度更高。
通常,我们使用组播、广播完成两件事:
1)将同一份数据交互到多个目的地。比如,视频会议、新闻分发,都需要将一份数据同时传输到多个设备上,供大家使用。
2)通过客户端请求或发现服务器。有时,我们并不知道服务器的具体信息(如IP地址),这时,我们可以采取“盲发”的方式去广播或组播信息,等待服务器收到消息盲发的消息后,返回数据,如此找到对应目标设备。
众所周知,TCP是可靠传输(先与另一个通信端点建立可靠连接,再传输数据),因此TCP一般只支持单播这种通信方式,而DUP通信不需要建立连接就可以发送数据,因此,通常我们说的广播、组播,都是在UDP下概念。
此外,广播又可以分为两类:本地广播、定向广播。
1)本地广播:广播地址为255.255.255.255.
2)定向广播:广播地址类似192.168.4.255.
二、组播实现介绍
组播的实现就略微复杂了,要实现组播,至少要经过以下步骤:
1)建立socket_fd
2)socket_fd和指定本地端口绑定
3)加入一个组播组
4)通过sendto / recvfrom进行数据的收发
5)离开组播组
6)关闭socket
注意:服务器和客户端必须都要加入相同的组播地址才可以。涉及到的socket属性主要是以下三个:
领取专属 10元无门槛券
私享最新 技术干货