以太网进化历程半景-从10Mbps到1Tbps

继Netfilter conntrack,Linux Bridge之后又是一个半景,依然如故,我不会在文中罗列技术规范和细节,仅仅是希望本文可以帮助人们理解以太网到底是什么,为什么如此成功。

0.动机,愿景以及声明

前端时间帮朋友解决一个编码问题,碰到了全双工这个概念,正好写了一个程序,实现了类似CDMA那种沃尔什编码,即从一个混合信号中分离中自己要的那部分,然而代码是好写的,往线缆上一放就全乱了,这是电学原理导致的。就这么说吧,请看下图:

请问P点的电压是多少?很简单的一个问题,是不是?是的。
       好吧,由此我想到了以太网1000BASE-T的全双工原理问题,觉得挺有意思,一发不可收拾,就想写一篇文章来科普一下以太网的发展历史,这期间也感谢华为著名主音吉它手的帮助。
       以上就是我写本文的动机。
       那么写点感言吧。我记得刚刚进入郑州大学读大专后,有一次我老婆特意跑到学校去看我,跟我一起去上课,该节课是制作网线,分为交叉,直连线,其实无非就是1/3和2/6线序对调一下即可,还要背下来那一堆线对的颜色序,我本来是可以在这里摆一下的,但涉嫌卖弄就算了,其实直到现在,我还是能把线序颜色背下来的,我做的网线堪称一流手艺,不光如此,我说我可以最大化水晶头附近的抗干扰性能(毕竟那一段是撸直了的),你信么?反正我老婆当时觉得可高大上了...我们大专跟普本科班不一样,我们一开始就是实战,不会讲什么原理,也不会讲什么编程。我们第一节网络课大致说了下TCP/IP的概念,第二节课就教做网线了,我的那些理论以及编程知识都是后面补的,主要是利用周末,晚上的时间自学或者请教别人。
       但是时隔十多年了,我依然会记得大专时的那两年,并且我不会忘掉那两年所学的那些简单且实用的东西。我敢肯定,科班的人80%以上做了程序员以后根本就没有做过网线,不知道网线钳,测线仪怎么用,而我最近一次做网线是半年前。当然,这种活儿体现不出什么技术含量,比较低级,也不值得炫耀。
       问题的另一端,80%的程序员知道以太网的发展史吗?这就显得重要的。如果你知道100Mbps以太网是如何进化到1000Mbps以太网的,那么即便你不看10Gbps的规范,你也基本能把它猜的八九不离十,如果你恰好又有足够的资源,那么可能第一块100Gbps卡就出自你手,借古知今,让你知道进化道路上多种可能性,这是无比重要的!
       所以我有必要把以太网的历史描述一番,希望能对自己和希望了解这方面的人有所帮助。这是我写本文的愿景。
       有了动机和愿景,我还要有一段声明,本文中几乎不会有技术规范名称和术语,比如IEEE802.3ab/ae,568A/568B等,之所以这样,我想的是要用最简单的通用语言来讲述一个故事,而不是描述一个技术规范。在涉及到4B/5B,64B/66B编码的时候,我也不会给出编码细节,只是给出一种思路,我知道,这种细节都是可以查得到的,我希望的效果是举一反三,得其意而忘其形,仅此而已。

1.关于分组交换

什么是分组交换?分组交换的核心在于两点:
理论上:统计复用
操作上:存储转发

其中统计复用是非常复杂的,它有别于固定的时分复用,时分复用的核心是时隙划分,载波,以及信号调制,然而统计复用的核心则是多服务台排队理论,这是数学范畴里一个非常复杂的理论。
       对于传统的时分复用载波网络,要想发送一帧数据,必须等待分配给自己的时隙到来才可发送,并且发送的长度固定,如果所有的帧不足以填充所有的时隙,那么在这些空闲的时隙里,发送的就是空载波。对于统计复用网络,想发一个数据帧,随时都可以发,但是该帧如何通过信道,则需要仲裁,这种仲裁是符合排队理论里的原则的,如果没有要发送的帧,则信号便处于空闲状态。
       那么以太网是什么?
       以太网当然是一种分组交换的网络,在统计复用的层面上,各个站点表现为随时可以发送帧,在存储转发的层面上,体现了一种仲裁方式,最初,各个站点一起参与仲裁,后来出现了集中式的仲裁设备,即以太网交换机。

