如何在Windows上更改全局广播地址(255.255.255.255)的行为?
期望的行为 当应用程序将数据包发送到全局广播IP地址255.255.255.255时,我希望在所有接口上将数据包发送到以太网全局广播地址(ff:ff:ff:ff:ff:ff). 在Linux和其他操作系统上,这似乎也有效. Windows XP和Windows 7在此方面表现出不同的行为,这种行为都不适合我的情况. Windows XP的行为 数据包将正确发送到第一个网络接口(接口顺序在“网络连接/高级/高级设置”中指定).它也将被发送到其他接口. 到目前为止,一切都是正确的.问题是,当发送到其他接口时,广播包的源地址是第一个接口的IP地址.例如,想象一下这个网络配置(顺序很重要): >适配器1:IP地址192.168.0.1 现在,如果我发送广播数据包,将发送以下数据包(包含源和目标IP地址): >在适配器1上:192.168.0.1 => 255.255.255.255 实际上,使用广播数据包的应用程序将无法在适配器1以外的任何接口上运行.在我看来,这是Windows XP的TCP / IP堆栈中的一个明显的错误. Windows 7的行为 修改网络接口顺序似乎对Windows 7没有任何影响.相反,广播似乎由IP路由表控制. IPv4 Route Table =========================================================================== Active Routes: Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 10.202.254.254 10.202.1.2 286 0.0.0.0 0.0.0.0 192.168.0.1 192.168.0.3 10 10.202.0.0 255.255.0.0 On-link 10.202.1.2 286 10.202.1.2 255.255.255.255 On-link 10.202.1.2 286 10.202.255.255 255.255.255.255 On-link 10.202.1.2 286 127.0.0.0 255.0.0.0 On-link 127.0.0.1 306 127.0.0.1 255.255.255.255 On-link 127.0.0.1 306 127.255.255.255 255.255.255.255 On-link 127.0.0.1 306 192.168.0.0 255.255.255.0 On-link 192.168.0.3 266 192.168.0.3 255.255.255.255 On-link 192.168.0.3 266 192.168.0.255 255.255.255.255 On-link 192.168.0.3 266 224.0.0.0 240.0.0.0 On-link 127.0.0.1 306 224.0.0.0 240.0.0.0 On-link 192.168.0.3 266 224.0.0.0 240.0.0.0 On-link 10.202.1.2 286 255.255.255.255 255.255.255.255 On-link 127.0.0.1 306 255.255.255.255 255.255.255.255 On-link 192.168.0.3 266 255.255.255.255 255.255.255.255 On-link 10.202.1.2 286 =========================================================================== 查看255.255.255.255路线?是的,他们控制广播包.在这种情况下,广播数据包将通过192.168.0.3发送,因为它具有较低的度量…但不是其他接口. 您可以更改非常容易发送全局广播数据包的接口(只需添加具有低度量标准的持久性255.255.255.255路由).但无论你怎么努力,广播数据包只会在一个接口上发送,而不是像我希望的那样全部发送. 结论 > Windows 7仅将广播数据包发送到一个接口.你可以选择哪一个,但这不是重点. 目标 我想一劳永逸地在Windows(最好是Windows 7)中更改此全局IP广播支持.当然更好的方法是获得某种支持的配置更改(注册表黑客或类似),但我对所有建议持开放态度. 有任何想法吗? 并不是说我是在为微软辩护,但在阅读了下面那些试图定义广播如何工作的RFC之后,我认为微软不一定会违反任何RFC. IMO问题应该在应用级别(即定向广播,而不是全局)上修复,这将触及路由表中的适当路由,并且仅从该IP网络的正确接口发送.> RFC922 他们都声明没有为广播定义标准.它还在919中提到应该为广播选择特定的物理接口.对于生成广播的多宿主,多NIC机器,我认为没有明确说明应该发生什么.路由器从一个接口到另一个接口永远不会传递广播,在这种情况下,Windows机器是路由器还是路由器? 最后,RFC 919具体说明了
阅读表明源IP地址与广播无关. 由于每个应用程序似乎都以不同的方式处理广播,我认为这是责任所在.例如. nbtstat在多NIC机器上发送定向广播,而游戏可能使用全局广播. 编辑:这是一个link相同的情况,但在Linux上. linux内核只通过默认接口(本例中为NIC A)发送一个数据包来处理它.他们建议应用程序枚举NIC并从每个NIC发送定向广播. Link (编辑:ASP站长网) |