在我编写的一个程序中,我需要查找网络上的一些主机。我不知道那里有多少台主机,而且网络可能比 C 类网络大。
有人建议我研究一下 MAC 层广播,但我通过 Google 搜索时没有找到太多信息。有人能解释一下它的工作原理吗,或者我可以在哪里找到有关它的更多信息?
答案1
在网络中,OSI 模型有以下几个层:
- 身体的
- 数据链路(MAC层)
- 网络(IP 层)
- 传输(TCP 层)
- ETC。
数据链路层和网络层均由路由器分成多个段。这意味着您可以通过第 2 层或第 3 层向 VLAN 上的所有主机(通常位于同一子网中)广播。例如,如果您有 4 台计算机接入同一 VLAN 上的单个交换机,并且 IP 范围为 192.168.1.0/24,则可以使用以下任一方法发送将广播给所有 4 台计算机的数据包:
- 第 2 层:将帧发送到 mac 地址 ff:ff:ff:ff:ff:ff
- 第 3 层:向 IP 地址 192.168.1.255 发送 IP 数据包
如果您打算使用 TCP 或 UDP,我会选择第 3 层广播。如果您打算连接到没有 IP 地址的机器,请使用第 2 层。
需要明确的是,您无法使用广播数据包来查找不同子网上的主机。为此,您需要一个中央服务器或类似多播的东西,并且必须在所有路由器上都支持并启用它。