2.第一代共享总线以太网

以太网刚刚诞生的时候,速率为10Mbps,其首要的目标其实并不是什么“存储转发”,而是“如何随时把帧直接发出去”。至于出现了以太网交换机实现了直观的分组交换动作,那是后来的事了,出现交换机其实是为了解决一个仲裁问题。仲裁什么呢?很简单,只要是共享资源型结构,都需要仲裁谁可以占用资源。
       第一代以太网为了直接发送帧,所有的站点都连接在一条共享的总线上,是为总线型以太网。这个时候没有什么单独的仲裁设备,所有的站点都参与仲裁过程,机制是由一种叫做CSMA/CD的协议完成的,它的感官视图如下:

以下我们看一下该协议在时间序列上如何运作,先看一下有冲突的情形:

再看下如果没有冲突,即成功发送帧的情形:

值得注意的是。CSMA/CD可能采用了一个不太恰当的名字,以至于人们总是将“冲突”视作一件不好的事情。事实上,捕获到冲突仅仅表明总线型以太网的仲裁机制正在正常发挥作用,而不是发生了什么坏事!所以,如果有人问“能否避免冲突或者减少冲突”之类的问题,你除了反讽一句之后完全可以拒绝回答这类问题。造成这种误解的原因完全是因为冲突一词自带了贬义,仅此而已。
       共享式以太网通过CSMA/CD仲裁机制直接发送数据帧,不带存储转发机制,我们接下来可以看到,随着以太网规模的发展壮大,亟需一种更加高效的资源仲裁机制的出现,那么以太网交换机千呼万唤始出来。

剧透:CSMA/CD与双线全双工

后面我们会面临一个问题,1000Mbps以太网是如何让信号在一对双绞线上双向全双工传输的呢?这理解起来可能有点困难,假设共地的情形,这意味在一个线缆两端同时输入电流脉冲,然后两边分别要能收到对端的输入脉冲信号:

当我们看到了CSMA/CD的原理之后,会发现这两端的两个信号到了线缆中间肯定会“冲突”,结果就是两个信号叠加在一起,然后两边收到的是完全相同的两信号叠加的结果,其实只要信号脉冲放在线缆上,就会快速传播到线缆的任何地方,途中所遇其它信号,便快速与之叠加融合,然而技巧也这正是在这里,如果说“冲突”是一种信号相加的话,那么只需要在接收端执行信号相减,便可以获得对端的信号,原理上很简单。这也是1000BASE-T的全双工基本原理。
       那么为什么共享式以太网没有用这种机制还原信号呢?因为这种方式还原信号有个前提,那就是线缆必须有且只有两个线端,如果线端超过两个,为了还原一个信号,就不得不用总信号减去所有除了需要的信号之外的其它信号,这是一个无解的问题,因为这不是一个非我即你的问题。举个例子,如果只有我和你两个人,那么如果闻到一股屁味,一定可以知道是谁放了屁,但是如果有三个人或者三人以上,便没有任何办法知道是谁放了屁。

3.交换式以太网

第一代的共享式以太网采用了一种分布式仲裁方式,那么仲裁的效率自然就取决于网络的规模。在分布式仲裁中,每台主机均参与仲裁过程,自然而然会随着主机的增多而增加仲裁的成本。这简直是一个真理。在IP路由中,我们可以看到类似的事实,分布式的RIP无法适应大规模(大于16跳)的网络,而统一链路状态全局视图的OSPF,IS-IS等就则可以应对更大规模的网络。
       从CSMA/CD的原理可以看出,随着主机的增加,冲突会增加,自然而然的方案就是降低仲裁的成本,最显然的措施就是将仲裁从分布式改为集中式,将所有的仲裁过程汇聚于一个仲裁点。
       完成这种汇聚的第一步就是消除共享,大家同时拉一条独享的线缆到集中仲裁点即可,这个集中仲裁点就是交换机。交换机拥有集中式全局视图,仲裁效率更高,如果说第一代以太网的共享资源是总线的话,那么交换式以太网需要仲裁的共享资源则是交换机端口。我们看一下交换机的原理:

