1
Aragon OP 1 month, 1 week ago, 166 hits....
竟然无人回复...泪奔了 |
2
holmesabc 2011-05-26 10:21:43 +08:00
其实,没怎么看懂你的描述。
首先要知道子网掩码的作用(ip地址实际是32位的二进制,子网掩码也是): 简单理解就是 发送数据的时候 把接收方的IP与本机的子网掩码相与(与运算,写过程序的都知道吧),就得到接收方的一个可能的网络地址,用同样的方法得到本机真实的网络地址。 如果这两个地址是一样的,则本机就认为接收方和本机在同一个子网里面,然后发送的数据包就直接发给接收方,不会通过路由。否则就会走路由。 也就是说,在这种情况下,就算你不写网关,只填上正确的IP地址和子网掩码,并用一个交换机或者HUB把本机与接收机相连的话,就可以直接通信了。局域网通信也就这个意思。 |
3
holmesabc 2011-05-26 10:31:24 +08:00
还有 就是网络里面只通过MAC地址还识别接收方与发送方
IP与MAC地址可以通过ARP来对应。 在局域网中通信的时候,包里面接收方的MAC地址就是接收方的MAC地址,接收方的IP与同样是接收方的IP. 但是如果不是局域网通信,包里面接收方的MAC地址实际上是路由的(网关)的MAC地址,接收方的IP与同样是接收方的IP. 虽然这我这种说话在真正传输的时候不完全正确的,但可以这样理解,再底层的东西就不用想了。 |
4
Aragon OP @holmesabc 多谢牛人解答
“ 把接收方的IP与本机的子网掩码相与(与运算,写过程序的都知道吧),就得到接收方的一个可能的网络地址,用同样的方法得到本机真实的网络地址。 如果这两个地址是一样的,则本机就认为接收方和本机在同一个子网里面,然后发送的数据包就直接发给接收方,不会通过路由。否则就会走路由。” Dirt看来是由于路由的关系,Dirt不能走路由,但是文明5的问题还是没有想明白。 |
5
zhuang 2011-05-26 12:53:22 +08:00
@Aragon @holmesabc
先解答问题,与路由器和交换机无关。交换机功能上相当于信号放大转发,你可以认为逻辑上有没有都一样。 第二个,联网的结果和游戏有关。如果是盗版,什么情况都不奇怪。下面的讨论限于正版。 魔兽的工作模式是,主机广播,客户端收到广播就认为是同一个局域网了。在你的网络环境下,广播包会被交换机转发出去,所有和你同子网的都能收到。 dirt2 不清楚,猜测是扫描子网?毕竟它过了一次live 平台,后面具体的机制就不清楚了。我猜扫描子网是因为/24 找不到而/16 可以找到,如果是魔兽的被动模式不可能是这样的结果。 cv5 据说会访问internet 验证一下,如果是盗版就不能联机,但是如果连接不到验证服务器,就当作是正版了。很可能也是主动扫描模式,而且仅仅扫描255个主机。steam 平台的lan 也是问题很多。 ps,子网掩码与ip 地址做与运算的结果是网络前缀(即子网),而不是“可能的网络地址”或者“真实的网络地址”,判断是否是局域网的依据就是子网是否相同。后面mac 地址和ip 地址的解释都是正确的。 |
6
holmesabc 2011-05-26 23:23:26 +08:00
@zhuang
其实我之所以说是““可能的网络地址”,因为本机上运算得到的这个“网络地址”只是为了判断接收方是不是跟自己处于一个局域网内,而不是得到接收方的真正网络地址。 魔兽的广播,也只是在主机上线的时候用,当你进入主机后,就是直接局域网通信了,这个时候广播已经没有用了。 如果两台机子网关不同,也就是说这两台机子要通信就要通过至少一个路由,也就不属于一个广播域了,魔兽也是无法直接进行局域网的。 如果是通过internet连接过平台的话就不同了,在平台上面多数都是底层hook,修改过游戏发出的数据包,这个时候跟本机的ip、子网、网关就没多大关系了。 @Aragon 不知道LZ是不是说的一个寝室,如果是的话,你想看看这个游戏是不是纯局域网游戏,可以这样做: 把两台要连机的电脑,直接用网线连接在一起(现在的机子网卡都是自适应,不用专门搞交叉线),有交换机的换更好,直接连交换机就行,当然先要确定这个交换机没有配过VLAN。如果不能确定的话还是用网线直接连吧。 然后把一台机子的IP改为192.168.1.2 ,另一台改为192.168.1.3,子网掩码都是255.255.255.0,网关不填,DNS什么的其它的都不用填。 直接开游戏,连机。先看看魔兽这种游戏,这样是肯定可以连机玩的。再试试你要的那两个游戏看看可不可以。 大半年没搞网络了,好多都东西都说不准了,只能说个大概意思。。。 不过惭愧呀,Dirt2和文明都没玩过。。。。 只玩玩dota和星际 |
7
Aragon OP @holmesabc
“如果两台机子网关不同,也就是说这两台机子要通信就要通过至少一个路由,也就不属于一个广播域了,魔兽也是无法直接进行局域网的。” 这个情况在学校里被否定了,同学不少都不是一个网关下的,但是都可以联机。 “然后把一台机子的IP改为192.168.1.2 ,另一台改为192.168.1.3,子网掩码都是255.255.255.0,网关不填,DNS什么的其它的都不用填。 ” 这个试过,任何支持局域网的游戏都能(还没见到不能的) |
8
holmesabc 2011-05-29 23:08:41 +08:00
还是想不通啊
在不经过处理的情况下 “广播包” 是怎么通过路由的。 我只试过两种方法可以达到这个效果VPN(hamachi)或者BattleLAN这软件。 改192.168这种方式可以联机的话,那游戏根internet就没关了 如果你确认你的描述是正确的话, (看看拨号验证的软件什么的,网络的连接方式是什么 类似:电脑(N个)---交换机---路由) 那这个情况值得研究一下。 |
9
Aragon OP 拨号是802.1x认证的软件
墙上有一个端口-》路由器-》n台电脑,路由器Wan不用,全部接Lan 至于学校那里,不同网关同一个Mac(其实就同一台服务器) |