802.11a/g wifi 无线路由器上允差的是 54Mbps,除个8,最少也是有 6MB/s 啊。为何具体速率仅有 2M 多呢?在网上的表述大多数不足为据,我只能班门弄斧了,热烈欢迎纠正。
Wifi 通讯在一个给出的载波通信频率段(频道栏目)上开展,如同大伙儿在平台里讲话一样,每一个人讲话都是会影响到别人。
为何很少搞一些频道栏目呢?一方面,可以不申请办理批准就采用的 ISM 频率段在合适无线通讯的 2.4GHz 地区是很不足的;另一方面,为了更好地确保通讯速率,频道栏目不可以太窄。在 802.11a/g(wifi 协议书)中,频道栏目总宽是 22MHz,共区划出 14 个频道栏目(在其中有一些频道栏目在一些我国不属于 ISM 频率段)。每一个频道栏目对周边的频道栏目也是有影响(见下面的图),这就是有线路由器有十几个频道栏目,但仅有间隔很远的 1、6、11 频道栏目才可以与此同时应用的缘故。
聪慧的阅读者一定想起了,即然大伙儿相互之间都能听见,那麼听见边上并没有别人在讲话的那时候再讲话呗。这就是载波通信监视(CSMA,Carrier Sense Multiple Access)技术性。但情况并不是这样简易。
第一个难题是,如下图所显示,1、2、3 排列成一条线,1要给2讲话,这时3已经给2讲话,但1不清楚这一客观事实,2与此同时听见1和3得话,就全乱掉。在现实世界中,大家或许遇到过这种的难堪。
第二个难题是,人的耳垂和嘴唇是“双工”的,也就是可以与此同时收取和发送;但无线通讯现阶段都还没完成双工,也就是只有在收取和发送中间转换,在讲话的情况下就听不见周边的响声。因而,在推送流程中即时监视载波通信,不是实际的。
为了更好地防止矛盾,802.11 引进了 Request to Send (RTS) 和 Clear to Send (CTS)。在如图所示中,连接点1要给2推送一帧,最先推送 RTS 帧。1周边的连接点听见 RTS 后,便会缄默出来。总体目标连接点2接到 RTS 后,会回应 CTS 帧,让2周围的连接点闭上嘴。1接到 CTS 后,就可以逐渐传送数据了。为了更好地确保数据能被精确接到,2还需要回应一个 ACK 表明确定。
外置天线推送和接受方式的转换必须時间,协议书必须确保回应帧逐渐推送时无线天线早已从推送情况转换到接受情况,因而又增多了一些帧间距。
在其中,SIFS (Short Interframe Space) 是 RTS 和 CTS 的间距,也是 CTS 和数据帧的间距,也是数据帧和 ACK 的间距。为了更好地确保不发生争执,从 ACK 完毕后到下一帧逐渐传送以前,要有更长的 DIFS (Distributed Interframe Space)。在 802.11a OFDM PHY(正交和频分复用的mac层)中,这种间距是:
- SIFS = 16 µs
- Slot time = 9 µs
- DIFS = 2 x Slot time SIFS = 34 µs
802.11a 的最多帧长是 1536 字节数,便是 12288 bit,再加上6个表明改错编号完毕的附加 bit,共 12294 bit。依据下表,在 54Mbps 传输速率下,必须用 57 个标记。TCP ACK 有 76 个字节数,再加上6个附加 bit 共必须 614 bit,依据下表必须用 3 个标记。802.11 ACK 只必须一个标记。
在推送真真正正的信息以前,还需要推送 Preamble。Preamble 是用来练习接受方的,让接受方了解怎样的数据信号相匹配怎样的数据信息,该用哪一个无线天线接受等。这种 Preamble 必须 20 µs 才可以传送进行。具备信息的每一个标记必须 4 µs 時间传送。
TCP 的传递全过程是,最先推送 TCP data,再回应 TCP ACK。传送 TCP data 和 TCP ACK 的全过程,各自要通过 DIFS、802.11 Data、SIFS、802.11 ACK。下表(节选自[1])测算出了一个 TCP packet 传送必须的時间。
TCP data | TCP ACK | |
DIFS | 34 µs | 34 µs |
802.11 Data |
20 µs 57 * 4 µs/symbol = 20 µs 228 µs = 248 µs |
20 µs 3 * 4 µs/symbol = 20 12 µs = 32 µs |
SIFS | 16 µs | 16 µs |
802.11 ACK |
20 µs 1 * 4 µs/symbol = 20 µs 4 µs = 24 µs |
= 24 µs |
Frame exchange total | 322 µs | 106 µs |
Transaction Total | 428 µs |
因而,每秒能开展 1000000/428 = 2336 次 TCP packet 传送。1536 字节数除掉 20 字节数的 IP header 和 40 字节数的 TCP header,便是 1476 字节数的 TCP payload。这代表着数据信息传输速度可以达到 3.45 MB/s(1000进制)或 3.29 MB/s(1024进制)。充分考虑 TCP 的滑动窗口协议书容许在接到 TCP ACK 以前推送新的 packet,具体传输速率很有可能更快。
以上速度是理想化状况下的基础理论速度。在实际的网络中,
- wifi网络帧长一般设定为 1500 字节数而不是 1536 字节数;
- TCP 推送方和接受方需市场竞争应用无线信道,会提高另外的操纵花销;
- 假如好几个机器设备连接同一个连接点(AP),就需要市场竞争应用无线信道,不但要让给一部分无线信道给别人,还需要提升操纵报文的附加花销;
- wifi网络传送沒有有线电视那麼平稳,无线信道的影响和信号源的运动都有可能造成传送不正确,必须重新传输;
- TCP 自身也有拥塞控制体制,不太可能一直以基础理论最大速度推送。
这种要素结合起來,评测的信息传输速度仅有 2.3 MB/s(1024进制)上下。从 3.29M 到 2.3M 或是有挺大差别的,上边哪一个要素非常关键,或是有没有什么我没充分考虑的要素,我都想搞不懂。热烈欢迎各位朋友们一起探讨。