这样,所有的主机站点都可以同时把数据帧发到交换机,然后由交换机决定先转发谁的数据帧,转发到哪里,其余暂时不被选中转发的数据帧如何处置这些事宜。我们来看一个转发实例:

作为对比,我们来看一下传统的时分复用网络中同样的转发过程:

可以看到,交换机的帧缓存机制是根本,在帧缓存的机制之上,可以灵活配置帧队列调度的策略,它完全不同于时分复用的载波网络,在后者中,没有帧缓存的过程,每一个帧到达时,均会被即时安排到一个特定的时隙中传输,或者在时隙满载的情况下被丢弃,这就是统计复用以太网和传统时分复用载波网络的根本区别。
       在出现了交换机之后,以太网进入了交换式时代,这是一次根本性的蜕变。从此就踏上了一个持续进化的正道!我们先从传输介质开始,然后看看传输信道的特点,最终俯瞰一下以太网的进化历程。

附:类比PCI/PCIe总线

如果你对PCI总线比较感兴趣且熟悉的话,你会发现PCI总线经历了和以太网几乎一模一样的历程,也是从总线拓扑逐步进化到了PCIe交换式星形拓扑。由于此处本文刚刚开始,不便剧透太多,然而还是忍不住多说一句,后面我们会看到,以太网在从100Mbps进化到1000Mbps以及10Gbps,40Gbps的过程中,PCI总线也在用同样的方式进化,它们共同的方法就是加法优化,即将多条带宽相对较低的链路汇聚成一条带宽很高的链路,双绞线是使用多个线对,PCIe则是使用多个Lane,我们经常听说PCIe是x1,x8,x16的,意思是说它合并了1个,8个,16个信道,这也是一个通用的优化方案,倒不是说英雄所见略同,而是成功的道路往往只有一条。

4.传输介质-双绞线

在以太网出现之初,它使用了同轴电缆,这实际上是最直接的方式,这是CSMA/CD这种分布式仲裁机制使然,你看看任何总线结构,不都是一条信号线一条地线吗?包括电灯都是如此。
       当这种传输介质确实可以传输人们所期望的0,1二进制流的时候,人们就不再仅仅满足于能传输即可,这是人的欲望使然。人们希望传输效果更好!
       还是旧瓶装新酒,以太网利用了双绞线!
       什么是双绞线?其实就是电话线。这玩意儿是亚历山大.贝尔在1881年的时候申请的专利介质,此后便用了100多年,一直到现在。我找了一幅图:

请注意,这个双绞线并不是TCP/IP网络的产物,它是100多年前贝尔发明的,希望IT科班的不要误解以为只有计算机才是高科技。我们来看一下这个双绞线有何神奇之处。总的来讲,双绞线用朴素的物理方式成功抵御了电磁干扰,这是怎么做到的呢?
       传统的电话线是一对双绞线,显然它的双绞是为了抵抗外界的干扰,请看下图:

而双绞线可以以不同的绞距多个线对编织,比如我们常见的5类双绞线,那么这些线对之间是如何抗干扰的呢?请看下图:

只要有中学的物理基础,就能理解双绞线为什么可以抗干扰,不管是外界的干扰,还是多线对之间的干扰。这在现代人看来确实是一种非常朴素的抗干扰方案,即便是在100多年前也确实谈不上是高科技,然而就是这种朴素的方案让人们受惠了100多年。我一向倾向于认为凡是伟大的科技都是简单朴素的。
       看完了双绞线,我们来看一种为双绞线助力的稍微显点科技含量的不那么朴素的方案,这也是一种抗干扰的手段,这就是差分编码技术。

