局域网游戏联机原理解析

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 局域网游戏联机原理解析

00 前情提要

十几年前,在那个互联网并不普及的时代,若是有机会你经过一个网吧,你会经常性的看的一个场景。只见网吧里,一排排大屁股的电脑,一条条交叉的线路,一个个插座上七弯八拐的走线,一群赤裸着上半身神情专注的少年们在哪里释放着他们的青春。

image.png

而你走进一看,你大概率会发现他们中大多数玩的是红警、CS,以及后来的魔兽。

也见,他们呼朋唤友,来来往往的客人里,经常几个人约着一起打把红警、CS,红警里的谭雅、CS里的CT,这是属于他们的青春。

而这个时候,我的脑海里就产生了一个疑惑:两个不同电脑里的角色怎么就能够一起玩了呢?是用电线给他们连接到一起得嘛?
image.png

这个问题,当我学习了计算机网络课程后,豁然开朗

01 通俗解释

当你在局域网开启一个联机游戏的时候,会在自己的主机上自动开启一个特定的监听端口,并且也会扫描当前局域网下开启了该端口的主机,就这样,你就快速找到了可以一起联机游戏的主机

可以打个比方,如果把局域网比作一个街道的话,电脑就是街道上的一户人家,则电脑的端口就是这户人家通往这个街道的其中一个门口。当我们开启一个联机游戏的时候,就好比往一个特定门口派出去一个拿着红旗子的孩子站岗。这个孩子,干了两件事情。

一是摇红旗,告诉大家我这道门开着,欢迎大家来找我玩

image.png

二是观察街道的情况,如果也有人在特定的门口摇红旗的话,就告诉家里人

image.png

就这样,街道里的人就知道,如果要想找人玩,那就找有摇红旗子的人玩。


02 举个栗子

以游戏红色警戒联机为例

image.png

1.观察可联机对象

红色警戒是通过TCP/UDP协议进行数据发送的:每台电脑监听一个固定的UDP端口(比如12345),一旦其他电脑打开局域网联机游戏,这台电脑就向整个局域网所有的电脑的12345端口广播说“我可以来联机游戏,快来找我吧”的信息,这样,其他电脑接收到这个信息,就知道有电脑可以联机游戏

2.加入联机游戏

红警在局域网联机游戏过程中使用的是TCP协议,每个玩家对应一个连接。在真正的局域网中,当有电脑A和电脑B进行联机游戏时,电脑A会使用TCP请求和电脑B进行连接,(地址从UDP中获得,端口是固定的12345),如果主机B答应此连接,就会发送些数据(地图信息,其他玩家信息等),这样电脑A的玩家就加入了游戏,此后两电脑就使用这个TCP连接通讯。

image.png


03 延伸思考

在上文中,我们知道了局域网联机是如何进行的,那么接下里我们可以延伸思考一下,对战平台是怎么联机的呢?

image.png

你身处上海,我身处北京,并不是处于一个局域网,那为什么可以通过对战平台来一起打一把魔兽呢?

这里啊,我们可以打个比方,我们不再是门口挥舞旗子的小孩子啦,我们长大了。我们走出房门,一起找了个网吧,到了网吧里,连上了一个局域网,就可以开心的联机咯。

对,实际上对战平台,就是相当于提供了一个中间平台,一个虚拟局域网。这样就可以让联机的双方都能接入一个虚拟局域网,这这个虚拟局域网下,就相当于在局域网内联机了。



04 简单总结

来简单总结一下,

局域网内是如何联机的呢?
当你开启一个联机游戏的时候,会在自己的主机上自动开启一个特定的监听端口,并且也会扫描当前局域网下开启了该端口的主机,就这样,你就快速找到了可以一起联机游戏的主机

对战平台是如何联机的呢?
实际上对战平台,就是相当于提供了一个中间平台,让联机的双方都能接入一个虚拟局域网,这这个虚拟局域网下,就相当于在局域网内联机了

目录
相关文章
|
17小时前
|
负载均衡 算法
Dubbo-负载均衡原理解析(1),一个本科渣渣是怎么逆袭从咸鱼到Offer收割机的
Dubbo-负载均衡原理解析(1),一个本科渣渣是怎么逆袭从咸鱼到Offer收割机的
|
17小时前
|
Android开发
Flutter完整开发实战详解(六、 深入Widget原理),2024百度Android岗面试真题收录解析
Flutter完整开发实战详解(六、 深入Widget原理),2024百度Android岗面试真题收录解析
|
1天前
|
Web App开发 开发框架 前端开发
Open UI5 前端开发框架配套的 Mock Server 工作原理解析
Open UI5 前端开发框架配套的 Mock Server 工作原理解析
10 0
|
1天前
|
存储 Java Go
Go 语言切片如何扩容?(全面解析原理和过程)
Go 语言切片如何扩容?(全面解析原理和过程)
12 2
|
2天前
|
机器学习/深度学习 存储 算法
卷积神经网络(CNN)的数学原理解析
卷积神经网络(CNN)的数学原理解析
33 1
卷积神经网络(CNN)的数学原理解析
|
2天前
|
传感器 数据采集 存储
岩土工程监测仪器之一:振弦采集仪的工作原理解析
岩土工程监测仪器之一:振弦采集仪的工作原理解析
岩土工程监测仪器之一:振弦采集仪的工作原理解析
|
2天前
|
XML JavaScript 数据格式
Beautiful Soup 库的工作原理基于解析器和 DOM(文档对象模型)树的概念
【5月更文挑战第10天】Beautiful Soup 使用解析器(如 html.parser, lxml, html5lib)解析HTML/XML文档,构建DOM树。它提供方法查询和操作DOM,如find(), find_all()查找元素,get_text(), get()提取信息。还能修改DOM,添加、修改或删除元素,并通过prettify()输出格式化字符串。它是处理网页数据的利器,尤其在处理不规则结构时。
37 2
|
2天前
|
机器学习/深度学习 人工智能 数据可视化
号称能打败MLP的KAN到底行不行?数学核心原理全面解析
Kolmogorov-Arnold Networks (KANs) 是一种新型神经网络架构,挑战了多层感知器(mlp)的基础,通过在权重而非节点上使用可学习的激活函数(如b样条),提高了准确性和可解释性。KANs利用Kolmogorov-Arnold表示定理,将复杂函数分解为简单函数的组合,简化了神经网络的近似过程。与mlp相比,KAN在参数量较少的情况下能达到类似或更好的性能,并能直观地可视化,增强了模型的可解释性。尽管仍需更多研究验证其优势,KAN为深度学习领域带来了新的思路。
109 5
|
2天前
|
敏捷开发 测试技术 持续交付
极限编程(XP)原理与技巧:深入解析与实践
【5月更文挑战第8天】极限编程(XP)是一种敏捷开发方法,注重快速反馈、迭代开发和简单设计,以提高软件质量和项目灵活性。关键原则包括客户合作、集体代码所有权、持续集成等。实践中,使用故事卡片描述需求,遵循编程约定,实行TDD,持续重构,结对编程,并定期举行迭代会议。通过理解和应用XP,团队能提升效率,应对变化。
|
2天前
|
缓存 自然语言处理 JavaScript
万字长文深度解析JDK序列化原理及Fury高度兼容的极致性能实现
Fury是一个基于JIT动态编译的高性能多语言原生序列化框架,支持Java/Python/Golang/C++/JavaScript等语言,提供全自动的对象多语言/跨语言序列化能力,以及相比于别的框架最高20~200倍的性能。
168479 0

推荐镜像

更多