有谁知道浩方平台的原理,请各位踊跃讨论,

解决方案 »

  1.   

    支持,顶一下。最好有专家来解释一下。
    中国互动游戏中心好像原来是替代sock的动态链接库的。
    而且必须IPX协议。
    IPX over TCP/ip在某个RFC文件中是有描述的。
    我的msn:[email protected]
    我的QQ:46030459。
    很希望和专家们把这个东西研究清楚。
      

  2.   

    作为用户的登陆可以说明一定有tcp的成份,作为玩家玩时有明显的瞬移,一定有udp的成份,这2种协议一定是都用了,关键是侧重的处理上upd应该是核心的东西
      

  3.   

    其他的我不敢说。
    但我敢肯定,绝对不是VPN
      

  4.   

    晕,到现在还有人在顶,
    我都写的很清楚了,是将IPX包封在TCP中进行的传递,
    注意,不是UDP,不是UDP
    要搞清楚这个问题,
    你应该先弄清楚什么叫IPX包,什么叫IP包,什么叫UDP包,什么叫TCP包,
    因为如果你连这个都不清楚,它是什么结构,怎么传递都不明白,
    那你是搞不懂这个东西的了,
    服务器绝对不会采用UDP,除非程序员发神经了,这种纠错和丢包不是一般的严重,
    具体你可以看richard stevens写的网络编程中对UDP在不同速度机器上传递的丢包实验,
    该实验告诉我们,在内网,如果机器的速度相差大约2倍,那么UDP丢包概率达到95%以上,
    而且你可以连接浩方服务器,用指令看看它打开了那些端口,是TCP还是UDP,
    服务器起的作用只是转发包,它不进行任何处理,而解包和压包工作都在客户端,
    然后运行游戏如星际,同时用SNIFFER看传递的是UDP还是TCP,
    要彻底搞清楚,光会编写程序是不行的,还应该去看低层的网络协议和数据包传递,
    各位好运。
      

  5.   

    danscort2000,
    浩方原理或许很简单,猜测只是hook+转发。但它决不仅仅是简单的将IPX封装,没有IPX协议的机器上也是可以用浩方的,你也太武断了吧。
    不过对于网络估计你也不是很清楚吧
    用UDP就是程序员发神经?汗你说Valve的halflife,id的quake,做这些的程序员都发神经?
    "在内网,如果机器的速度相差大约2倍,那么UDP丢包概率达到95%以上"
    纯粹是瞎说,如果真有这样的实验,你仔细看看它的实验条件,或者看看他的实验年代,网络速度。在内网一般的应用UDP丢包率绝对低于5%
    还有看打开端口有什么用。很多程序都是使用TCP+UDP的,例如盛大的泡泡堂,不要看到一个TCP连接就嚷嚷着TCP,TCP的。当然,我不是说浩方就是UDP,只是你不要这么武断。
      

  6.   

    老兄,这不是绝对的,
    不过你应该先搞清楚什么是IPX,什么是NETBIOS,为什么没有装IPX的机器上也可以用IPX,
    因为这里面MS有很大的贡献的,功劳确实应该归功于MS。首先应该搞清楚的就是这个问题,
    而这正是浩方的关键(WDM/VXD捕捉还是HOOK?这个我没搞清楚,但我倾向前者,因为驱动可以解决这个问题,我可以在WIN NT核心编程实现这个功能,但是WIN9X我不知道,请看前面我的帖子)
    至于UDP丢包实验,这是在486和SPARC机器上做的,但是和机器速度成正比,
    因为在协议剑中,每个SOCKET的缓冲都是有限的,在机器速度相差很大的情况和,
    不挺的传送大量数据包会导致缓冲满引起慢的一方大量丢包。
    关于在什么情况下用TCP,UDP,你应该看清主题,我们指的是将包封在TCP中还是UDP中来进行传递和为什么是TCP而不是UDP,而不是各种游戏本身是用什么包来传递数据(IPX/TCP/UDP)----这非常重要,不要偏离主题。一般游戏数据是采用TCP传递来保证稳定性,
    而广播数据或者没重要信息则可使用UDP来发送。
      

  7.   

    现在重新整理一下为什么是IPX OVER TCP技术而不是其他
    1)我们要明白,浩方的程序起的作用是让大家的电脑通过INTERNET组成一个大局域网,我们知道TCP和UDP都可以直接在INTERNET上传递,而IPX不可以,而通过游戏我们也可以发现,只有当你选择星际里的IPX或者CS里的局域网游戏的方式,你才能使用浩方提供的功能,而如果选择TCP/IP或者CABLE或者MODEM等,浩方根本不起作用,从这里我们可以判定浩方的作用就是用一定的技术手段在INTERNET上传送IPX包来支持局域网游戏。
    2)从1我们可以知道是对IPX进行封包,但为什么是通过TCP而不是UDP来传递呢,我监测了星际的运行,只有大量TCP包(SNIFFER)符合要求,其次richard stevens的经典作品中详细分析了TCP与IP(参考TCP/IP 1,2,3 UNIX网络编程),因为TCP是在系统核心低层进行纠错,而且有流量窗口控制,而UDP没有,必须由应用层来处理,这对服务器进行上百个连接同时进行处理纠错控制是不可想象的,最后我的经验告诉我用的是TCP而不是UDP。
    3)为什么不装IPX协议也可以进行连接?为什么QUAKE也可以?
    对第一个问题,我上面提到了MS的贡献,我的判断是浩方用了驱动技术(这个原理我知道,但是不知道在WIN98/ME中实现它),而不太可能用HOOK或者替换DLL。对第2个问题,我没有玩过QUAKE,但是我可以确信,即使QUAKE可以支持UDP进行联网游戏,但是在浩方中你必须选择局域网(IPX协议)才能利用浩方进行联网游戏,否则浩方不起作用。
      

  8.   

    楼上 我用sniffer监测到的数据几乎全是udp数据包 这怎么解释而且好象 csdn上面已经有人编出了类似的程序 只不过要收钱而不是open source罢了而且里面好象也是用的udp协议 具体可以搜索 浩方谢谢
      

  9.   

    抱歉,是我的错,楼上 eagleoflove(爱之鹰)是对的
    我上次是在网关抓的包,可能是过滤规则里设置有问题,过滤出了另一个游戏的数据包,
    这次我在运行游戏的机器上本地检测过滤,
    是UDP》TCP包,UDP 2万多,而TCP只有2千多,
    所以应该修正为IPX OVER UDP,
    抱歉!
      

  10.   

    那么我猜测它的方式应该是:
    IPX OVER UDP来传递数据,
    利用另开TCP连接来协助控制UDP包的流量和纠错
    这样即利用了UDP高效低开销的优点,而且利用TCP传递纠错数据和流量控制来修补UDP的弱点。
      

  11.   

    我估计不用安装ipx也可以游戏的原因是:   协议的目的本来就是一个封装和解封的过程   而这个过程被豪放去掉了,那我们就看到一个这样的情况   游戏(比如星际)的到的是一个已经解码的ipx数据包,发出的是一个还没有封装的ipx数据
       (也许还没有解码和还没有封装的数据不应该叫做ipx数据包)   豪放直接把这些数据用tcp或者udp包装发到目的地,再解码发给游戏,游戏的到的就是一个好象已经解码的ipx数据。当然就可以连接啦。   如果游戏需要接受的是一个封装好的ipx包,如果这种情况也不用安装ipx协议的话,那么就只能说豪放完成了ipx协议该完成的功能,解码和封装。
      

  12.   

    我这几天一直在注意这个帖子 也在注意这一类的东西国外也有类似的软件 kali(收费的) kahn 好像不支持xp我觉得楼上说的 ipx over udp 还是有道理的 rfc 1234好像就是说这个的在实现上面用 网卡的混编模式 或者hook。
    我觉得 浩方用到了 hook 我对这些不熟 我在unix下面的 最近才开始用vc的那位达人有关于windows hook编程的书不妨共享一下 大家共同讨论一下。 
      

  13.   

    应该有完整IPX包,
    要不程序会因为在初始化的时候出问题
    因为没有这个协议支持,
    就象你调用TCP你要指定TCP,
    而调用其他的(WINSOCK2)如IPX,在初始化的时候调用IPX,不支持就出问题了
      

  14.   

    那不装ipx也可以用ipx玩游戏该怎么解释?
      

  15.   

    都不对,据我所知……DirectPlay是可设置的,就是说一个DirectPlay程序可由另一个程序初始化并设置,而该程序可获得关于连接的信息,有一个SetConnecionSetting(大概是这个名字)函数。
      

  16.   

    大家想得太复杂了,没那么麻烦,不妨去看看DirectPlay
      

  17.   

    那不装ipx也可以用ipx玩游戏该怎么解释?我认为是驱动,因为用驱动可以解决这个问题
      

  18.   

    UDP+IPX,好象有点道理啊。
    不过每个包都要被服务器转发一下,好象不太可能吧。
    有点想不清!
      

  19.   

    是,确实是这样的,你不安ipx也可以玩基于这个协议的游戏。
    真是让人想不通。
    可能是水平菜的关系。
      

  20.   

    首先浩方跟IPX ,或是大家所得IPX over IP一点关系也没有,这点通过简单的截报就知道,所以那些老说IPX请自己动手看看再来说。至于怎么样实现,我觉得只有2个可能,一个就是Hook winsock技术,一个就是层技术,但是这个技术只能用在win2000以上,不能用在win95,98,me上,在这样的平台只能开发驱动,所以只要看看在这样的平台有没有浩方自己开发驱动就行了。我只能想到这些了,因为本人正在开发类似的软件,所以只是一点见解,不对的地方请指出
      

  21.   

    主要去截获send和recv,但是这会有很多问题
      

  22.   

    可是浩方CS使用TCP/IP协议的阿,不是IPX
      

  23.   

    danscort2000的有道理,不过我认为:
    1 关于ipx的我没看明白,确实是不懂,才疏学浅
    2 我认为服务器的作用除了认证之外,核心的作用也应该是包转发。但是我认为应该是使用udp而不是tcp协议,tcp协议似乎不能支持这么多的用户数量,除非投入太多的服务器
    3 如上某个人所说,我想不同的游戏,浩方处理的原理可能会不同其实是不是使用了udp,用软件监测一下应该就能看到的,不过我深入研究过:)
      

  24.   

    本人已经实现了浩方的功能,欢迎来讨论:[email protected]