我不确定我是否在正确的地方,但我想这里有人可能会提供一个很好的答案。我想知道电流是如何流动得如此之快的。例如现在的电子游戏,你可以在世界各地射击某人,他们几乎立即死亡。电力是如何做到这一点的?我试图用谷歌搜索这个问题,但结果很差,这就是我在这里的原因。
互联网如何能够如此快速地传输数据?
也许这作为评论会更好,但它太长了。我想说明一个事实,即您的陈述表明您认为数据几乎是即时传输的,但您提供的任何观察结果都没有真正证明它是快速传输的。
你提到了电子游戏。游戏开发人员非常清楚玩家之间存在显着延迟这一事实,因此他们采取了一些技巧。其中之一是他们让客户端猜测它尚未从服务器/其他玩家那里收到的某些信息。例如,您的客户从 50 毫秒前就知道对手的位置和速度。所以它推断并说,“如果他的动作是这样的,他可能现在就在这里”,你会看到这个预测的位置。大多数时候,它非常准确(可能是因为程序员为此付出的努力),而且实际上感觉没有延迟。其他时候它是不准确的,对你来说,玩家似乎被枪杀了,而实际上他所处的位置与你的控制台预测的不同。
在相关的说明中,大多数显示器运行在 60Hz 左右,有些显示器执行称为双缓冲的操作。我不会在这里详细介绍,但这会在处理器渲染帧和实际显示帧之间引入长达 33 毫秒的延迟。大多数人没有注意到这一点,所以我认为有理由建议即使网络延迟相当于 33 毫秒,您可能会认为它是即时的,即使没有任何编程技巧。
总之,互联网不一定是“快”的。但是聪明的人会做聪明的事情,让它看起来比实际更快。如果您想了解更多信息,可以考虑向gamedev.stackexchange.com上的人员询问。
这不是一个人可以在一个帖子中回答的问题。但是,我希望这个答案能提供足够的信息和链接以提供帮助。
了解信号如何通过 Internet 传输非常重要。但是请注意,由于噪声和大量用户,需要对相同的信号进行编码、解码、重传等,因此处理所需的时间比实际电信号传输所需的时间要多几个数量级。还要记住,对于计算机来说,一毫秒是非常长的时间;GeForce Quadro K6000显卡可以在这么长的时间内执行 5.000.000.000+ 次浮点运算(5196 GFlops 乘以 1ms)。
导电电缆:
电子本身不会移动得那么快,因为它们在导电电缆内部反弹。然而,电的传播不是基于一个电子反弹到另一个,而是一个通过电磁相互作用排斥另一个:
假设您有 3 个电子排列(假设一维空间)。稍微移动第一个。第一个到第二个的距离变小了一点。他们身上的静电力会变大一点。根据库仑定律: $$\|F\|=k_e\frac{q_1 q_2}{r^2}$$ 其中: \$\|F\|\$ 是力的大小,\$k_e \$ 是库仑常数,\$q_1\$ 和 \$q_2\$ 是两个粒子各自的电荷,最后 \$r^2\$ 是它们之间的距离。
当第一个粒子向第二个移动时,静电力几乎立即增加。这会导致第二个粒子向第三个粒子移动一点点,依此类推。
“几乎立即”实际上意味着“以光速”(\$c=299,792,458m/s\$)。
导线内的电子数量非常多,物理学有点复杂,但其要点是信号“几乎立即”通过导体但比 \$c\$ 慢。
光纤:
光纤电缆通过光子而不是电子传输信号。然而,即使在这种情况下,光子也不会直线传播。然而,与对信号进行编码和解码以及数据包重传的处理时间相比,光子穿过线路所需的时间仍然非常短。
无线的:
最后,通信卫星以及多种类型的无线链路用于传输信号,嗯,使用大量传输协议、调制和频率进行无线传输。在这种情况下,使用电磁辐射传输信号。这是一个非常复杂的主题,我不可能涵盖所有内容。
将信息编码为电信号的智能方法:
电压脉冲到达导线的另一端是不够的;那个电压是用来传达一些信息的。通过根据要传输的信息(携带,因此称为载波)修改载波信号来对信息进行编码的行为称为调制。
共享相同频道的智能方法:
所有这些通信渠道都需要连接起来,信息需要以可靠的方式在这个庞大的网络中传播。最初,为了让两个节点相互通信,它们将保留许多电缆,形成从节点 A 到节点 B 的路径。没有其他节点能够使用这条相同的路径。这称为电路交换。使互联网等如此庞大的网络成为可能的突破是众多节点能够共享一个特定的通信渠道。此共享由数据包交换启用. 不是为两个节点保留一条电路,而是每个节点只检查总线是否空闲,然后传输一个包含数据和目标信息(以及其他一些东西)的数据包,然后释放通道。数据包需要找到它们的目的地,这称为数据包路由,这是另一个巨大的主题。与电磁波的传播速度相比,路由和调制需求是数据包到达目的地需要“这么长时间”的主要原因。路由对于所有这些用户在同一网络上共存也是必要的。
互联网:
所有这些东西,连同许多其他技术,共同构成了互联网。
滞后补偿:
在许多应用程序中,包括竞争性视频游戏,几毫秒的延迟是不可接受的,尤其是当服务器需要注册“命中”时。这就是延迟补偿到位的地方。使用的方法之一涉及服务器保留每个实体位置和动画状态的简短历史记录。然后根据每个实体的延迟、速度和动画状态以及世界几何图形,执行一系列测试和物理模拟,看看当玩家“开火”他们的武器时是否会发生“命中”。
令我惊讶的是,人们只提到调制(修改更高能量“载波”的过程,该过程可以根据信号轻松长距离辐射)作为增加通信链路数据速率的附加因素而不是关键因素。还记得互联网初期的那些 54kbps 调制解调器吗?当 ADSL 调制解调器投入使用时,数据速率立即增加了 20 倍以上,这主要是由于使用了调制:使用 QAM,比特率变得高于符号(时钟)速率(通过使用各种幅度和相位),就像安装更多东西一样在同一个桶中以相同的速度行驶,只是想出一个更聪明的方式来安排它们。我们还没有完成,许多其他的已经存在或正在调查中......
a) QAM 调制的状态图,RF 调制之一b) 符号率如何与数据率不同,例如多级幅度调制(FM 的祖先),QAM 的组成部分之一(另一个是相位,非常与调频有关)。
特别是对于您的问题,除了尝试预测玩家在做什么之外,游戏通常由您的机器渲染;仅传输少量重要信息,例如坐标、速度等。单个网页可能包含比这更多的信息,但真正的问题是延迟(尤其是对于铁杆游戏玩家),它会随着您的信号集线器的数量而累积来自传播延迟,除此之外(距离也是一个问题,因为最大可靠数据速率会随着损失而下降 - 随着距离的增加而增加)。
互联网是互连路由器的网络,它们使用路由协议在它们之间转发互联网流量(数据包),通常会尝试采用最短/最快的路由。
现在大多数路由器都通过光纤连接 - 特别是当路由器之间的距离超过几十或几米左右时,或者当路由器之间的速度很高(1、10 甚至 40 Gb/s)时 - 现在这种情况包括几乎所有属于互联网的路由器。值得注意的例外可能是您的家庭路由器/调制解调器等。
无论哪种方式,信号通过光纤或电缆的传播速度都接近光速。因此,理论上你可以在大约 70 毫秒内收到一个从澳大利亚墨尔本到亚速尔群岛的 Angra de Heroismo(这些几乎是对立面)的数据包。现在让我们看一个真实世界的例子。有一个实用程序调用“traceroute”,它跟踪您的数据包从一个路由器到另一个路由器,并方便地输出每个“跃点”之间的大致延迟。(注意时间 im ms 是“往返” - 所以理论上单程是这个的一半):
7 127 ms 143 ms 139 ms i-0-1-0-0.sydp01.bi.telstraglobal.net [202.84.220.218]
8 111 ms 113 ms 64 ms i-0-5-0-2.sydp-core02.bi.telstraglobal.net [202.84.220.217]
9 167 ms 201 ms 210 ms i-0-3-0-6.paix-core01.bx.telstraglobal.net [202.84.140.194]
10 156 ms 158 ms 188 ms i-0-0-0-5.paix02.bi.telstraglobal.net [202.84.251.18]
11 204 ms 206 ms 175 ms 80.157.128.205
12 537 ms 512 ms 593 ms mad-sa3-i.MAD.ES.NET.DTAG.DE [217.5.95.173]
13 554 ms 552 ms 579 ms 80.157.129.10
14 544 ms 569 ms 545 ms 10.255.26.254
15 568 ms 568 ms 538 ms catvaweb.cabotva.net [81.20.240.40]
(我省略了通过我公司内部网的跃点)。
你会注意到延迟比你预期的“光速”要长得多。这是转发数据包的路由器引入的延迟。有时它们很快,有时它们很慢,尤其是当它们处于负载状态时。
如您所见,大部分延迟是由于路由器转发,而不是传播延迟。如果您使用 traceroute 工具(您可以在网上找到许多基于 Web 的工具)玩一玩,您会发现路由并不总是相同的,即使它在哪里,延迟也无处不在。
在线游戏公司将他们的服务器托管在与互联网连接良好的地方,并且可以与服务提供商达成交易,让他们的数据包优先于其他人。此外,一些互联网服务提供商可能也会这样做,并优先考虑游戏玩家(付出代价!)。这是可能的,因为如您所见,主要延迟在路由器中,而不是在光纤中。对于流媒体视频,这无关紧要,对于游戏来说,这很重要。因此,服务提供商可以根据其内容对互联网数据包进行优先级排序——为视频提供更多带宽,但延迟更多,而游戏(不需要太多带宽)可以在路由器队列中获得优先级,以最大限度地减少延迟。