5.传输信道-差分信道

差分编码的原理非常简单,就是利用了一个水涨船高的事实。
       按照数字编码原则,如果我们把二进制0编码为电压+5V,1编码为电压+10V,那么如果外来噪声使得整体电压提高了5V,那么本来会被解码为0的+5V被提高到了+10V,被解码为了1,这就出现了问题,这个问题的根源在于电压参考点是大地,而大地是一个绝对的参照点。如果不以大地作为参照点,而是另一条导线上的相对电压为参考点是不是就能解决问题呢?答案是肯定的,如果有干扰,那么干扰源不但干扰了本条导线上的电压,而且也把同样强度的干扰加载到了另一条导向上,那么两条导线上的电压差是不变的,这就是差分编码的原理:

只需要将一路信号变换为相位相反的两路信号即可,这在电路实现上非常简单。
       在双绞线上传输差分信号,朴素的方案和电子的方案合力,构建了以太网的简单,成熟,直接且便宜的物理层,这是以太网成功的根本。

6.以太网进化三大件总结

到此为止,我们看到了交换式以太网的核心组成构件,它们是交换机,双绞线,差分信号。在这三大件的基础上,以太网蹒跚起步。

交换机

以太网交换机这是分组交换的核心,交换机的出现类似火车变成了私家轿车,原来要传输一个帧要同时满足两个条件,一是有剩余的时隙空闲,二是要等到分配给自己的时隙,现在一切都交给交换机的调度子系统,多个完整的数据帧排队发出。

双绞线

说实话,最开始的时候,人们对双绞线是持怀疑态度的。论电气特性的方方面面,双绞线都不如同轴电缆。不要以为双绞线的绞距拥有抗干扰的神奇特征,其实同轴电缆无需将线缆绞绕在一起也能抗干扰,而且还更好,同轴电缆使用了电磁屏蔽原理,即在线缆的内外两芯之间以及外芯和线皮分别纳入一层铝制的屏蔽网,从而屏蔽干扰信号,事实证明这种屏蔽效果更好,然而也更昂贵。其实,同轴电缆属于一种见招拆招的抗干扰线缆,你不是有干扰吗?我便用加东西的措施屏蔽掉干扰,于是便加了一层屏蔽网。双绞线与此不同,双绞线属于一种小Trick,绝妙的点子,而且非常便宜。不添加任何资源,不主动屏蔽任何干扰,而是靠让不同的干扰互相抵消的方式巧妙解决问题。
       如此简单方案,人们一度怀疑能否承载10Mbps的带宽,人们很难相信一个100多年前的东西可以承载如此现代化的TCP/IP数据。然而后来的事实表明,甚至到了10Gbps时代,信号依然可以在双绞线上远距离无损传输。But why?
       我觉得无外乎两点,即双绞线便宜,而且简单:
1.便宜的方案便于量产,大量装备,且折腾得起。
2.简单的方案可以方便地重新组合,优化架构。

差分信号

如果说双绞线提供了以太网的传输骨架,那么差分信号便是配得上这副骨架的肉体,他们一起组成了以太网的躯干,交换机是这副躯干的大脑。
------------------------------------
好了,以太网的躯干和大脑都有了,现在需要为它注入灵魂了,我们来看以太网如何慢慢长大,变成巨人。我们一起来看在以太网交换机,双绞线,差分信号这三大不变的底层支撑下,以太网是如何依靠持续优化的编码,聚合,物理工艺改良的灵魂驱动下,一步步从10Mbps推进到100Gbps乃至400Gbps甚至1Tbps的!

7.以太网的持续进化

7.1.统一编码空间

也许你听过4B/5B,8B/10B,64B/66B编码,这是什么意思呢?为什么要这么做呢?我们先看看最初以太网在双绞线上如何传输帧:

