请教一个关于网络编程的问题
是这样的,假设一台机器有两个网卡A和B,有一个软件每次启动的时候会往外广播一个UDP包。如果禁用了B而只有A的工作的时候,软件可以正常工作。
如果A和B同时工作,则这个广播包会通过B发出去,软件就不正常了。
有什么方法可以在不修改软件本身的情况下,强制软件从A发广播包? 软件启动,就自动向255.255.255.255这个地址的9303端口发送UDP包,还有向224.0.0.22这个地址发送IGMP包。
经过抓包,发现两个包都只用了B发送,而A没有发送。
如果禁用了B,则A会发送网络包,这样软件就正常了 帮顶........ 本帖最后由 diddom 于 2012-5-22 04:11 编辑
观看~
学习学习~
我比较好奇的是两张网卡的网路线都接到同一个switch
接到同一个switch後, submask也都一样吗?
因为一般我们在插多网卡时,一般在网路规划架构
submask会设定成255.255.0.0 和 255.255.255.0 成不同网域
不好意思,我这样问不知道对不对
也好奇同网域为何要两张网卡都启用,为何不禁用B网卡
你错了,这并不是同局域网的。
这样说吧,机器本身有个网卡,对不对?充当A好了。
然后装个VMWARE,它会添加几个虚拟网卡的,对不对?随便一个充当B好了。
然后就出现上面的情况了。 其实这个问题我已经解决了,找到一个不需要禁用网卡的方法。
例如网卡是192.168.1.1/255.255.255.0,
那么如果向本网段广播的时候,是向192.168.1.255/255.255.255.0这个地址发送广播包的。
有的时候,某个软件并不知道你具体的网段,就无法向192.168.1.255/255.255.255.0这个地址发送广播包了,因为你不一定是192.168.1.0这个网段的。
那怎么办呢?软件会向255.255.255.255/255.255.255.255这个地址发送广播包,这样完全不用理会你到底是哪个网段的,只有有人回应你的广播包,就可以知道你现在是处在哪个网段了。
可问题是,只要有一个网卡,并且这个网卡是有连接的,那么就会创建一个255.255.255.255/255.255.255.255的路由,当存在多个同样的路由时,默认是只有最后一个有效的。
所以,我那个情况,当同时存在A和B时,A才是软件需要用到的网络,而B不是。但B把A的那个255.255.255.255/255.255.255.255路由覆盖掉了,所以软件发的广播包是从B出去的,自然就不对了。
解决方法嘛,很简单,把B绑定的那个255.255.255.255/255.255.255.255路由删除掉,保证A的255.255.255.255/255.255.255.255路由为最后一个,自然就能解决问题了。
至于删除的方法嘛,你懂的,不用我说了。
估计以后还会有类似的问题出现的,所以发上来,记录一下,也好让大家参考吧。
另外就是,一般发广播包的,应该大部分都是用UDP协议,所以如果抓包的话,只需要抓UDP协议就可以了,这样就能很容易分析到原因。 本帖最后由 diddom 于 2012-5-26 03:54 编辑
很感谢你提供的资讯
请问你的设定都是在vmware里面设定吗, 还是Windows
因为我都用 VirtualBox 在跑 game or Virus, 我应该不会碰到这问题{:soso_e113:}
还有,我在猜你讲的广播包应该就是SMB
不好意思, 这样打扰你 diddom 发表于 2012-5-26 00:28 static/image/common/back.gif
很感谢你提供的资讯
请问你的设定都是在vmware里面设定吗, 还是Windows
vmware我没改网络设置,那个是默认的。
反正软件设置成这样,也是够SB的了
有的时候为了让小白可以方便使用,反倒给老黑知道了麻烦。
而如果小白的电脑接近老黑的环境,估计那个小白就无法正常使用了。
用户体验超级差啊,这是。
页:
[1]