思考
ip地址中的单播,组播,广播(不是问为什么这么划分),而是问它们是如何规定的?
如何确定224.0.0.1为本地子网中所有的主机?广播为啥是子网位全255,为什么广播所有的机器都能收到?
举例
192.168.1.1/24 这是一个192.168.1.0/24网络中的一个主机ip地址,如果它对192.168.1.255 发包,会出现什么情况?通过抓包分析-----其实与普通单播类似,就是发送目的ip为192.168.1.255的icmp的报文。
协议举例-- DHCP
众所周知DHCP的discover报文为广播报文,如下图
主要看目的ip为255.255.255.255,一般称为__受限广播地址__(举例中的192.168.1.255为__直接广播地址__),受限广播地址一般只存在于同一个广播域下,简单的来说就是一个VLAN下面,那么DHCP服务器如何得知这个目的地址位255.255.255.255的discover报文是给自己的呢?当然根据网上的解释-通俗的来说就是:如果一个新机器使用dhcp(不知道自己该广播域下的‘网络的广播地址),所以发送一个目的地址位255.255.255.255的discover报文,在这个广播域下的dhcp服务器收到目的255.255.255.255的数据包就是代表是找自己的,然后进行一系列的流程。
但其实不然,根据TCP/IP模型来说,我们无法是靠Ip地址去确定一个协议的,协议承载为TCP/UDP之上,DHCP为UDP端口67和68。
个人理解
好了,那么根据上述问题,再结合组播(224.0.0.1 所有主机,224.0.0.2所有路由器),我个人理解如下:
- 单播,组播,广播是根据设备(使用tcp/ip模型的设备)的监听范围规定划分的
解释
- 单播:设备只监听目的ip为自己ip地址的数据包,若目的ip为本身的ip,则继续拆包,解析上层;
- 组播:设备根据自身属性或者设置(是交换机还是路由器或者是PC电脑)监听一部分ip(例如224.0.0.1,224.0.0.2),若目的ip为这部分ip,继续拆包,解析上层;
- 广播:同一广播域下所有设备(数据包能送到的所有设备),如果目的地址为255.255.255.255或者该子网的广播地址,则拆包解析上层;