注意,以太网没有固定时隙,固定时钟的概念,想要在线缆信号中识别到数据帧,看样子必须依靠特殊的符号标记。这显然是很容易做到的。然而另一方面,正是因为以太网没有固定时隙,固定时钟的概念,所有的控制,管理机制全要靠帧本身自己来做,这也叫带内控制,带内管理。
       总不能定义100个特殊二进制序列用于识别控制码吧...特别是,当100Mbps以太网在帧空闲间隙需要发送IDLE信号的时候,并不容易识别那些特殊的控制码,特别是随着控制码的需求越来越大,所有与控制码冲突的数据码全部要重新编码!这就亟需一种统一控制码和数据码的编码方案,这就是4B/5B编码的渊源,为了能使控制码和数据码可以自然分开:

这种风格在计算机编码理论中非常常用,从最基本的有符号,无符号整型正负数值编码,到复杂的ASN.1编码,基本都是万变不离其宗,思想都是一致的,即统一编码空间。
4B/5B比较简单,即将4个bit编码为5个bit,后面的8B/10B,64B/66B与此类似,只是编码效率更高,控制字符更加丰富多样而已,总之,只要开了个头,以太网就会一路走到极致,在1000Mbps中,使用的是8B/10B编码方案,而10Gbps以太网则使用64B/66B编码方案。

7.2.双绞线布局以及持续优化

我们看一下100Mbps以太网的双绞线使用方式:

这是一种最简单的以太网了,也算是以太网快速发展的成长期杰作,算是一个里程碑,基于它以太网可以直接进化到1000Mbps甚至10Gbps!在看看这一切是如何发生的之前,我先阐述两条优化的法则,即加法优化与改架构优化。所谓的加法优化就是将多个组件聚合成一个更加强大的单一组件,典型的例子就是多核CPU,并行计算,人民战争等。改架构优化往往在加法优化遇到瓶颈的时候使用,即修改一个核心组件的结构,将单一组件的性能提高一个数量级,此后又是一个加法优化的过程。简单的说,加法优化就是一个量变的过程,而改架构优化则是一个质变的过程。
       为了简单起见,我们先来看一个简单的加法优化。100Mbps以太网使用了4对双绞线的2个线对,如果把另外2个线对也用上,那岂不是成了200Mbps以太网了吗?事实上确实是这样:

然而这没有意义,我们从来没有见过200Mbps的以太网。我们的目标是想看看1000Mbps的以太网是如何生成的。
       事实上,上述那个200Mbps的以太网并非没有意义,它的意义在于让我们看到了加法优化遇到了瓶颈,此时需要改一下架构了。以往在一个脉冲编码一个bit的情况下,125M的波特率就是125M的比特率(暂时不考虑4B/5B等引入的控制开销),那么能否用一个脉冲编码多个bit呢?答案是完全可以,以往编码一个bit时,脉冲电压只有两个,一个高电平代表1,一个低电平代表0,如果一个脉冲可以有4个电压,假设为+10V,+5V,-10V,-5V的话,就可以编码两个bit了(我这里的意思是想说4D-PAM5编码,但是为了直观起见,省略了前向纠错码等细节),这样波特率为125M的脉冲,比特率就是250M。同时,如果能把波特率提高一倍的话,比特率又可以提高一倍!这样总的四对线缆上不就可以上1000Mbps了吗?

遗憾的是,提高一倍的波特率并不是简单的事,请记住,以太网的原则是简单和便宜,这也是其胜利的根本,靠加器件升造价提升性能,不是其本性。简单点说,以上的提高波特率的方式并不适合在5类双绞线上传输,必须在更加昂贵的6类线以及6类线以上的线缆上跑。如果说花1万块钱造一根1米长的线,上面跑1Tbps的带宽,那不是本事,那反倒是一件很容易的事,有钱什么都不是事,如果是事儿,那就加钱即可。以太网追求的是,在普及的5类线上跑1000Mbps的速度。所以说,需要另外的优化方案。在继续之前,先从剧本回到现实,上面那种提高波特率的方案就是1000BASE-TX的标准方案,而下面的方案则是1000BASE-T的方案。
       还记得在描述共享总线以太网时的剧透吗?现在是时候重用“冲突”了!
       如果能在一对双绞线上同时传输方向相反的两路差分信号不就完美了吗?是的,这是真正的全双工操作!但是要怎么做才行?同时传输两路信号不会冲突叠加吗?答案显然是会的。但是如果接收端可以在混合信号中把自己发送的那部分“减掉”的话,不就可以还原发送端的信号了吗?是的,非常简单,我直接给出原理吧:

