为什么我们提到的网速在上传、下载时要除以8_-洋耗子
这个问题的深层关系是:计算机和通信是两个不同行业,有不同的关注点。
在通信业,我们关心的是数据如何从A传到B。那么,作为二进制数据,只能表达1和0的bit是天然的基础单位。而且这个bit,刚好还能和物理层面的脉冲信号相互对应(严格来说,脉冲信号是和码元才是一一对应,和bit是成比例对应。不过为了不过多引入其他诸如编码、码元进制等概念,就先这么说吧)。接下来做什么信号衰减、信号干扰、信噪比、信号转发之类的东西,都很方便。所以,通信行业拿着一个设备说我这台设备收发速率是“100bps”,实际上它想说的是:说这台设备一秒钟能收发/处理“100个信号”——当然,我们从计算机的角度来说,就是它一秒钟收发/处理“100个bit”——但这两种说法虽然意思相近,但实质内涵是有不同的。
但是在计算机业,虽然我们关注的也是1和0组成的二进制数据,但我们其实关心的是这些1和0所表达的含义。那么,一般情况下,只能存1和0的一个bit是表达不了什么特别有意义的内容的。所以,一般都用8个bit捆成一个byte来作为基础单位——好歹一个byte,存字符能放得下一个ascii字符,存数值能存0-255。甚至很多时候,我们还觉得一个byte也不够用,就继续捆成2byte、4byte、8byte来用。
所以,isp运营商,作为通信业中的一员,他们在采购设备、设计规划通信网络等等时候,自然使用的是通信业的概念和指标。
而你在计算机里看到的和显示的数据,自然又是按照计算机习惯的标准来。
看了不少其他回答,好像还是有不少觉得就是个除八乘八的单位转换问题。
那我就补充一下一些不被人注意到的小历史吧。
其实bit这个概念,要远远早于计算机出现的年代。大家看过谍战片,都应该对特工们偷偷发电报的那个滴滴答答的情节有印象吧?那里的每个滴答,就是一个bit,分别代表1和0(专业称谓是:dit和dah——不要问他们两和1/0到底谁代表谁,因为那个年代,人们不习惯用数字来代表二进制)。
而实际上,bit的出现,就是跟随远程电报业而出现的。最早的电报,大约在鸦片战争年代,大约在洋务运动年间传入了中国。到了甲午年代,我们看历史书上常见的什么“xxx通电下野”之类的“通电”,其实就是“通过电报广而告之”的操作——也就是说在那个年代,中国也已经有了完善的(有线)电报网络了。
而在那个年代,因为都是人工按出来的滴答,业内关注的速率其实不是bps,而是bpm(每分钟多少bit)。我的某位长辈,建国初期先是当通信兵,后来进入邮电。他们当年的职业技能大赛的永远不变的一个项目,就是比谁的bpm更高(包括发报和听报)。
说完了bit的起源,那就说说编码——因为大家都关心的是内容,而不是bit:
在电报盛行的那个年代,国际上最通行的字符编码就是摩尔斯码——大家熟知的代表紧急情况的SOS就是。但应该极少人留意到,摩尔斯码它就不是8bit代表一个字符的。它甚至已经极为超前的使用上了变长编码——英文字符1-4bit,数字统一是5bit。说来有意思,我当年宿舍有个哥们,在研究透彻了unicode编码后,顿悟,大赞这种变长编码乃前无古人后无来者的登峰造极之作。然后,捉狭的我就打印了份摩尔斯码表给他……
而另一个我们熟知的编码:ASCII码,有两点冷知识:首先是它不是一个8bit编码,而是一个7bit编码。其次就是,它的出现同样早于计算机。所以,是的,它最早也是用于电报业的。它之所以能替代摩尔斯码,主要是那个年代电报公司已经基本不再用人工按出滴答了,已经是按键盘上的字母,然后机器自动转换为滴答编码发送,所以定长(便于机器处理)且能容纳更多字符的编码自然就更受欢迎。
那么,到了计算机出现后,就终于出现1byte=8bit了吗?不好意思,还是没有。早期计算机,1byte=Nbit的N的范围,从7-10都有——应该不会有比7小的(毕竟连ascii码都放不下的,造出来也不大可能受欢迎),但可能有更冷门的会超过10也说不定。而受此影响。在早期就出现的计算机编程语言:C和C++的标准文件中,同样明确说了这是留给各厂商自行决定的:A byte is composed of a contiguous sequence of bits, the number of which is implementation defined. ——这个规定至今尚存。
而我所知道最早的,明确规定了8bit为基础单位的,应该是互联网协议规范里(记得它用的还不是byte这个词,而是octet——而octet这个词,本身就来源于拉丁文的8)。自那以后,为了便捷的接入互联网,以及便捷的处理互联网报文,大家才逐步开始逐步把软硬件设计统一到1byte=8bit这个关系上——具体时间点应该不早于80年代早期。
所以,8这个比例关系,实际上出现得非常非常非常晚(和通信业相比),只不过因为互联网大流行以及之后的兼容性处理,导致人们对它极为熟悉而已。
总之,在通信业看起来,你们多少个bit捆起来,那都是你们的事——当年摩尔斯码一统天下的时候,老子就是按bit来算的。现在互联网席卷一切,老子当然还是按bit算。说得难听点,莫尔斯码一统天下的时间,可比互联网长多了。所以,城头变幻大王旗,谁知道以后会不会又有个什么大流行的编码变成100bit呢?不过就算真的有那么一天,我相信通信业的兄弟还是会给我们一句话:老子还是按bit算 。
评论区
一万: 其实你这么说那些不懂的人还是看不懂,我一般给他们理解都是直接说通信业传输数据最小单位是bit,而计算机业习惯用存储数据计算最小的存储数据1B=8bit相当于网线每传输8个数据计算机上才会保存1个数据所以办理宽带那个网速要除以8才是电脑上反馈出来的那个网速数字,这么说个大概意思就行了,要不然越从底层那些什么电信号二进制去解释的话普通人越是会产生一种厌恶专业知识的逆反心理就越是觉得非常复杂更不愿意了解清楚了[捂脸] 👍🏽146 💭重庆 🕐2024-03-04 22:38:42
│ └── 红雨瓢泼: 我感觉你说的比博主更好 👍🏽4 💭江西 🕐2024-03-04 22:55:42
│ │ └── 徐三: 看来我不是普通人,感觉楼主说的更好些[思考] 👍🏽2 💭山东 🕐2024-03-05 09:08:25
│ └── Markov: 对于大多数的普通人来说是这样的 👍🏽0 💭广东 🕐2024-03-04 23:43:34
│ └── 夏夏: 面向人群不一样目的也不一样,博主这样讲我觉得挺好 👍🏽22 💭四川 🕐2024-03-05 01:58:00
│ └── 知乎用户mDlxxx: 他们会说奸商, 👍🏽1 💭河北 🕐2024-03-05 08:04:23
│ └── 简迅: 你说的比答主好 👍🏽0 💭上海 🕐2024-03-05 09:36:02
│ └── Venus: 你说的比答主的更易于和小白解释。答主的回答适合有基础的看,作为扩展,写的还是很好的[大笑] 👍🏽1 💭广西 🕐2024-03-07 12:47:50
│ └── 左江: 也许你的答案更容易让人看进去,但回答问题并不是只为了让人看进去。科普一些历史渊源一样有人有兴趣比如我。你和答主对目标受众考量不同,行文自然有区别。倒也不必讨论怎么写能让更多人喜欢看。也许是否更多人喜欢看本身不是答主回答的目标之一呢。 👍🏽0 💭广东 🕐2024-09-13 17:32:49
Amaterasu: 更严格地讲通信业关注的是波特率? 👍🏽30 💭北京 🕐2024-03-04 12:30:08
│ └── 洋耗子: 对。只是在特定信道下,波特率和比特率是可以等比转换的。所以不太想碰具体的调制、信道之类的问题时,说比特率会简单点。 👍🏽32 💭广东 🕐2024-03-04 13:23:33
闲助: 就好比买螺丝的用户是按“粒”做单位而卖螺丝的商家是按“斤”做单位 👍🏽25 💭广东 🕐2024-03-04 23:28:41
yn wang: bit就像是笔画,byte就是笔画组成的字(这里设定一个字最少8笔)… 👍🏽12 💭山东 🕐2024-03-04 23:07:52
一架老爷车: 这就和乐高一样,厂家都是按“颗”计算生产能力,而买家需要按“套”买来拼装,“一颗乐高积木”对他们没任何意义。所以厂家说“我一年能做一亿颗乐高积木”,但买家说“你扯淡,明明只卖出去了一百万套”。这两个数都没错,只是角度有偏差。 👍🏽11 💭湖北 🕐2024-03-05 16:13:13
黑蛋: 那么问题来了,为什么不统一单位?是为了显示自己说千兆网速更牛逼,这样更好“忽悠”消费者?[惊喜] 👍🏽7 💭山西 🕐2024-03-04 23:02:36
│ └── feisfw liu: 因为这是两个专业,两个不同的行业,开头就已经说了。 👍🏽38 💭山东 🕐2024-03-04 23:22:12
│ └── 尼拉克: 因为怕你太聪明[吃瓜] 👍🏽3 💭天津 🕐2024-03-04 23:40:55
│ └── Giswhich: 你是一个字也没看进去 👍🏽78 💭广东 🕐2024-03-04 23:47:48
│ └── 白逝丶: 供水局的人会说自己的供水能力是xx每小时,桶装水厂会说自己的灌装能力是xx桶每小时。在普通人看来都是水没什么区别,但这其实是两个完全不同的行业,所以行业不同,术语不同。这不很正常吗。 👍🏽27 💭广西 🕐2024-03-04 23:49:54
│ └── 反人类栀子花: 第一,供应商沿用了他们的单位第二,不换单位确实看着更牛逼 👍🏽4 💭福建 🕐2024-03-05 00:06:33
│ └── 风雪微霜: 计算机要传输有效数据需要至少8个比特才能表达,而通信只需要01即可表示有效数据。两个需求不一样,就像能量一般用焦耳,电量用千瓦时 👍🏽3 💭上海 🕐2024-03-05 09:17:59
│ └── 洋耗子: 8bit的单位由来我已经在正文里补充了。你看完之后如果还觉得应该统一单位,那么就请先思考一个问题,应该统一到bit?还是统一到byte? 👍🏽0 💭广东 🕐2024-03-05 20:01:21
│ └── Gcrawl: 因为传输过程中8bit不一定是1byte呀 还有校验位之类的 👍🏽1 💭浙江 🕐2024-03-20 18:45:13
│ └── 知乎用户7Owjc6: 例子举错了,奸商不是网络运营商。单位很统一!k是一千,M是一百万,G是十亿,所有的都一样,以10为倍数,底数是10。就是个计量简称而已,对应科学记数法10的3次方,10的6次方,10的9次方。只不过,计量的东西不一样,通信行业计量的是b,就是位。你工资可以说10k或者0.01M嘛。生活中都是10为倍数计量,很统一。计算机存储中特殊了,计量倍数是2,所以底数是2了,2的10次方叫K,2的20次方叫M,2的30次方叫G。换算单位不是8,而是1024×8÷1000,还有个“24”。卖硬盘的才是奸商,他们的B一样,K、M是按公制的一千,一百万算的,实际应该是1024,1048576,这一下就少了很多。查看图片 👍🏽0 💭安徽 🕐2024-08-07 11:59:02
知乎用户DUkTu4: 今天遇到一个客户了,200兆的网络,看到网速是20M/b,就觉得是“交换机降速”什么的。我一恼火就“委婉”跟他说“这个涉及到外网,是运营商的事,要不您打个10000的电话问问客服?”[doge] 👍🏽8 💭广西 🕐2024-03-04 22:38:24
│ └── 摆了: 客服:阿米诺斯! 👍🏽2 💭上海 🕐2024-03-05 07:55:12
我的生活很奇怪: 通俗易懂,计算机面向字节,通信面向比特流。[赞同] 👍🏽4 💭河南 🕐2024-03-05 08:30:00
经常快乐的煲仔饭: 一个字节等于8比特呀 👍🏽4 💭广东 🕐2024-03-04 22:47:26
│ └── 折翼的787: 谁告诉你一个字节一定等于8比特?你习惯了8比特就要求全球都用8比特了?在音视频之类的行业多的是10比特或12比特的地方,24比特的都有。 👍🏽5 💭广东 🕐2024-03-06 09:02:38
│ │ └── iaoat: 一个字节一定等于8比特早就是事实标准了,可没见哪个音视频的标准规定一字节不是8比特 👍🏽0 💭江苏 🕐2024-05-24 22:29:52
│ │ └── 折翼的787: 那是因为你限定了范围,在X86架构的计算机中,便用8个比特来表示一个字节。实际上在通信中为了传输一个字节,需要传输的比特数往往不是8比特~但凡你增加一个奇偶较验bit它不就变成9比特了么? 👍🏽0 💭广东 🕐2024-05-25 14:50:54
│ │ └── 嘲讽哥哥: 这个不是一个概念啊,一个字节等于八比特是定义啊,传输一个字节需要多少个比特并不影响一个字节等于八比特这个定义啊。比如说你只有50kg,把你从北京发往上海需要1000kg小汽车+50kg你,你并不能说你等于1050kg啊 👍🏽1 💭江西 🕐2024-08-29 18:32:18
│ └── ramlife: 通讯里面传输的时候比较增加额外的 bit.比如最简单的 串口通信,前面都有开始,后面有停止,中间还有可选的校验。 一个 byte 实际上在通信链路上面跑,肯定是超过 8bit 的。 👍🏽0 💭江苏 🕐2024-05-03 11:52:29
王一: byte这个名字起得不好,要是换个其它首字母的词,能给后人省一大堆事[doge] 👍🏽4 💭山东 🕐2024-03-07 00:30:14
瓶水之冰: b是比特表示信息量,B是字节,一个字节8比特,就是这么简单 👍🏽2 💭重庆 🕐2024-03-04 22:41:21
MicroOps: 其实就是好看,A运营商说我的是10M带宽(10MBps),B运营商说我的是100M带宽(100Mbps),其实她俩带宽一样,你作为小白你选谁? 👍🏽3 💭四川 🕐2024-03-05 11:02:59
AwayLee: 额,就是个单位显示的问题,你说这么多,他反而理解不了。 👍🏽3 💭江苏 🕐2024-03-04 15:51:48
流浪: 另一个地方好像也有行业差异:K M G T的比值,计算机行业是1024 存储行业是1000。所以买到的硬盘如果按计算机行业算都是比标称的小的[捂脸] 👍🏽3 💭上海 🕐2024-03-04 22:55:38
│ └── YFdyh: Mac:我不造计算机啦(误 👍🏽0 💭北京 🕐2024-03-05 09:51:57
│ └── Observers: 这个是B和iB的区别,在Win上属于历史遗留问题,你换别的系统它就是千进制了 👍🏽4 💭内蒙古 🕐2024-03-05 11:38:26
│ └── 射命丸文字游戏: 不应该说“计算机行业”,现在也就微软windows在显示硬盘容量时用1K=1024。windows自带的计算器里1KB=1000B,1KiB=1024B。 👍🏽1 💭海南 🕐2024-11-06 15:42:35
bob: 到了硬件设计上,通常都说的是多少Hz,你要换成字节就自己换算吧。[大笑] 👍🏽1 💭四川 🕐2024-03-12 18:12:59
LaLuAcLr: 所以为啥ddr是MT/s[大笑] 👍🏽1 💭上海 🕐2024-03-05 00:17:33
dtwwin: 字节基本上是历史遗留问题了。 👍🏽1 💭河北 🕐2024-03-05 08:28:27
董董: 通俗易懂。 👍🏽1 💭广东 🕐2024-03-04 22:11:20
qwerty吃小庄: 明明就是比特单位小显得数字大[doge] 👍🏽1 💭江苏 🕐2024-03-04 13:02:52
│ └── 瓶水之冰: 这个不至于,比特的概念应该比字节早,而且通信里面字节基本上没啥意义,通信不关心具体传输的信号对应什么信息 👍🏽5 💭重庆 🕐2024-03-04 22:45:35
│ └── qwerty吃小庄: 但是关注波特率呀…… 👍🏽0 💭江苏 🕐2024-03-05 15:34:09
│ └── 洋耗子: 如果真想数字大,那就应该把调制速率拿出来,轻轻松松再翻倍。 👍🏽0 💭广东 🕐2024-03-05 20:09:58
tester: 确实有6bit编码,这种编码甚至连小写字母都不支持。目前的遗留就是fortran里面用.LT.和.GT.表示大于和小于,因为当时编码里面没有小于号和大于号。C语言里面有digraph和trigraph也是这种编码的遗留。 👍🏽1 💭广东 🕐2024-03-25 18:05:50
射命丸文字游戏: 最初ibm宣传自己的硬盘产品时,表示容量用的单位是字符和数字,当时纯数字应该是4bit 👍🏽0 💭海南 🕐2024-11-06 15:37:11
编号89757: 主要是b和B是同一个字母,大小写不一样罢了。局外人对这个又没有敏感性,所以觉得b和B是同一个单位(就像kg和Kg大家也不关心k是大写还是小写,都默认是千克),所以造成了误解。如果比特用P表示,字节用B表示,就不会有这种误解了。 👍🏽0 💭浙江 🕐2024-07-03 10:11:53
洪荒点灯人: 楼主大才。“计算机和通信是两个不同行业,有不同的关注点。”我立刻茅塞顿开。解决了困扰我多年的疑惑。善哉善哉。[拜托] 👍🏽0 💭北京 🕐2024-05-20 18:57:00
tearshark: 红白机 👍🏽0 💭四川 🕐2024-03-20 12:16:34
山上彻也: 莫尔斯码属于等幅电报,开启是1,关闭是0。它的编码效率比你想象的还要低一些,“滴”对应“1”,“答”对应“111”,滴和答之间的间隔对应“0” 👍🏽0 💭中国香港 🕐2024-03-11 10:01:54
zsk: 保留第一段、第二段第一句、第三段前三句就可以了。 👍🏽0 💭海南 🕐2024-03-08 10:50:43
路障MKX: 早期有1Byte=6bit的计算机,字母不区分大小写就行了 👍🏽0 💭北京 🕐2024-03-07 12:12:49
小肥羊: 存在7bits=1byte的计算机吗?4004应该是4位数据线,然后8008是8位,8086是16位除此之外,8个bits可以和十六进制便捷的转化,但是显然7个bits不能和十六进制方便的转化,至少得是2的整数次幂个bits为一个byte吧,4个太少16个太复杂(对于早期而言),8bit似乎是很合理的 👍🏽0 💭陕西 🕐2024-03-06 10:43:50
│ └── 洋耗子: 首先,为什么一定要和16进制转化呢?如果是为了显示,那么一个字节的显示范围是0-0x7B,并没什么问题。然后,在早期集成电路工艺还不成熟的年代,节约一两条地址线,以及存储单元的减少,会带来成本上和工艺上的简化。最后就是,在不考虑国际化,只考虑美国内部用户的话,依循ASCII标准(这大概就是美国国标)显然是一个理所当然选择。 👍🏽1 💭广东 🕐2024-03-06 10:54:25
│ └── 小肥羊: 理解了,感谢 👍🏽0 💭陕西 🕐2024-03-06 11:09:24
鸷鸟不是一种鸟: 大佬[赞同] 👍🏽0 💭福建 🕐2024-03-05 18:11:51
呆萌: 对于大多数民用带宽来说,上行比下行要高8倍,难不成上下行单位还不一致? 👍🏽0 💭河南 🕐2024-03-05 11:24:16
│ └── 洋耗子: 不,这个真的是速度不一样。在早期,在基本都是单工伪装成双工的年代,这么上下行不对称链路可以节约设备性能。到了后来,设备性能上去了,那不好意思地说,这纯粹就是业务需要:因为对上行带宽要求更高的一般是企业,所以开通更高的上行带宽能卖更高的价格。例如说企业宽带,你看着带宽不高但是价格贵好几倍,主要原因就是它这带宽是上下行对称的。 👍🏽3 💭广东 🕐2024-03-05 11:30:38
│ └── 普通市民郑先生: 市场上终端用的都是下行居多,上行很少用到,即使用到占用的速率也不大,为了花同样钱铺设更多能卖得出去的资源,下行链路远多于下行,你要买对等线路就加钱,民用不对等也够用 👍🏽2 💭北京 🕐2024-03-05 16:47:54
默默沙: 通俗易懂 👍🏽0 💭山东 🕐2024-03-05 00:15:00
大头: 宽带业务刚出现时,当时标多少就是多少,家第一条宽带是128k,迅雷下载确实能达到100k上下。然后上学了,在宿舍也办了128k的宽带,结果下载只有十几k,打客服说,这个速度是正常的[飙泪笑]。 👍🏽0 💭广西 🕐2024-03-05 08:58:57
│ └── 洋耗子: 在你说的家庭普遍128k宽带(ISDN/早期ADSL)的年代,我恰好就在中国电信上班,所以我可以非常确定的告诉你:你记错了。 👍🏽1 💭广东 🕐2024-03-05 09:01:43
│ └── 纷繁: 拨号上网猫时代说56k就是56k吧 👍🏽0 💭安徽 🕐2024-03-05 10:38:26
│ └── 洋耗子: 同样是bps。 👍🏽0 💭广东 🕐2024-03-05 11:20:33
│ └── 大头: 早起单位应该是字节[飙泪笑] 👍🏽1 💭广西 🕐2024-03-05 17:33:52
│ └── 洋耗子: 又一个记错的。。。别争了,通信行业从来都不碰byte这个单位——哪怕是计算机和通信杂交的互联网,用的都是octet吗?更何况,在窄带年代,互联网还不是电信的主营业务——人家那时的主营业务是语音通话,根本犯不着为了这个看着不怎么赚钱的互联网去引入一整套新东西。 👍🏽4 💭广东 🕐2024-03-05 19:52:58