超能课堂(323)
为什么WiFi实际速率只有标称速率的一半?
本文约 2730 字、5 张图表,需 5 分钟阅读 (切换至标准版

在我们的实际测试中,标称速率为1000Mbps的有线网卡往往可以轻松跑出900Mbps或更高水平的平均速率,但标称速率为1200Mbps的WiFi 6无线网卡,实际测试下来的平均速率大都是800Mbps以内的水准。因此时至今日,千兆级有线网络的实际使用体验,相比标称速率更高的WiFi 6甚至WiFi 6E无线网络,很多时候反而能略胜一筹。那为什么会出现这样的状况呢?这就要从数据是如何在网络上传递说起了。

协议速率与实际速率有何不同?

我们在操作系统直接看到的网络连接速率其实是“标称速率”,又名为“协议速率”,可以简单地理解为理论上可以达到的最大速率。我们在实际应用中体现出来的网络速率是无法超过协议速率的,因为数据在网络上的传输是以数据封包,也可以称为数据帧的形式进行。

顾名思义,数据封包就是将很多不同的数据打包成一个固定格式包裹,就像我们发快递一样,发往同一个地址的不同货物,是可以打包在一个快递箱里面的。一个数据封包就是一个数据帧, 以千兆有线网络为例,其单个数据帧包括有18字节分别为目的地址(6字节)、源地址(6字节)、类型(2字节)、标签(4字节),而且在数据帧传输之时,前部还有再加上7个字节的前导码和1个字节的开始符,另有4字节的冗余检验和12字节的帧间距,因此有线网络里每传输一个数据帧,实际传输的信息容量就是88字节到1542字节,而当中只有46字节到1500字节是我们需要的数据。

无线网络的工作方式也是类似的,只是传输数据帧的载体从电缆变成了电磁波,封包的结构也稍有变化,其每一个数据帧中,储存有效数据空间为最大2312字节,而用来控制帧、管理帧、地址帧、校验帧等非有效数据的组成,需要总计34字节,也就是说每个数据帧最大容量为2346字节。由于在实际应用中展现出来的网络速率,往往只会统计数据帧当中的有效数据,而不会统计额外加入的封包信息,因此无论是有线网络又或者是无线网络,其实际网络速率都是不会超过协议速率的。

然而从封包信息以及有效数据的容量比例来看,无线网络的数据帧中,有效数据的比例并不比有线网络的要低,很显然单单依靠“封包信息”的说法,还是无法解释为何无线网络的实际速率与协议速率相差很大的状况。这时我们就需要说到两个专有名词,那就是“全双工”与“半双工”。

什么是“全双工”与“半双工”?

如果我们把一条数据通道当成一条连接A与B的道路,那么“全双工”就代表着这条道路可以同时实现A-B与B-A的通行,而“半双工”则代表着这条道路虽然可以实现A-B或B-A的通行,但同一时刻只能让其中一个方向通行,另一个方向必须等待。与“全双工”以及“半双工”对应的自然就是“单工”,即道路只能单向通行,A-B或B-A二选一,因此“半双工”也就相当于“可切换方向的单工”。

目前 千兆级的有线网络基本上都是运用全双工的工作模式,而WiFi无线网络则都是使用半双工的工作模式,因此对于有线网络来说,其在发送数据的同时也能接受数据,两个方向的数据包几乎不会干扰对方的工作。得意于此,如果有线网络需要双向传输数据时,那两个方向的传输都能同时进行且均能达到千兆级的速率,实际吞吐量就相当于是两个千兆网络叠加,相当于2000Mbps的水准。

而采用半双工模式的WiFi无线网络则做不到这一点,由于其在同一时间只能接受数据或发送数据, 因此当其两个方向同时传输数据的时候,网卡实际上是在“接受模式”和“发送模式”之间反复切换,实际吞吐量就不会超过协议速率,而且为了确保无线网卡能够正确地切换模式,数据帧的传输时会增加帧间隔时间,这就意味着在单位时间里传输的有效数据实际上会更低。

当然从 理论上说,如果网络可以一直维持单向传输,那么半双工是可以没有帧间隔,实际速率上的表现会更接近协议速率。但实际情况是,即便在表面上看只需要单向传输数据,例如我们通过网络进行下载操作,那系统在接受到数据包后,也是需要给出相应的反馈信号,更别说此时网络中可能还存在别的进程需要上传数据。因此半双工的WiFi网络 在实际应用中必须按照协议的安排来发送或接受数据包,帧间隔不可避免,而且发送与接受的数据帧也会存在各种差异,这就进一步拉大了有线网络实际速率与协议速率之间的距离。

无线网络与有线网络的抗干扰能力不在一个级别

除了全双工与半双工带来的实际速率差异外,有线网络与无线网络的载体也对两者的实际性能带来了明显的影响。目前千兆有线网络的载体是双绞线,比较常见的是Cat.5E也就超五类线以及Cat.6也就是六类线,两种线材在基本结构上是接近的,只是后者带有金属箔屏蔽层以及线内支架,能更好地降低内部与外部的干扰,有利于实现更高的传输速率。但无论是超五类线还是六类线,在我们的日常使用环境中,外界是几乎无法在不接触线材的情况下,直接干扰其内部的数据传输,因此只要路由器与网卡之间的网线是正常的,那基本上无论什么时候都能提供最佳的传输速率。

而无线网络使用的是电磁波作为载体,其“特点”就是很容易受到外接的干扰,包括传输路径是否有障碍物,外接是否存在频率接近的其他电磁波等等,而且传输距离也是明显受制于发射功率。这就使得无线网络在传输数据的时候,很容会因为外界的干扰而影响了数据帧的完整性。当客户端接收到不完整的数据时,其将返回一个重发数据帧的信号,路由器便需要重发数据,这就相当于是降低有效数据的比例,表现出来就是实际速率远低于协议速率了。

另外我们在连接WiFi无线网络的时候,往往还需要输入密码,这就意味着WiFi无线网络是经过加密的,因此设备与路由器在发送和接受数据的时候,将需要对相应的数据帧进行加密和解密,一定程度上也会影响数据的传输速率。当然相比于此前提到的因素,加密带来的影响实际上市比较小的,考虑到安全方面的需求,这点速率牺牲还是很有必要的。

无线网络与有线网络其实是相辅相成的

虽然WiFi无线网络的实际速率往往只有协议速率的50%左右,但随着技术的发展,目前已经逐步普及的WiFi 6以及WiFi 6E实际上已经给用户带去了接近于千兆级有线网络使用体验。只是有线网络与无线网络毕竟存在着明显的差异,前者在当前依然具有网络延迟上的优势,在各种场合下的稳定性也要有更好的表现,而且随着2.5Gbps、5Gbps、10Gbps有线网络的逐步普及,速率上的优势也是也来越明显,使得有线网络依然是很多对网络性能有较高要求的发烧级用户的首选。

而WiFi无线网络则胜在部署方便,而且在大部分应用场合中都可以提供足够的效能来满足用户的使用,因此对于多数家庭用户来说无线网络会是一个“真香”的存在。而且从目前的技术发展来看,无线网络显然更有未来的气息,其与有线网络更多地会是一种互补、相辅相成的存在,而并不是“谁取代谁”的关系,已经在无线网络中有较好体验的用户,大可不必为了追寻“测试结果上的数字差异”,而花大价钱去做有线网络的改造。

[转帖]超能课堂(323) 为什么WiFi实际速率只有标称速率的一半?的更多相关文章

  1. [转帖]超能课堂(210) 笔记本中常说的PL1、PL2到底如何影响CPU性能?

    超能课堂(210)笔记本中常说的PL1.PL2到底如何影响CPU性能? https://www.expreview.com/71943.html 本文约 4070 字,需 7 分钟阅读 (切换至标准版 ...

  2. [转帖]超能课堂(207) SD卡标准错综复杂,到底该认哪一个?

    超能课堂(207)SD卡标准错综复杂,到底该认哪一个? https://www.expreview.com/71505.html 开始的地方 SD容量等级 SD标准(SDSC) SDHC SDXC S ...

  3. [转帖]超能课堂 CPU制作过程

    http://www.expreview.com/50814.html 一般来说,我们对IC芯片的了解仅限于它概念,但是对于已经应用到各式各样的数码产品中IC芯片是怎么来的?大家可能只知道制作IC芯片 ...

  4. [转帖]超能课堂(199) 接口渐趋统一,USB4又如何能引领变革?

    https://www.expreview.com/70414.html 接口协议真复杂.. 9月3日,USB IF正式公布了USB4(你没看错,就是USB4,没有空格)的技术规格.USB-IF表示, ...

  5. [转帖]超能课堂:Intel平台芯片组变迁史

    https://www.expreview.com/69419.html 现在我们在购买电脑时一个最重要的硬件就是主板了.作为承载CPU等主要硬件的平台,其最重要的功能就是连接外围设备,扩展计算机.但 ...

  6. 【转帖】超能课堂(186) CPU中的那些指令集都有什么用?

    超能课堂(186)CPU中的那些指令集都有什么用? https://www.expreview.com/68615.html 不明觉厉 开始的地方 第一大类:基础运算类x86.x86-64及EM64T ...

  7. [硬件]超能课堂(181):我们为什么需要4+8pin CPU供电接口?

    超能课堂(181):我们为什么需要4+8pin CPU供电接口? https://www.expreview.com/68008.html 之前算过TDP 来计算机器的功耗 发现自己 理解的还是有偏差 ...

  8. 【转帖】超能课堂(188) WiFi 6凭什么可以如此“六”?

    https://www.expreview.com/69155.html 不明觉厉 这些东西 自己理解的还是少呢 电脑硬件可能一年甚至不到一年就会开始更新换代,但是路由器就不一样,它们的更新换代往往是 ...

  9. 超简单让ubuntu开启wifi热点(亲测16.04与14.04可用)

    今天教大家一个简单方法让ubuntu发散wifi热点给手机或者其他设备使用. 首先,创建一个普通的热点,点击右上角的网络,然后选择下拉菜单中的编辑连接,然后出现以下界面. 然后点击增加,连接类型选接W ...

  10. [转帖]超详细的PostgreSQL体系结构总结,值得收藏

    超详细的PostgreSQL体系结构总结,值得收藏 https://www.toutiao.com/i6715390855772897800/ 原创 波波说运维 2019-07-26 00:03:00 ...

随机推荐

  1. 花了1块钱体验一把最近很火的ChatGPT

    前言 最近 OpenAI 发布了 ChatGPT,一经发布就在科技圈火得不行. ChatGPT是什么呢? 简单得说,ChatGPT,是一种基于对话的 AI 聊天工具.我们来看看ChatGPT自己得回答 ...

  2. 详解Apache Sentry->Ranger平滑升级方案

    摘要:本文主要探讨如何平滑解决sentry到ranger升级过程中的权限迁移问题. 本文分享自华为云社区<[平滑上云]Apache Sentry->Ranger平滑升级方案>,作者: ...

  3. 带你了解WDR-GaussDB(DWS) 的性能监测报告

    摘要:通过本文,读者可知晓什么是WDR,如何创建性能数据快照以及生成WDR报告. 本文分享自华为云社区<WDR-GaussDB(DWS) 的性能监测报告>,作者:Zhang Jingyao ...

  4. FusionInsight怎么帮「宇宙行」建一个好的「云数据平台」?

    摘要:基于数据湖架构,应用效率得以极大提升.经过几年发展,当前集群规模已经达到1000多节点,数据量几十PB,日均处理作业数大概是10万,赋能于180多个总行应用和境内外41家分行及子公司. 本文分享 ...

  5. Jenkins Pipeline 流水线 - 声明式 Demo

    Jenkins Pipeline 流水线 流水线既能作为任务的本身,也能作为 Jenkinsfile 使用流水线可以让我们的任务从UI手动操作,转换为代码化,像dockerfile 一样.从shell ...

  6. flask 上传文件,视图

    记得有template ''' 导入flask类.该类的实例将会成为我们的wsgi应用 __name__是一个适用于大多数情况的快捷方式,有了这个参数,flask才能知道在那里找到模板和静态文件等东西 ...

  7. peewee update和save性能分析

    背景 python项目中使用了peewee这款orm框架,在对数据库更新时有两种语法,分别是save和update方法.有同事说从peewee的日志来看,update比save更快,于是做了一个简单的 ...

  8. 使用 std::string_view 提升字符串处理性能

    C++标准库提供了一个非常优秀的字符串处理类std::string,我们可以通过该类完成各种字符串操作.但是std::string有一个缺点,它的很多操作都是针对字符串实体,存在不必要的内存拷贝的代码 ...

  9. Cpp 值的种类划分

    本博文会介绍移动语义的形式术语和规则.并且会正式的介绍值的类别,如 lvalue.rvalue.prvalue和 xvalue,并讨论了在绑定对象引用时的作用.也会讨论移动语义不会自动传递的细节,以及 ...

  10. 重磅发布丨从云原生到 Serverless,先行一步看见更大的技术想象力

    (2022 云原生实战峰会) 2022年12月28日,以"原生万物 云上创新"为主题的第三届云原生实战峰会在线上举行. 会上,阿里云提出激活企业应用构建三大范式,并发布云原生可观测 ...