广播地址(Broadcast Address)是专门用于同时向网络中所有工作站进行发送的一个地址。
IPv4广播地址:在使用TCP/IP 协议的网络中,主机标识段host ID 为全1 的IP 地址为广播地址,广播的分组传送给host ID段所涉及的所有计算机。
例如,对于10.1.1.0 (255.0.0.0 )网段,其直播广播地址为10.255.255.255 (255 即为2 进制的11111111 ),当发出一个目的地址为10.255.255.255 的分组(封包)时,它将被分发给该网段上的所有计算机。
计算方式:子网掩码取反后与子网地址进行或运算就可以得到广播地址。
说明一:(255取反转为十进制后为00000000,与任何八位二进制数A进行按位或运算结果都是其本身A)。
128 十进制 => 10000000 二进制
192 十进制 => 11000000 二进制 => 00111111 取反
上面两个数进行或运算: 10111111 二进制 => 191
子网掩码取反: 00000000.00000000.00000000.00111111
广播地址为: 203.123.1.191
说明二:
比如:ip地址为:172.17.2.118,子网掩码为:255.255.254.0
1、ip与子网掩码与运算,即为广播域
10101100 00010001 00000010 01110110 (172.17.2.118)
& 11111111 11111111 11111110 00000000 (255.255.254.0)
= 10101100 00010001 00000010 00000000 (172.17.2.0即为广播域)
2、子网掩码取反后与广播域或运算,即为广播地址
00000000 00000000 00000001 11111111 (子网掩码取反)
| 10101100 00010001 00000010 00000000 (广播域)
= 10101100 00010001 00000011 11111111 (172.17.3.255即为广播地址)
拓展:
3. UDP的广播地址为255.255.255.255
4. 在winsock实现中, 有一个选项对应是否允许广播.
必须调用setsockopt打开该选项.
5. 打开后, 用sendto向255.255.255.255发送的数据包全部广播.
很多局域网都定义了一个特殊的保留地址, 称为广播地址. 当信息头中目的地址域的内容为广播地址时, 该帧被局域网上所有计算机接收. 这个过程称为广播.
合法的广播地址就是主机的网络地址加上最大的主机号。网络地址通过机器的ip地址与子网掩码按位与得出,我们以ip地址为10.78.202.175 ,子网掩码为255.0.0.0。
为例来分析一下上面的几个概念
首先将这两个东西换算成二进制代码
ip地址:00001010.01001110.11001010.10101111
子网掩码:11111111.00000000.00000000.00000000
按位与之后得出网络地址:00001010.00000000.00000000.00000000
十进制表示就是10.0.0.0
这个网络地址理论上可以有一千多万台主机。
IPv4广播地址的分类及主要特点:
(1)受限广播
IP地址的网络字段和主机字段全为1就是地址255.255.255.255
(2)直接广播
网络广播会被路由,并会发送到专门网络上的每台主机
IP地址的网络字段定义这个网络,主机字段通常全为1,如 192.168.10.255