以下是一个完整的原理框图:

这个原理其实也是一个古老的东西,我们使用的传统电话一直都是这么工作的,君不见主叫和被叫不都在同一根电话回路上同时分别咒骂和辩解吗?要知道电话线只有一对线,并且并非差分信号,而是一对回路,怎么可能同时两个方向传输呢?这就是双线全双工回波消除技术,已经普及几十年上百年了。

除了采用了双线全双工机制,1000Mbps还采用了64B/66B编码,这是为了提高编码效率以及增加更多的控制码,越是高速的信道上,越容易出问题,出问题时越需要迅速解决,这就对管理和控制提出了新标准,高要求。

我们看一下使用了双线全双工的1000BASE-T框图:

附:电话线,USB以及差分信号

我们看到,千兆以太网的双绞线线对中,没有单独的地线,因为所有的线缆上传输的都是差分信号,而USB传输的也是差分信号,其4根线缆却是Gnd,Vcc,D+,D-,其中Gnd就是地线,对于电话线而言,虽然也是双绞线,却不传输差分信号,而是两个绞线构成一个闭合回路,其中一根充当了参考地的作用,这是为何?因为USB是主从结构,对于从设备,比如U盘这种,一般是不接地的,也没有电源,因此必然需要单独的电源回路来为其供电,同时进入的Gnd线也可以充当信号地的作用,对于电话线而言,原因一致,你见过老式的电话接地的吗?除了连着一根电话线,没有几乎没有任何线缆,因此也是需要一个闭合回路的,如果两根绞线上同时在一个方向上传输信号,请问如何构成闭合回路。以太网双绞线则不然,两边是对等的设备,都与大地相接,自然而然闭合回路也就有了。

7.3.10Gbps以及40Gbps以太网

后面再讲10Gbps就觉得没有意思了,无非把波特率提升到了2500M,由于4对线缆已经完全用完,也就没有更对的线对可供做加法优化了,当然,提升脉冲发送频率即波特率对电路以及传输介质提出了更进一步的要求。可能铜线双绞线已经不再适用于传输如此高速的信号了,那么光纤便是一个合理的替代。不过还是万变不离其宗,我不想在写同样的篇幅来描述光纤是怎么做到的。只是想说,以太网除了简单,便宜,另一个伟大之处在于它针对同一个速率可以提出不同的多个介质规范,比如xBASE-y,其中x代表速率,而y则代表介质规范,这就意味着不必非要用双绞线来传输以太网的数据帧,你可以随意选择传输介质,因此光纤便是自然而然的选择了。要点是,你要在性能和价格之间做出取舍。以太网并非总是便宜的,它也有昂贵的规范,但前提是你得是土豪,不但要豪,更重要的是要土。
       到此为止,最精彩的部分莫过于:
1.用统一的编码视图处理数据和控制信号,以便可以随时随地插入随意的控制bit;
2.用一个电压脉冲编码多个而不是1个bit;
3.利用冲突叠加再回波消除的方法实现双线全双工。

