255.255.255.255和192.168.1.255


18

我们正在尝试调试一些执行广播的应用程序。

广播地址255.255.255.255和ifconfig报告的广播地址之间的区别是什么,Bcast:192.168.1.255


这个问答解释。
罗恩·莫平

Answers:


37

广播地址总是相对于给定的网络,本身就没有广播。当您有网络时,可以通过将所有主机位替换为1来计算其广播地址;简而言之,广播地址是网络上可以编号的最高地址,而网络地址是最低的地址(所有主机位均设置为0);这就是为什么您不能将它们中的任何一个用作实际主机地址的原因:它们是为此用途保留的。

如果您的网络为192.168.1.0/24,则您的网络地址将为192.168.1.0,广播地址将为192.168.1.255。

如果您的网络为192.168.0.0/16,则您的网络地址将为192.168.0.0,广播地址将为192.168.255.255。

等等...

255.255.255.255是一个特殊的广播地址,表示“此网络”:它使您可以将广播数据包发送到所连接的网络,而无需关心其地址;在此类似于127.0.0.1,这是一个虚拟地址,表示“本地主机”。

此处的更多信息:http : //en.wikipedia.org/wiki/Broadcast_address


127.0.0.1是否被视为“虚拟地址”?我的理解是,这是一个真实的地址,RFC表示应该指向虚拟回送接口。但是,我见过一些实例,其中设备实际上在DNS服务器上查询127.0.0.1。
Belmin Fernandez 2011年

1
也许我对“虚拟”一词的使用有点过分简化,但这确实是一个保留地址,它不能属于任何物理接口,并且永远都不能在主机外部看到。如果有人问您的DNS服务器127.0.0.1是谁,它应该以最快的速度运行到最近的IP教室:-p
Massimo

“它使您可以将广播数据包发送到所连接的网络” ...如果您连接到多个网络该怎么办?是否将广播数据包发送给所有人?
内森·奥斯曼

11

要补充马西莫在回答中所说的话:

255.255.255.255将被视为物理层广播地址,而192.168.1.255将被视为网络层广播地址。ARP将生成物理层广播,而NetBIOS将生成网络层广播。


11

原则上,255.255.255.255是“全局”广播地址,这意味着IP堆栈应该将数据包发送到所有网络接口,而配置为转发广播的路由器应该继续发送。

实际上,几乎没有路由器转发广播,许多堆栈只是将数据包的一个副本发送到默认路由所指向的接口。

子网广播地址用于选择特定的接口。在这两种情况下,这些都应映射到网络层广播地址(对于以太网,将为FF:FF:FF:FF:FF:FF)。

通常,使用255.255.255.255是个坏主意,因为在许多设置中,具有默认路由的接口是错误的选择。显式选择接口比较好,但是需要仔细进行。

我的其他建议是使用多播,如果这对您的应用程序有意义。与广播流量相同的警告仍然适用,但这允许不感兴趣的主机快速识别您的数据包,并且允许网络管理员为您的协议设置特定的转发规则。


1
当我搜索255.255.255.255时,出现的第一个结果之一是RFC 919。在该RFC中,我发现了这句话:“地址255.255.255.255表示本地硬件网络上的广播,不能转发。 ”(强调我的)所以当您建议将路由器配置为转发数据包时,那不是极有可能。
kasperd
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.