Appearance
单播
- 主机之间一对一的通信模式,交换机以及路由器对数据只能进行转发,不做复制
- 每次只有两个实体互相通信,发送端和接收端都是
广播
- 主机之间的一对多的通信方式,所有在同一局域网内的主机都可以接收到广播信息;
- 禁止广播数据穿过路由器,防止广播数据影响大面积主机。广播只能做局域网内通信;
- 只有 UDP 能够广播,因为不需要应答
- 广播地址:有效网络号 + 全是 1 的主机号
- 例如:
192.168.31.xxx--->192.168.31.255 255.255.255.255:给所有网段中的所有主机发送广播信息,但是广播信息无法穿过路由器
1. 广播的发送流程(类似 UDP 的客户端)
- socket 创建报式套接字
- setsockopt 设置允许广播 ⭐
- bind 非必须绑定
- 填充接收放的地址信息结构体
- IP: 广播IP(例如 192.168.31.255 或者填 255.255.255.255,与接收方绑定的一致)
- PORT:接收方绑定的端口号
- sendto 发送广播信息
2. 广播的接收方流程(类似 UDP 服务器)
- socket 创建报式套接字
- 填充接收方自生的地址信息结构体
- IP:广播 IP (例如 192.168.31.255 或者 255.255.255.255 或者 0.0.0.0)
- PORT:接收方自身的端口号,要与发送方填充的一致
💡 0.0.0.0
本机所有可用 IP 地址,例如:本机IP 192.168.31.69,本地回环 127.0.0.1,广播 IP,组播 IP
组播
- 广播的方式是发送给同一网段下的所有主机,过多的广播会占用大量带宽,影响正常通信,且广播只能做局域网内通信
- 主机之间一对一组的通信模式,只有加入了同一个组的主机可以接收到此组内的所有数据
- 组播可以做广域网的通信
- 组播地址:D类 IP 地址 224.0.0.0~239.255.255.255
1. 组播的发送方流程(类似于 UDP 的客户端)
socket:创建报式套接字bind:非必须绑定- 填充接收放的地址信息结构体
- IP: 接收方绑定的组播 IP(224.0.0.0~239.255.255.255 与接收方绑定一致)
- PORT:接收方绑定的端口号
sendto:发送广播信息
2. 组播的接收方流程(类似于 UDP 的服务器)
- socket 创建报式套接字
- setsockopt 加入多播组⭐
- (level:IPPROTO_IP, optname: IP_ADD_MEMBERSHIP)
- bind 非必须绑定
- 填充接收放的地址信息结构体
- IP: 接收方绑定的组播 IP(224.0.0.0~239.255.255.255 或者 0.0.0.0)
- PORT:接收方自身的端口号,要与发送方填充的一致
- recvfrom 接收广播信息