V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Aragon
V2EX  ›  问与答

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

  •  
  •   Aragon · 2011-04-17 16:12:47 +08:00 · 5594 次点击
    这是一个创建于 4962 天前的主题,其中的信息可能已经有所发展或是发生改变。
    网络环境:学校教育网,每个学生绑定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,为什么不同的游戏结果不同?

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

    至于学校那里,不同网关同一个Mac(其实就同一台服务器)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2596 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 03:52 · PVG 11:52 · LAX 19:52 · JFK 22:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.