网络能有多快?

June 10, 2008 7:22 pm UTC | In Tech

网络到底能有多快?废话少说,先从一些基本问题说起。

A. 速度单位和测速方法

文件传输速度一般用 MB/s 表示。这个缩写 MB 涉及到 Binary Prefix 的问题,按照最正统的约定,1 MB = 106 = 1 000 000 bytes,而 1 MiB = 220 = 1 048 576 bytes,这两者只相差 5%,很多地方就常常混用。比方 dd 命令汇报的速度是正统的 MB/s,而 wget 和大部分浏览器显示的 MB/s 则实际上是 MiB/s。

网络连接速度则一般用 Mbps 表示,百兆以太网连接速度是 100 Mbps,也即 100 000 000 bits per second。一个 byte 是 8 个 bit,注意一般小写 b 表示 bit,大写 B 表示 byte。比方 USB 2.0 极限速度是 480 Mbps,实际上只不过是 60 MB/s,现代内置硬盘的速度都远高于此。

因此我们可以看到,百兆以太网 100 Mbps 数据传输的极限速度是 100 000 000 / 8 / 220 = 11.9 MiB/s。但是这些数据中大概至少有 2% 是网络包头之类的,其真正的有用数据吞吐率(throughput)极限是 11.6 MiB/s 左右。

有关测速方法,fishy 同学对此似乎研究。现成的可以测试和显示网络传输速度的命令有比如 dd, rsync --progress, wget, scp 等,windows 下面那就用 ftp 软件或者浏览器好了……

B. 影响速度的因素

我们平时架的家用局域网一般都是百兆以太网,通常情况下,传文件至少可以达到 11 MiB/s 的速度,但是也未必,有各种因素会减慢这个速度。

  • 网络传输协议:通常在局域网里面使用的文件传输/共享协议有:afp, ftp, http, sftp, rsync, nfs, smb。大部分协议传大文件都可以不费力气的打满带宽,唯一要提一下的就是这个 smb 协议。smb 也就是平常在 windows 里面共享文件夹用的那个协议,很诡异的一点是这个协议传文件即使是两台 windows 之间也常常打不满带宽,而 Mac 下面性能尤其低,至于为什么会这样,我也不知道(请高人指点)。另外一点是如果传输大量小文件,有很多额外数据要浪费带宽,rsync 协议在这一点上稍强,但是比较通用的提速办法是在源机器把文件打包传输到目标机器再解包。
  • 机器性能:通常来说,主频 500 MHz 以下的机器做路由器,或者主频 1 GHz 以下的机器用有加密/压缩的协议(比如 sftp)传文件,其本身都有可能成为性能瓶颈。即便是 Linksys,早期有些号称百兆以太网的路由器其实根本达不到 100 Mbps 交换数据,被骗的人不在少数。另外硬盘的写入性能如果达不到网络带宽,测试网络性能可以只传文件而不写磁盘,比如 wget 加 -O /dev/null,千兆以太网传文件的速度瓶颈就有可能在硬盘写入速度。
  • 程序设置:通常来说程序的参数设置只要不太离谱都不会影响传文件的速度,但是也有例外。比如,Mac 下面的 dd 命令从 smb mount 的目录拖文件,如果使用默认 bs 大小速度非常之慢。另外,sftp 协议用不同的软件差别很大,但是我忘记我以前的测试结果了,所以等我有空再补上来……
  • 网况:(这个词不知道谁发明的,貌似是从“路况”一次发展出来的)在局域网内一般网络结构比较容易控制,打满带宽并不是难事;但是到了大因特网上网络传输速度基本上就不由你控制了,这个问题就不在这里讨论了。

C. 关于无线网

无线网 Wi-Fi 技术日新月异,以下是三种常见的规格:

  • 802.11b:频段 2.4 GHz,连接速度最高 11 Mbps,吞吐率极限大概在 0.5 MiB/s 左右。
  • 802.11g:频段 2.4 GHz,连接速度最高 54 Mbps,吞吐率能达到 2.4 MiB/s。
  • 802.11n:频段可选 2.4 GHz 或者 5 GHz,连接速度最快似乎可以到 300 Mbps,吞吐率极限据说高于 12 MiB/s。

不要被无线网的连接速度所迷惑,用目前最常见的 802.11g 传文件实际上只能到 2.4 MiB/s 的样子,而且现在市面上的低端 802.11g 无线路由器往往不能稳定保持这个速度。有一种 802.11g+ 技术可以把 802.11g 的性能翻倍,但是通用性不强,所以使用的地方并不多。

