通过实战测试无线网络的速度

简介:

不久前,一个朋友向我发牢骚,说他的无线网络传输率“只有5Mbps”。我感到很吃惊,因为我曾告诉过他5Mbps是正常的速度。他说:“怎么可能,我这个可是号称54Mbps的802.11g呀。” 

这位朋友一直是本杂志的读者,我还以为他完全清楚802.11a、b、g的实际速度和标称速度之间的差别。如果他非常清楚Wi-Fi的“有效负载”问题, 就不会表示什么疑问了——现在看来不是这样的。所以,我认为有必要再来解释一下为什么在802.11g连接上得不到54Mbps的速度。后面还有一个测 试,可以自己动手做一下。来检测正确性。 

关于Wi-Fi的常识 

先介绍一些关于Wi-Fi的一般知识。 

现在有三个基本Wi-Fi标准。802.11b标准最早,速度为11Mbps;802.11g最新,速度为54Mbps;还有一个容易混淆的802.11a,与b、g不兼容,速度也是54Mbps。802.11a是美国制定的标准,欧洲ITU将正式推出它的增强版802.11i。 

但是,所有人都知道这些标称速度值是虚的。实际上,802.11b标准的速度就包括1Mbps、2Mbps、5Mbps和11Mbps几种,但这些并不是用户可以获得的实际数据传送量。究其原因,就要牵涉到以太网IEEE 802族标准的核心,即协议。 

这里我要多说几句,因为这些概念很容易混淆。有个概念要记清楚:协议并不计量bit数,它测量的是时间。由于存在延迟,传输的速度越快,损失的数据位也成倍增加。延迟为200微秒时,1Mbps速度的数据损失很小,而11Mbps时的损失就要高出10倍。 

协议是必需的,因为以太网是一种共享的连接系统,没有协议它就根本不能工作。所以,需要有一种既严谨又简单的方法,能确保在任一时刻只有一个用户在使用网络连接。 

这里有几层含意。首先,必须知道任意一个用户何时开始发送数据,还需要知道他们将要发送的数据量,以及何时发送完毕。其次,如果出现两方同时开始发送数据 的情况,需要有一种方法确保一方退出竞争,空出网络让另一方发送。最后,还要有个固定的延迟时间,这样才可以传送各种消息,如谁在使用网络,谁应该避让以 及等待多久。 

图1显示了一个标准的TCP/IP数据包。所有从1KB至64KB的数据(一般均低于2KB,因为路由器会拆散大于2KB的数据包)都被封装起来,并带有两个头(header),一个TCP头和一个IP头,两个数据头用于数据包的描述。 

  

图1 


当然,这些只是从TCP/IP处理程序得到的数据部分,还不包括任何以太网系统的东西。所以,当 通信 软件 将这个数据包送给网卡时,还要在外面再加上许多东西,就像给它做一个802.11的“外框”(帧)。 

最前面是30字节的MAC(介质访问控制)头,用以标识网卡,然后添加3个字节的LLC(逻辑链路控制)头和5字节的SNAP(子网访问协议)头。接着是上述TCP/IP数据包,最后以4字节的FCS(帧校验序列)结尾。 

上述这些也只是PLCP子层业务数据单元,或叫PSDU。在传送前还要再加上:一个6字节的PLCP(物理层会聚协议)头,在PLCP头前还有 PLCP“preamble”(前引导)头,最后完成的PLCP协议数据单元(PPDU)也包括两部分——PLCP和MPDU(MAC层协议数据单元) (见图2)。 




图2 


现在就可以传送数据了。在每一个1500字节(典型值)的数据包中,一般都有100字节以上的控制 信息 ,但这还不够。因为这是以太网,一个正规的协议是必不可少的。 

大体来讲,以太网的有效负载永远不能超过标称值的70%。例如对10M的以太网,速度最高是7M,对100M的以太网则永远不会超过70M。这种估计还只是对有线以太网,对无线以太网还有额外的问题。 

情况是这样的:等待某个设定的时间间隔后才能开始发送,并且发送后要等待对方响应。如果有流控机制(一般都有),则还要有RTS和CTS信号的等待延迟。 

这些大量的时间延迟都是以微秒来计算的。最糟的情况无疑来自于PLCP前引导和PLCP头,因为标准假定网络中存在老式的802.11b网卡,所以,前引 导部分的传送速度要让最早的802.11b网卡也能听懂,因而速度只能是1Mbps。从图2中可以看到,在速度为1Mbps时几乎没有多少数据损失,这个 速度是最初Wi-Fi卡的基本标准,但当速度为11Mbps时,数据只能占一半。 

一般来说,单个用户在距接入点一英尺处,没有其它无线网络干扰的情况下,可以获得的绝对最大速度是任何一种无线以太网标准“标称速度”的一半。也就是说, 如果标准声称是11Mbps,则绝对最高速度为5Mbps;如果标准是54Mbps,则实际速度在22Mbps至25Mbps之间。当远离接入点时,信号 会越来越弱,速度也会下降。另外,当其它人加入到网络中时,带宽就被共享了。 

如果有人在听 互联网 电 台或下载视频文件,分给你的带宽会急剧下降;如果有十几个人都在用无线网,大家都在相互干扰,效率也会大幅度下降。如果你是坐在星巴克咖啡店里,通过移动 热点和朋友聊天,则无线网速的下降不会显著影响你的使用。但如果要通过Wi-Fi进行文件备份,你最好有个心理准备,因为花费的时间可能比你预想的要多 ——假如你是在办公室里做备份,同时还有40个同事也在做类似的工作,则用午餐时间来做备份更加明智些。

软件测试 

有一个办法可以测试无线网络连接的实际速度,即运行一个基准测试程序。以下我将为Windows用户介绍这个测试程序。 