接下来面对挑战可能不再有如此Trick的方案,然而思路是一致的。
       以太网从10Mbps到100Mbps再到1000Mbps,10Gbps,其风格是每一个世代都比前一个世代带宽提升了10倍,那么是不是意味着100Gbps的以太网正在到来呢?
       目前,对100Gbps的需求并不是很急迫,但可以预见在不远的将来,这种需求便会非常普遍,这意味着100Gbps是一定要做的,按照传统加法优化法,聚合10条10Gbps的链路显得有点昂贵,性价比不高,于是一种过渡方案便可以临时应对,这就是40Gbps以太网,即聚合4条10Gbps的链路!
       然而,这并不是一个优雅的方案!于是,我们期待着物理工艺的提高。如果10G芯片可以做的跟大米粒那么小且散热不是问题的话,夫复何求?!据说,25G的芯片将要可以量产了,那时候我们便可以拥有单路25G的速度了,聚合4个,就达到了100G。
       期待28nm工艺的普及!

8.400Gbps以及1Tbps以太网

简直是疯了!然而这是可能的。看看以太网从襁褓中蹒跚而出的情景,再看看现在,以现在为基点,看看未来,1Tbps以太网,这是自然而然的。
       问题是,有没有需求!
       老实说,400Gbps和1Tbps需求并不大,这一方面因为一般的数据中心目前很难有如此高的持续聚合带宽,对于骨干网络,短时间内基于时分复用的载波网络又难以触动其根基,所以规模化部署400Gbps/1Tbps的需求几乎是空白的。但是这并不意味着以蚕食著称的以太网毫无机会逐渐蚕食进骨干网领域,记住,以太网还有一个专门的广域网规范呢。
       于是,是否可以量产400Gbps/1Tbps以太网,取决于电信阵营以及互联网阵营双方的利益博弈,而不是取决于技术。
       也许,PTN是个契机,但也只是个猜测。

9.结束了

本文快要结束了,然而以太网的引擎可能转得正猛,让我们拭目以待。

后记

本文中,我没有提到10Mbps时期的曼彻斯特编码,因为我觉得这个话题无需Google,直接百度即可,如果你理解了4D-PAM5编码为什么好的话,就知道曼彻斯特编码为什么不好了,二者是对立的,你愿意用一个脉冲编码多个bit呢,还是希望多个脉冲编码一个bit呢?答案显然很明显吧。然而另一方面,考虑到实现的简单性,你真的能驾驭一个脉冲编码多个bit吗?这得要求多高灵敏度的物理器件啊。

时间: 04-14

以太网进化历程半景-从10Mbps到1Tbps的相关文章

TCP自时钟/拥塞控制/带宽利用之脉络半景解析

0.说明 搬家公司的人很多都穿皮鞋!Why? 这个题目不是很明确,而且这个文章比较长,也算是我的一个阶段性总结,既然是总结,就不必为题目而纠结了.在端午假期的最后来做这个总结也实属不易(假期前两天加班,没有完成预期的计划,低落),记得很早以前写那篇<TCP协议疑难杂症全景解析>的时候跟现在一个心情.翻翻以前的记录,写那个的时候是2011年的7月初,小小才刚刚半个月,如今小小已经马上5岁了,时间过得真快啊,弹指一挥间!!回首过去的五年间,最累的时候是在2011年中到2014年初这两年半的时间,有

算法进化历程之相亲数

