1.魔兽争霸III冰封王座局域网联网过程

为了描述方便,先定义几个术语:

服务器:建立了游戏的主机

客户机:准备加入游戏的主机

分两种情况描述:

1.1客户机点击局域网时,服务器已经建立好了游戏

魔兽争霸启动后,当玩家点击“局域网”按钮时,会主动发送一次广播UDP包,内容如下:

F7 2F 10 00 50 58 33 57 14 00 00 00 00 00 00 00(客户询问包)

上述包数据,随魔兽争霸的版本不同而不同,但是只要是一个版本,这个数据是不变的。

目的就是询问本网段内所有的机器,看看是否有人建立了游戏。如果有人建立了游戏,那么建立游戏的机器就会返回一个地图信息的UDP单播包,地图数据随建立的游戏的不同而不同,下面仅举一例:

F7 30 8C 00 50 58 33 57  14 00 00 00 01 00 00 00 
39 69 C2 00 E5 BD 93 E5  9C B0 E5 B1 80 E5 9F 9F 
E7 BD 91 E5 86 85 E7 9A  84 E6 B8 B8 E6 88 8F 20  
28 76 73 00 00 01 03 49  07 01 01 77 01 B9 79 01  
99 D5 B9 31 4D CB 61 71  73 5D 45 6F 77 19 6F 6D  
6F 61 65 5D 45 2B 6F 75  41 21 41 6D 6D 2B 73 75 
61 73 73 21 77 B1 37 2F  37 31 63 2F 77 23 33 79  
01 77 73 01 01 00 0A 00  00 00 01 00 00 00 01 00
00 00 0A 00 00 00 1B 00  00 00 E0 17            (地图包)

地图数据同时说明了,游戏的端口,本例就是E017,也就是6112.

客户机收到这个地图信息后就会显示出这个游戏,点击加入就可以进入了。

1.2客户机点击“局域网”时,服务器尚未建立游戏

此时客户机发送客户询问包后,没有任何回应,以后也不会主动发送询问包了。

待服务器建立好了游戏以后,会每隔大概3秒就在本网段广播一次UDP包,内容如下:

F7 32 10 00 00 00 00 00 01 00 00 00 00 00 00 00(建主信息包)

注意,上述内容的第五个字节,每次建立游戏都会不同。

客户端收到这个包后,会向服务器单播一个询问包,服务器收到后,单播返回地图包,客户机如果已经显示了这个游戏就会更新游戏信息,如果还没有就增加这个游戏显示,玩家点击即可进入。

2.跨网段联网的三个切入点与我的选择

2.1 跨网段发起主动包

从联网过程可以看到,联网过程可以从客户机发起,也可以从服务器发起,而且发起过程都是在本网段广播UDP包,客户机主动发起的时候是广播“询问包”,服务器发起的时候是广播“建主信息包”,以后的过程都是单播UDP。这样一来,由于广播智能在本网段进行,所以其他网段的机器无法通过广播来主动发起联网,也无法收到本网段机器主动发送的广播包,从而无法连入游戏。

知道了这个过程,就很容易想到跨网段连接过程,假设有两个网段A和B,用A(x)表示A网段的机器,B(x)表示B网段的机器,要让A(x)和B(x)互联,那么主动发起的一方就要把包发送到对方,显然通过广播是不行的,那就用单播吧。但问题又来了,UDP的端口要和魔兽游戏一样才行,这样魔兽才能收到回来的包。可魔兽的UDP端口是独占的没有办法和其他软件共享。看来一般的socket编程是不行了,可以采用winpcap构造底层包来完成这个工作。我用的是C#的封装Sharppcap。

2.2 三种联网方式

谁来发起主动连接呢,答案是不一定。客户机和服务器都可以。

(1)客户机发起主动连接

前提是必须知道服务器的IP地址,这样就可以向服务器主动发送"询问包”,从而引发以后的联网过程。

(2)服务器发起主动连接

前提是必须知道客户机的IP地址,这服务器端软件截获广播到本网段的“建主信息包”,转发到其他网段的客户机,从而引发以后的联网过程。

(3)服务器直接发送地图

前提是必须知道客户机的IP地址,服务器端软件截获发网本网段客户机的地图信息包,转发到其他网段的客户机。

上述方式中,(2),(3)都必须要截获后转发,而(1)只要发送就可以,因为对于固定版本的魔兽来说,“询问包”是恒定的。

简单的就是最好的,我的选择是通过(1)来完成跨网段联网。

3 联网软件在哪里运行

这个问题比较有意思,因为UDP可以伪造。也就是说,软件可以代表运行自身的主机发起主动包,也可以伪装成别人发起主动包。只要运行软件的主机能访问到接收主动包的机器就可以,可以在任意网段的任意机器上。

4.软件使用说明

4.1安装

本软件采用C#写成,采用.net Framework 4.0。故必须先安装有.net Framework4.0。另外需要winpcap,本软件包已经收录了,用户无需另外下载。安装.net Framework和winpcap后,即可直接运行本软件了。

4.2使用说明

需要填写的信息有:软件运行所在机器的网关IP, 魔兽服务器的IP,端口,客户端的IP,端口。客户端玩家点击“局域网”以后再运行本软件,客户端就可以看到游戏了。

4.3注意打开防火墙

