求教一个和计算机网络有关的问题

2011-04-17 16:12:47 +08:00
 Aragon
网络环境:学校教育网,每个学生绑定IP地址,IP为公网IP.上网通过802.1X拨号.
系统网络设置基本如下:(字母代表数字)IP:A.B.C.D,子掩网码:255.255.255.0,网关:A.B.C.E

寝室墙上只有一个接口,寝室都用交换机或者路由器的交换功能。

学生数量肯定大于253,因此任意两个学生,他们网关不一样,也就不属于一个C网.

但是他们学校里建立Dota都能联机玩,无需修改网络设置。

但是我和同学建立某些游戏就完全情况不一样。

比如Dirt2,不修改网络设置,无法看见对方建立的游戏,必须修改子掩网码,改成255.255.0.0才行。

但是文明5,修改子掩码网也没有用。必须另外链接路由器,IP改成192....网关设置成路由器才行。(就是另行搭建一个局域网)

本人计算机网络不懂,请教各位牛人抽空解答一下
1,是不是交换机组建的网络造成的?
2,为什么不同的游戏结果不同?

注:所有人计算机防火墙设置没有问题
5450 次点击
所在节点    问与答
9 条回复
Aragon
2011-05-26 09:25:04 +08:00
1 month, 1 week ago, 166 hits....
竟然无人回复...泪奔了
holmesabc
2011-05-26 10:21:43 +08:00
其实,没怎么看懂你的描述。

首先要知道子网掩码的作用(ip地址实际是32位的二进制,子网掩码也是):

简单理解就是 发送数据的时候 把接收方的IP与本机的子网掩码相与(与运算,写过程序的都知道吧),就得到接收方的一个可能的网络地址,用同样的方法得到本机真实的网络地址。

如果这两个地址是一样的,则本机就认为接收方和本机在同一个子网里面,然后发送的数据包就直接发给接收方,不会通过路由。否则就会走路由。

也就是说,在这种情况下,就算你不写网关,只填上正确的IP地址和子网掩码,并用一个交换机或者HUB把本机与接收机相连的话,就可以直接通信了。局域网通信也就这个意思。
holmesabc
2011-05-26 10:31:24 +08:00
还有 就是网络里面只通过MAC地址还识别接收方与发送方
IP与MAC地址可以通过ARP来对应。

在局域网中通信的时候,包里面接收方的MAC地址就是接收方的MAC地址,接收方的IP与同样是接收方的IP.

但是如果不是局域网通信,包里面接收方的MAC地址实际上是路由的(网关)的MAC地址,接收方的IP与同样是接收方的IP.

虽然这我这种说话在真正传输的时候不完全正确的,但可以这样理解,再底层的东西就不用想了。
Aragon
2011-05-26 11:07:40 +08:00
@holmesabc 多谢牛人解答
“ 把接收方的IP与本机的子网掩码相与(与运算,写过程序的都知道吧),就得到接收方的一个可能的网络地址,用同样的方法得到本机真实的网络地址。

如果这两个地址是一样的,则本机就认为接收方和本机在同一个子网里面,然后发送的数据包就直接发给接收方,不会通过路由。否则就会走路由。”



Dirt看来是由于路由的关系,Dirt不能走路由,但是文明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 地址的解释都是正确的。
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和星际
Aragon
2011-05-29 09:25:55 +08:00
@holmesabc
“如果两台机子网关不同,也就是说这两台机子要通信就要通过至少一个路由,也就不属于一个广播域了,魔兽也是无法直接进行局域网的。”

这个情况在学校里被否定了,同学不少都不是一个网关下的,但是都可以联机。

“然后把一台机子的IP改为192.168.1.2 ,另一台改为192.168.1.3,子网掩码都是255.255.255.0,网关不填,DNS什么的其它的都不用填。 ”

这个试过,任何支持局域网的游戏都能(还没见到不能的)
holmesabc
2011-05-29 23:08:41 +08:00
还是想不通啊
在不经过处理的情况下 “广播包” 是怎么通过路由的。
我只试过两种方法可以达到这个效果VPN(hamachi)或者BattleLAN这软件。

改192.168这种方式可以联机的话,那游戏根internet就没关了

如果你确认你的描述是正确的话,
(看看拨号验证的软件什么的,网络的连接方式是什么 类似:电脑(N个)---交换机---路由)
那这个情况值得研究一下。
Aragon
2011-05-30 09:42:33 +08:00
拨号是802.1x认证的软件

墙上有一个端口-》路由器-》n台电脑,路由器Wan不用,全部接Lan

至于学校那里,不同网关同一个Mac(其实就同一台服务器)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/11649

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX