用于网络测量的 IEC 或 SI 单位(二进制前缀)?

网络工程 标准化
2021-07-20 20:57:18

在使用与计算机网络相关的十进制(10 的幂)测量单位和二进制(2 的幂)测量单位(特别是数据传输,还有文件大小)时,SI 和 IEC 二进制前缀的正确使用指南什么?

Wiki 页面详细描述了问题和不同的解决方案。我发现上面链接的 Wiki 页面有点混乱。

我总是将 SI(十进制)单位用于数据吞吐量和 IEC 值(2^ 的二进制前缀)用于文件大小。然而,我不时看到人们使用1024总和的倍数来计算速度

我一直用1000的倍数来测速,比如1Kbps=1000Bps;

  • 100 bps == 100bps(每秒比特)
  • 100 000 bps == 100Kbps(每秒千位)
  • 100 000 000 bps == 100Mbps(每秒兆位)
  • 等等...

在测量文件大小或内存时,我一直使用 1024(二进制前缀)的倍数,例如 1KB 文件的大小为 1024 字节;

  • 100Bs == 100B(字节)文件
  • 100 000Bs == 100KB(千字节)文件
  • 100 000 000Bs == 100MB(兆字节)文件
  • 等等...

网络和客户之间存在一定的差异。一个标准的计费问题示例是 ISP 的客户每月有 50GB 的带宽限额。不同的操作系统对速度和内存使用不同的测量单位,并使用不同的 IEC 和 SI 前缀显示它。关于操作系统和软件的同一 Wiki 页面的这一部分列出了操作系统和软件包之间的差异,这些软件包将不同的前缀与度量单位混合并匹配。

ISP 可以测量 50GB 传输的数据(1024^3) bytes * 50 == 50GBs(1GB == 1073741824 字节)。当达到 50GB 限制时,用户可能会不同意。例如,机器显示 Gibibytes 的用户将显示 46.57 Gibibytes 传输。

从网络的角度

  • 50GB 位: ((((50GBs*1000)*1000)*1000)*8)=400000000000 bits
  • 一小时内复制 50GB 的 Bps: (((400000000000/60)/60)/24)/24=192901.23
  • 此速度(以 Mbps 为单位): ((192901.23/1000)/1000)*24*24 = 111.11Mbps

Gibibyte 就是这么多位:((((50GiB*1024)*1024)*1024)*8)=429496729600更多。因此,以 111.11Mbps 速度运行 1 小时的链接没有传输 Gibibyte。

纯粹从这里的网络和技术角度来看(在公平使用政策或 T&C 等方面不合法),最佳实践是什么,始终使用 mega/giga/tera 或 mibi/gibi、IEC 或 SI 符号进行测量和监控等?你如何保持一切统一?

1个回答

前缀的不同通常来自于人数统计的专业背景。

电气工程师在物理学方面具有很强的专业背景,就像物理学家一样,他们倾向于使用 10 的幂。另一方面,计算机科学专业人士倾向于以 2 的幂计算所有事物,因为这在他们的上下文中更有意义。

由于 OSI 模型最底层的两层(Physical、Data-Link)的标准大多由电气工程师(例如 IEEE/ITU-T)编写,因此这些层中的标准测量单位通常是 10 的幂。这就是为什么千兆以太网以 1*10^9 bps 而不是 2^30bps 的标称速率工作的原因。

OSI 的其他层通常由计算机科学家/软件工程师(例如 IETF)标准化,它们倾向于以字节或二的幂(2^3 位)来衡量事物。这就是 2 的幂开始出现的地方。这确实会产生转换问题。

在硬盘驱动器中也遇到了同样的转换问题——电气工程师构建了存储 1,000,000,000,000 字节的设备,并将其称为太字节驱动器;而由软件工程师编写的操作系统报告说,同一个驱动器只能容纳 931 GB。再加上营销人员喜欢在广告中写出最好的情况,整数,你会得到一个非常混乱的画面。

我希望这在某种程度上清除了图片。作为一种好的做法,我建议对 2 的幂的单位使用二进制前缀,而不是覆盖术语“Kilo”以表示 1000 和 1024。在过去几年中,这些前缀的使用增加了,您可以发现它们在许多文档和用户界面中使用。这在同时包含 2 的幂和 10 的幂的文档中尤为重要。在此类文件中,应向读者提供关于 SI 和二进制前缀之间区别的注释,并且所有为 2 的幂的单位都应使用二进制前缀书写。