00 前情提要
十几年前,在那个互联网并不普及的时代,若是有机会你经过一个网吧,你会经常性的看的一个场景。只见网吧里,一排排大屁股的电脑,一条条交叉的线路,一个个插座上七弯八拐的走线,一群赤裸着上半身神情专注的少年们在哪里释放着他们的青春。
而你走进一看,你大概率会发现他们中大多数玩的是红警、CS,以及后来的魔兽。
也见,他们呼朋唤友,来来往往的客人里,经常几个人约着一起打把红警、CS,红警里的谭雅、CS里的CT,这是属于他们的青春。
而这个时候,我的脑海里就产生了一个疑惑:两个不同电脑里的角色怎么就能够一起玩了呢?是用电线给他们连接到一起得嘛?
这个问题,当我学习了计算机网络课程后,豁然开朗
01 通俗解释
当你在局域网开启一个联机游戏的时候,会在自己的主机上自动开启一个特定的监听端口,并且也会扫描当前局域网下开启了该端口的主机,就这样,你就快速找到了可以一起联机游戏的主机
可以打个比方,如果把局域网比作一个街道的话,电脑就是街道上的一户人家,则电脑的端口就是这户人家通往这个街道的其中一个门口。当我们开启一个联机游戏的时候,就好比往一个特定门口派出去一个拿着红旗子的孩子站岗。这个孩子,干了两件事情。
一是摇红旗,告诉大家我这道门开着,欢迎大家来找我玩
二是观察街道的情况,如果也有人在特定的门口摇红旗的话,就告诉家里人
就这样,街道里的人就知道,如果要想找人玩,那就找有摇红旗子的人玩。
02 举个栗子
以游戏红色警戒联机为例:
1.观察可联机对象
红色警戒是通过TCP/UDP协议进行数据发送的:每台电脑监听一个固定的UDP端口(比如12345),一旦其他电脑打开局域网联机游戏,这台电脑就向整个局域网所有的电脑的12345端口广播说“我可以来联机游戏,快来找我吧”的信息,这样,其他电脑接收到这个信息,就知道有电脑可以联机游戏
2.加入联机游戏
红警在局域网联机游戏过程中使用的是TCP协议,每个玩家对应一个连接。在真正的局域网中,当有电脑A和电脑B进行联机游戏时,电脑A会使用TCP请求和电脑B进行连接,(地址从UDP中获得,端口是固定的12345),如果主机B答应此连接,就会发送些数据(地图信息,其他玩家信息等),这样电脑A的玩家就加入了游戏,此后两电脑就使用这个TCP连接通讯。
03 延伸思考
在上文中,我们知道了局域网联机是如何进行的,那么接下里我们可以延伸思考一下,对战平台是怎么联机的呢?
你身处上海,我身处北京,并不是处于一个局域网,那为什么可以通过对战平台来一起打一把魔兽呢?
这里啊,我们可以打个比方,我们不再是门口挥舞旗子的小孩子啦,我们长大了。我们走出房门,一起找了个网吧,到了网吧里,连上了一个局域网,就可以开心的联机咯。
对,实际上对战平台,就是相当于提供了一个中间平台,一个虚拟局域网。这样就可以让联机的双方都能接入一个虚拟局域网,这这个虚拟局域网下,就相当于在局域网内联机了。
04 简单总结
来简单总结一下,
局域网内是如何联机的呢?
当你开启一个联机游戏的时候,会在自己的主机上自动开启一个特定的监听端口,并且也会扫描当前局域网下开启了该端口的主机,就这样,你就快速找到了可以一起联机游戏的主机
对战平台是如何联机的呢?
实际上对战平台,就是相当于提供了一个中间平台,让联机的双方都能接入一个虚拟局域网,这这个虚拟局域网下,就相当于在局域网内联机了