防火墙要对魔兽开放,如果不会,直接关闭防火墙即可。

4.4软件下载

已放到了csdn资源里。http://download.csdn.net/source/3406656,需要源码的朋友QQ联系112633012。

魔兽争霸跨网段对战原理与实现相关推荐

  1. ARP协议在同网段及跨网段下的工作原理

    一.ARP在同个网段下的工作原理 首先,每台主机都会在自己的ARP缓冲区中建立一个 ARP列表,以表示IP地址和MAC地址的对应关系.当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP ...

  2. gns3中两个路由器分别连接主机然后分析ip数据转发报文arp协议_ARP协议在同网段及跨网段下的工作原理...

    前言:ARP协议是在链路层通讯中,已知目标IP地址,但是,仅有IP 地址是不够的,因为IP数据报必须封装成帧才能通过数据链路进行发送,而数据帧必须要有目的MAC地址,每一个网络设备在数据封装前都需要获 ...

  3. 【数通网络交换基础梳理2】三层设备、网关、ARP表、VLAN、路由表及跨网段路由下一跳转发原理

    一.不同网段如何通讯 同网段可以依靠二层交换机通讯,网络中存在多个网段192.168.1.1/24 172.16.1.1/24 173.73.1.1/24情况下如何互相通讯?上节留一下的问题,这节继续 ...

  4. ARP 协议工作原理(同网段及跨网段)

    目录 一.ARP简介 二.ARP的工作原理 三.ARP协议在同网段工作原理 四.ARP协议在不同网段工作原理 一.ARP简介 ARP全称是"Address Resolution Protoc ...

  5. 【转】二层交换机之间的跨网段访问

    一:网络拓扑 pc1--二层交换机--pc2 二:实验目的 PC1能ping通PC2 PC1的ip为:192.168.0.1/24 PC1的网关为:192.168.1.1 PC2的ip为:192.16 ...

  6. 不能用主机名访问跨网段的网站服务.

    这两天发现在公司外当我使用SSL ×××接入到公司内网后, 不能直接使用主机名访问在公司总部的跨网段的劳动力管理系统的测试环境了.一开始没当回事,每次修改DNS为公司内网的DNS就可以了.可是时间长了 ...

  7. 跨网段远程网络唤醒计算机,远程唤醒及跨网段远程唤醒

    远程唤醒: 1.除了在BIOS中开启远程唤醒功能外,有些主板要求开启以下功能: AC Back Function(设置掉电重启后系统的状态) 主板的来电唤醒功能 比如一插电源线主机就启动看你想怎么设置 ...

  8. 使用WINS服务器实现跨网段名称注册解析和释放

    2.1 示例:使用WINS服务器实现名称注册解析和释放 实验目的: ü 安装WINS服务器 ü 配置计算机使用WINS服务器实现计算机名称注册,名称解析和名称释放 ü 查看WINS服务器名称注册 企业 ...

  9. BadTunnel:跨网段劫持广播协议

    xlab · 2016/06/19 11:38 Author:[email protected] 0x00 简介 本文提出了一种新的攻击模型,可以跨网段劫持TCP/IP广播协议,我们把它命名为&quo ...

最新文章

  1. PCL:PCLPlotter可视化特征直方图
  2. 通过项目逐步深入了解Spring MVC(一)
  3. Android性能优化典范第五季
  4. [转]Docker基础-使用Dockerfile创建镜像
  5. 网络编程 UDP套接字
  6. kafka报错与调试技巧
  7. java 快速从树节点找到数据_14期每日分享Java程序员分享超全哈希相关的知识
  8. android学生管理实例,学生管理系统-基于SQLite数据库的Android应用
  9. 2018.10.24-day3 python总结
  10. Fiddler 抓包工具总结
  11. 双摄像头做slsm_刚刚考完!真实双机位复试经验帮你避雷!
  12. Unity Sprite的概念或意义
  13. python人工智能之:多边形矩阵热图程序实战篇(二)
  14. 未来的计算机 展望未来作文,展望未来作文(通用10篇)
  15. 【R和Python对比】matplotlib和ggplot(一)
  16. 西部数据php一键安装,【贪狼某道1.60特色服务端】WD某道1.60一键安装客户端带GM管理工具[附视频搭建教程]...
  17. 海康威视道闸进出口LED屏DS-TVL224系列开发C#源码
  18. internet信息服务器_Internet档案馆如何维护信息高速公路
  19. ResNet网络详细构建总结
  20. 部署ebe-shop商城系统(使用IDEA克隆Git项目)

热门文章

  1. WPS DATEDIF函数计算日期间隔数
  2. 区块链倪老师:《区块链思维》第一章
  3. 北京画室真实成绩到底如何?如何挑选北京画室排名前十位
  4. Ag-Grid动态渲染列
  5. 鸟哥的Linux私房菜(服务器)- 第七章、网络安全与主机基本防护: 限制端口, 网络升级与 SELinux
  6. H5 自适应正方形图片与文字溢出产生省略号
  7. 支付宝授权获取芝麻信用分数
  8. KVM虚拟化(2) | KVM安装部署 | 安装虚机Windows2012R2
  9. 解决CSDN绑定的手机号注销之后怎么更改手机号
  10. 经典到发狂的语录(某男日记摘录)