我们的实验室里有一个测试组件名叫Netbench,当然用它测速是大材小用,但如果只测网速可以不必运行所有项目。Netbench组件的一个部分叫网 卡测试,它可以给出网卡的最大数据流量(详细说明请见www.veritest.com/benchmarks/netbench)。即使有这些帮助,估 计你还是会一头雾水。举个例子:你可能会认为带网卡的笔记本电脑上应该运行“客户”软件。其实不然,最好把这台电脑安装为服务器,客户端应该是你用做台式机的机器。严格地讲,需要在网络里安装第三台机器作为控制器。 

使用指南里并没有讲清楚什么是服务器,你可能猜想需要一台运行Windows Server 2003的机器。这次又错了,服务器是指计算机的名称。只需到Windows的资源管理器里,右击“我的计算机”,从弹出菜单中选择“属性”,然后将笔记本电脑名称改叫“Server”就可以了。 

无论用什么名字都可以,只是要把它记下来,因为以后可能会修改它。用同样的方法修改控制器机器,将名称改为“controller”,确认所有的机器都在相同域或相同工作组内(见图3)。 




图3 所有测试机器都要在同一工作组或域中,而且必须按基准测试要求的方式命名。 


最后,找到一个名为“Hosts”的文件,用记事本一类的纯文本编辑器打开并进行修改。做这件事时一定要小心,因为它是一个系统文件,而且要注意有些 Windows版本可能会自作聪明地存为“Hosts.txt”,而不是没有扩展名的“Hosts”。这个文件一般在Windows目录或I386子目录 下,比较省事的办法是用搜索功能在硬盘上查找。一般说来就是:“修改每个客户的Hosts文件,使之包括控制器的名称和IP地址”。换句话说,你需要知道 每台机器的名称和IP地址。 

最好是到控制面板的网络设置中,将三台机器都设置成固定IP地址,而不使用DHCP(见图4)。可以设为这种地址:如192.168.1.101、192.168.1.102、192.168.1.103。但大多数情况下网段地址都由无线接入点或路由器决定了,因此就需要检查一下现在是在哪个网段。




图4 在设置IP地址时,无线网络必须在运行中。 


具体方法如下:打开一个命令提示符窗口,运行ipconfig命令,查看无线网卡的设置。将设置写到Hosts文件中,然后重新启动,使设置生效。 

在实际使用中,永远不会达到绝对理想值。在两台机器间传递一个巨大的文件时,最好的速度也只有这个的一半,因为文件系统还要花费大量处理时间,如寻找扇 区、装载缓存和填充缓充区等。对于笔记本电脑的完整备份工作,我的建议是慎用无线网传送方式,不如把两台机器都接到有线以太网上做这件事。否则,实际花费 的时间会远远超出你的想象。









本文转自 h2appy  51CTO博客,原文链接:http://blog.51cto.com/h2appy/1133713,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
网络协议 Shell Linux
【Shell 命令集合 网络通讯 】⭐⭐⭐Linux 测试与目标主机之间的网络连接ping 命令 使用指南
【Shell 命令集合 网络通讯 】⭐⭐⭐Linux 测试与目标主机之间的网络连接ping 命令 使用指南
43 1
|
30天前
|
机器学习/深度学习 PyTorch 算法框架/工具
【PyTorch实战演练】AlexNet网络模型构建并使用Cifar10数据集进行批量训练(附代码)
【PyTorch实战演练】AlexNet网络模型构建并使用Cifar10数据集进行批量训练(附代码)
56 0
|
30天前
|
机器学习/深度学习 PyTorch 算法框架/工具
【PyTorch实战演练】使用Cifar10数据集训练LeNet5网络并实现图像分类(附代码)
【PyTorch实战演练】使用Cifar10数据集训练LeNet5网络并实现图像分类(附代码)
53 0
|
7天前
|
数据采集 机器学习/深度学习 数据挖掘
网络数据处理中的NumPy应用实战
【4月更文挑战第17天】本文介绍了NumPy在网络数据处理中的应用,包括数据预处理、流量分析和模式识别。通过使用NumPy进行数据清洗、格式化和聚合,以及处理时间序列数据和计算统计指标,可以有效进行流量分析和异常检测。此外,NumPy还支持相关性分析、周期性检测和聚类分析,助力模式识别。作为强大的科学计算库,NumPy在处理日益增长的网络数据中发挥着不可或缺的作用。
|
30天前
|
机器学习/深度学习 算法 PyTorch
【PyTorch实战演练】深入剖析MTCNN(多任务级联卷积神经网络)并使用30行代码实现人脸识别
【PyTorch实战演练】深入剖析MTCNN(多任务级联卷积神经网络)并使用30行代码实现人脸识别
54 2
|
30天前
|
机器学习/深度学习 自然语言处理 PyTorch
【PyTorch实战演练】基于全连接网络构建RNN并生成人名
【PyTorch实战演练】基于全连接网络构建RNN并生成人名
23 0
|
1月前
|
存储 测试技术 C++
P2P网络下分布式文件共享场景的测试
P2P网络下分布式文件共享场景的测试
33 6
|
1月前
|
Linux iOS开发 MacOS
|
1月前
ping 测试主机之间网络连通性
ping 测试主机之间网络连通性。
55 1
|
1月前
|
运维 数据库
Powershell实战:测试网络请求两个命令介绍
【2月更文挑战第11篇】 Test-Connection 命令将 Internet 控制消息协议 (ICMP) 回显请求数据包或 ping 发送给一台或多台远程计算机并返回回显响应回复。 我们可以使用该命令确定是否可通过 IP 网络ping通特定的计算机。

热门文章

最新文章