巧若拙(欢迎转载,但请注明出处:http://blog.csdn.net/qiaoruozhuo) 题目来自于编程论坛"吴健飞飞"的提问:求4位数以内的相亲数对 2500年前数学大师毕达哥拉斯发现,220与284两数之间存在下列奇妙的联系: 220的真因数之和为1+2+4+5+10+11+20+22+44+55+110=284 284的真因数之和为1+2+4+71+142=220 毕达哥拉斯把这样的数对a,b称为相亲数:a的真因数(小于本身的因数)之和为b,而b的真因数之和为a. 版主

redis锁的进化历程

日常工作中总是会有高并发的场景,需要实现锁机制来保证序列性,接下来我们一步一步实现一个 单机Redis下完全可靠的Redis锁(ps: 如果是Redis集群的话,就存在主从切换锁失效的问题,解决这个问题的话就比较麻烦了,这里不做讨论,现有的解决方案有redlock,大家可以看下它的实现原理) Redis锁 第一版(php实现): //加锁 public function lock($key) { $redisConnect = Redis::connection(); $v = $redisCo

Linux_防火墙入门01:以太网的诞生与演变历程

一.以太网的诞生 Bob Metcalfe被尊称为"以太网之父",他来到Xerox公司第一个任务就是把研究中心多台电脑接入连接到Arpanet(Internet的前身,这个早闻名于世!就不用多介绍了),1972年底,他成功把公司的研究中心所有电脑连接起来,Metcalfe把这个网络正式命名为以太网(Ethernet),这就是最初的以太网试验原型,该网络运行的速率为2.94Mbps,网络运行的介质为粗同轴电缆. 1977年底,Metcalfe与合作者获得了"具有冲突检测的多点数

实时检索6700亿条推文,细谈Twitter搜索引擎的演进历程

Twitter的实时搜索引擎起步于一家被收购的小公司,随着流量的增长.功能的增加和服务对象的扩张,搜索引擎不断面临着新的挑战,设计经历了多次变化.本演讲将介绍该实时搜索引擎进化历程中的挑战和决策. 王天, Twitter Senior Staff Engineer, 2003年清华计算机系本科毕业并赴美留学,2005年硕士毕业后加入Google,在Mobile Search.News以及Search Quality等部门从事过近六年开发.2011年初加盟Twitter,参与了Twitter实时相

算法进化历程之“根据二叉树的先序和中序序列输出后序序列”

巧若拙(欢迎转载,但请注明出处:http://blog.csdn.net/qiaoruozhuo) 前不久在看到一个作业"根据二叉树的先序和中序序列输出后序序列",当时我参考<数据结构与算法(C语言)习题集>上的做法,先根据先中序序列确定一颗二叉树,然后后序遍历二叉树输出后序序列. 函数采用了递归算法,利用函数传入的先序和中序序列的左右边界,确定要处理的序列段,生成相应的二叉树. 基本思路是,把该段先序序列的第一个元素作为当前二叉树的根结点,然后在中序序列找到根结点.根结点

以太网线缆

以太网线缆的分类 直通线 (两端都是568a或者568b) 主机个交换机的连接 交换机和路由器的连接 直连线用于不同设备的连接 直 通线只用1 2 3 6四条 4578完全可以不用.适用于10/100Mbit/s以太网中.吉比特以太网价将使用4对线. 交叉线(一端568a,一端568b) 交换机和交换机的连接 集线器和集线器的连接 主机和主机的连接 集线器和交换机的连接 路由器与主机之间的直接连接 交叉线用于同种设备的连接 反转线(不用于以太网设备的连接) 主要用于终端设备的串行连接 比如路由器

DevOps实施历程-v1.0

?    有AF项目的成功案例(DevOps实施历程-半自动化),公司新项目全部依此为模板,实现了从代码到安装的自动化流水线,为此我输出了Jenkins自动化指南.AF项目指南等文档,方便大家查阅和参考,同时也输出了一系列规范验收所有项目自动化成果. 随着公司的发展和新人才的引进,2016年底-2017年公司先后成立了测试部门.云计算产品部,并对原有老系统进行重构,原架构由几个Python编写的模块,性能和可扩展性都面临瓶颈.新架构是Java(在线业务模块)+Python(离线管理模块)+C(C

以太网帧长度为什么不能小于64字节?

0 引言 以太网帧长度不能小于64字节这个要求很多人都知道,但是要问为什么,应该有些人就答不上来了,用就是了呗~这样不好,我们要知其然还要知其所以然. 咳咳,不装B.其实在下也是最近把<计算机网络>翻出来看,正好看到了,就拿出来记录一波. 问:到底为什么以太网帧长度不能小于64字节呢? 答:为了避免以太网中信号碰撞. 1 何为碰撞检测? 碰撞检测是CSMA/CD(Carrier Sense Multiple Access with Collision Detection)协议的一个要点.这个协