事实上,在 802.11b 之前还有过一个 802.11a,频段是 5 GHz,性能和 802.11g 差不多,可是因为频段选的不好,并没有流行起来。

802.11n 是目前最新的 Wi-Fi 技术,协议还没有最终定稿,但是市面上用协议草案制作的 802.11n 路由器已经不少了。也正因为协议没有最终定稿,不同公司生产的无线基站和无线网卡配合工作往往达不到最高性能。从目前的情况看,802.11n 网络连接至少可以到 130 Mbps 的连接速度,传文件可以达到 5 MiB/s 以上,所以即便是最差情况,802.11n 也已经可以超过 802.11g 的性能。(比如,苹果的 Airport Extreme 如果要兼容 802.11g 就必须工作在 2.4 GHz 频段,这样即使和自家苹果电脑的 802.11n 网卡互联,也只能达到 130 Mbps 的速度;而如果换用 5 GHz 频段,连接速度就是 300 Mbps,传文件可以保持 10 MiB/s 以上。)

无线网的性能会受到很多东西的影响,比方,信号穿的墙厚不厚、什么材料的,周围有没有同频率的干扰信号。2.4 GHz 这个频段很热门(主要是因为这个频段在大多数国家不需要许可证就可以发射),无绳电话、卫星信号、蓝牙、甚至微波炉都是这个频段,所以一般的建议是无线基站要尽量远离别的电子设备。

D. 关于 DSL 等

一般家用安装的 DSL 或者什么宽带专线的带宽数字都是虚的,只有问同类用户才能估计实际的性能。米国最近出了一个规定,至少 768 kbps 才能号称 broadband。记得以前一个小旅馆几十间房共用一个 128 kbps 的出口也好意思对外号称他们有 high speed internet access。

E. 结语

我真唐僧。

Tags: , , , , ,

12 Comments »

RSS feed for comments on this post.

  1. a core伟大,昨天已经在referral里面看到这篇的标题了,打倒剧透!

    Comment by fishy — June 10, 2008 8:26 pm UTC #

  2. orz 鱼总伟大!~~

    Comment by atppp — June 10, 2008 9:06 pm UTC #

  3. 不带这样的,总写好东西,让不让人午休了

    Comment by rmrf — June 10, 2008 9:52 pm UTC #

  4. orz!

    Comment by kxn — June 11, 2008 8:47 am UTC #

  5. 赞!

    Comment by kisstar — June 12, 2008 2:33 am UTC #

  6. sftp好像市面上所有的机器都有性能瓶颈,除非是10兆网或者更低。

    Comment by LianQiao — June 13, 2008 6:04 pm UTC #

  7. sftp 我从 ubuntu <> macbook 百兆网很轻松可以稳定在 11 MiB/s,而且单 CPU 50% 还吃不到(都是 2 GHz)。不过文章里说的也不太好,我去改一下吧。

    Comment by atppp — June 14, 2008 1:37 am UTC #

  8. Windows 共享文件协议叫做 SMB 或者 CIFS,samba 该协议一个开源实现。

    Comment by yami — June 14, 2008 11:13 pm UTC #

  9. 谢楼上指导!

    Comment by atppp — June 15, 2008 12:07 am UTC #

  10. 802.11g plus 分两派,一派是 Broadcom 搞的 Afterburner 技术,可以实现 125Mbps 的速率。Linksys、Asus、Buffalo都有用到,不过商业叫法不同。Linksys 叫作 Speedbooster,Buffalo 直接叫作 125 High Speed。
    另外一派是 Atheros 搞的,叫做 SuperG 技术,速率是108Mbps。这个技术很霸道的,它会同时占用几个无线信道来传输。这样对自己固然很好,但是对周围的用户来说就惨了。我记得某网站有详细的 Super G 评测报告。

    另外提一下,2.4GHz 在不同的国家和地区频道数略有差别。似乎是日本多一个 ch14(也许是少一个,记不清了)

    802.11n 的标准似乎现在是 600Mbps 了

    Comment by xiaoding — March 11, 2009 6:18 am UTC #

  11. 谢 xiaoding 光临指导~~~

    另:你的机器猫 gravatar 很可爱,可惜这个 theme 不显示,哈~

    Comment by atppp — March 11, 2009 10:48 am UTC #

  12. “至少可以达到 11 MiB” 至多,不是至少

    Comment by helloMOTO — July 17, 2012 12:27 am UTC #

Leave a comment

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

This weblog is licensed under a Creative Commons License.
Powered by WordPress. Theme based on Pool by Borja Fernandez.