The Ethernet Story

Bob Metcalfe

Bob 参与了 Xerox 研究项目,着手解决建造一个处处连接个人计算机的架构。当时,他们刚刚完成了 Internet 的开端 -具有 packet switching 机制的 ARPANET。

与此同时,他们开发了第一台激光打印机(有争议),Ears。速度是一秒一页,500个小点一英寸。从数学的角度来看,一秒是200兆。

当时的互联方法存在着许多的问题。其中的一个问题是,他们全部都像全垒打一样(they were all home run),所有的线路都聚集到这个架构中的一个基地(rat's nest)。

第二个问题是,他们一般只跑300位每秒,如果提高速率,会达到 144k 位每秒。然而,这还不足以接近200兆每秒。但是他们想让激光打印机保持在PC主机间传递文件的工作。

研究团队中的 Charles Simony 开发了 Signet ,Bob 接手了他的工作,Simony 从事另外方面的工作。事实上在那之后 Simony 开发了一种名为 Bravo 的文本编辑器,最后 Bravo 演变成了现在的 Microsoft Office。这位 Charles Simony 后来经过专业的培训,上了太空(666) 两次。关于Charles Simony

SignNet 代表了 Simony 非常值得称赞的计算机网络思想,其中的不少模块逐渐转变成 LAN 的一部分。顺便一提,LAN 这个术语直到1990年才发明了出来,所以SignNet 可以被称作是 那个时代不应该具有的产物(anachronism)。说明了 Simony 的远见和强大的学术能力。

SignNet 中有很多模块转变为 LAN 的部分。这中间有一个研究的过程:如何在发送 packet 的时候管理 LAN。在 Hawaii 大学研究出了a packet radio network :Aloha Net。它的魅力在于它解决了分配的问题 :在Hawaii大学 如何共享同一个 radio channel ?如果只是简单的在不同的小岛上分散终端计算机,他们没有办法很轻松的互相交流来取得协调。

randomizing transmission 在共享线路上 随机化的转递

它们是如何在 share radio channel 上取得协调的呢?Hawaii 大学的 Norm Abramson 设计了这一种非常简单的 随机化的 转发程序,人们能够在那上面进行输入的操作,他们输入的东西,叫做“card image”。

输入card image 之后,点击 send,然后你的终端会把它发送至主机上,接着等待一段时间直到在离开的channel上收到感谢的信息。

如果有收到,是非常棒的,但是如果没有收到,这可能意味着有两台终端同时决定发送card image。所以,当许多终端参与进来的时候,信息传递过程中的碰撞发生之后,他们将会在不同的时间段进行重新发送。在某一时刻发生的信息碰撞在未来不会发生 :两个终端决定在不同的时间段重新发送。

Bob 开始着手解决 “线路基地” 的问题,并且只希望只有一条被共享的线路(无论有多么特殊)。他想找到能够被分配的解决方法 来解决 如何 share 这条电缆。而 Aloha Net 使用了 无序的(randomized) 重新发送的机制(retransmissions)。

这是两个不同的故事:hardware story 和 software story。hardware story 可能并不是那么有趣,但是它仍然是存在的。

Manchester Encode 和 Ethernet

注意点:

  • Manchester Encode
  • carrier sense (in Ethernet)

Bob 做的第一件事情,是买了一千米的电缆。呃,这一轴 同轴电缆 大概有 这么宽(用手比划),两端是突出的。他拿到了一台脉冲发电机,并把它连接到了其中的一端,同时另一端与一台示波器连接。他开始发送方波,观察另一端的示波器的波形,然而显示的并不是方波,是一种上升下降均较为缓慢的曲线。但如果安装一个 digital gate,就能够发现方波,所以他有了一点信心:在不久之后,许多连接到这个网络的 不同的站,能够发送他们的方波,同时,其它的站能够接收它们。

hardware 的问题并不是那么的困难,它是很直接了当的(straightforward)。而这个 方波 被称作 “Manchester”。

所以 Bob 他们所做的东西是 做了一些 (bit),然后向这个电缆发送一个 bit,之后把它译成电码。这种译码方式也很简单,叫做 “Manchester coding”。意思就是说,对于每一个bit,它的前一半是 the complement of the bit (bit 的补足),第二半 是 bit。所以 在每一个 bit cell 的中间 都进行了一次非常简单的转换调节的方法。

在你往电缆的一端发送 一个packet 的时候,你能在另外的一端发现它们的标记,然后根据标记组合成一个packet。

原文:So as you're sending the packet the cables wiggling and you can recover the  signal at the other end then. Clock those bits into a shift register,  and then click the sh, clock the shift register into the memory, and then  collect a packet that way.

除了做一些简单的焊接,需要注意的还有接口端的阻抗,它可能会造成不必要的影响。

Manchester coding 的优点在于 当你传送一个 packet 的时候,它会不断的进行转换。所以只需要认真听一小会,你就可以知道 packet 是否通过了线缆。

Bob 从 Aloha Net 项目获得了技术灵感。

关于 Ethernet 和 Aloha Net 的区别有很多,第一点 是 carrier sense (载波 意识)

在 Aloha Net,你无法获知 在你发送信息的同时,是否有其他人也在发送信息。但是在 Ethernet ,这是可以的。这里 Ethernet 的优点在于,当你发送信息的时候,你知道也有人在发送,你可能会因为 避免破坏别人发送的 packet 而放弃发送信息。如果你继续发送,对于带宽的记录很可能就会丢失。

另外一方面是这样的,“ Manchester code meant that the cable was on half the time and of half the time. ” 一个 open collector driver 会把线缆的电压拉升至 <5V。

举个例子,对于每一个 bit cell 来说,发送时必须观察有没有其他的人正在发送信号,如果有,那么就会造成信息拥塞(collision)。

Manchester encode 中有 On/Off (根据大意,应该是按键),所以Manchester encode 类似是一种 调整的方案(modulation scheme)。

这个方案 类似是 计算机科学家们与 radio people 合作 想出来的,计算机科学家们顺便从 radio people 那里获取了许多的资源。这个实验浪费了许多的带宽和缆线。

所以,他们认为 carrier sense 包含 探测(detection)。这个解决方案 应该是 携带两个 8bit IP地址(目的地 发送端)的packet 转递方法。

在个人电脑的底板上,安装有线路的 app,并且被分配了 0 到 255 的硬件地址。

Ethernet 的 packet 携带有两个IP地址,而 Aloha Net 的 packet 只有一个 IP地址,因为它是单向的

在数据报的最后,添加了CRC检验和,以便于检验是否出现差错。

Bob 做了一些刀工,把铜线上的绝缘材料去除。但是并不是那么擅长做这玩意,与他同屋的有一个学生,因为他曾经做过电视线路的安装,所以非常擅长做这方面的工作。这名学生协助了Bob,他就是David Boggs。

David 更偏向于硬件,而 Bob 更偏向于软件。二者的结合促成了 Ethernet 的诞生。

Bob Metcalfe 和 David Boggs 在PARC研究中心发明了以太网(Ethernet)。

之后的故事

关于 rat's nest:他们在中间设置了一条线路,在你想要把一台PC 连接到线路上的时候,只要增加一个tap(分接头)即可。

与此同时,Bob他们并不希望当增加一个分接头的时候,削减了整个网络。所以 Bob 在 cable TV factory 发现了 gerald tap,解决了整个问题。

It was basically a, a vampire tap. You'd, you'd drill a little hole in the  outer, casing of the coax, and then you would screw in this tap that would  puncture the insulation and go right to the copper and tap in.

Aloha Net 当时的速率是以 kilobits per second 计算的。而 Ethernet 是从 2.94 megabit (百万位/兆位)。在1973年,它的速率是 T1 的两倍。所以 Xerox 开发的 Ethernet,是当时全球速度最快的局域网。

随后与DEC 和 Intel 联合定义了通信协议的标准。标准以太网(10Mbit/s)。

2016/7/30

【Coursera】Technology :Fifth Week(2)的更多相关文章

  1. 【Coursera】Technology :Fifth Week(1)

    Store and Forward Networking 在长途连接中,路由的数量 取决于 最优路径(花费最少).也就是说被地理条件所限制. 所以 Store and Forward Networki ...

  2. 【NLP】前戏:一起走进条件随机场(一)

    前戏:一起走进条件随机场 作者:白宁超 2016年8月2日13:59:46 [摘要]:条件随机场用于序列标注,数据分割等自然语言处理中,表现出很好的效果.在中文分词.中文人名识别和歧义消解等任务中都有 ...

  3. 【NLP】蓦然回首:谈谈学习模型的评估系列文章(一)

    统计角度窥视模型概念 作者:白宁超 2016年7月18日17:18:43 摘要:写本文的初衷源于基于HMM模型序列标注的一个实验,实验完成之后,迫切想知道采用的序列标注模型的好坏,有哪些指标可以度量. ...

  4. 【BZOJ】1002:轮状病毒(基尔霍夫矩阵【附公式推导】或打表)

    Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下图 ...

  5. 【scikit-learn】06:make_blobs聚类数据生成器

      版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/kevinelstri/article/ ...

  6. 【7】解决:移动端点击a链接出现蓝色边框

    [1]_blank : 浏览器总在一个新打开.未命名的窗口中载入目标文档. [2]title :  鼠标悬浮显示的文字. [3]href : 跳转到哪个链接.     a{    border: no ...

  7. 【OpenCV】边缘检测:Sobel、拉普拉斯算子

    推荐博文,博客.写得很好,给个赞. Reference Link : http://blog.csdn.net/xiaowei_cqu/article/details/7829481 一阶导数法:梯度 ...

  8. 【MavenWeb】初探:创建一个Maven Web项目

    第一步:创建一个Simple的Maven项目 直接点下一步,把name上面的几个部分填写好,直接Finish即可. 就可以看到如下的结构: 注意点1:如果按照网上的其他一些做法来创建,你会发现少了sr ...

  9. 【原创】Js:日期处理(日期格式必须【yyyy-mm-dd】才能转成long的毫秒!其他的不是【年-月-日】的格式,结果会是【NaN】)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

随机推荐

  1. 怎样知道 CPU 是否支持虚拟化技术(VT) | Linux 中国

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/F8qG7f9YD02Pe/article/details/79832475 wx_fmt=png&a ...

  2. Java-idea-设置类头注释和方法注释

    一.文件级别的注释         主要是通过File-->Setting-->Editor→File and Code Template中来设置 可以再右侧include中设置File ...

  3. 为什么要用Markov chain Monte Carlo (MCMC)

    马尔科夫链的蒙特卡洛采样的核心思想是构造一个Markov chain,使得从任意一个状态采样开始,按该Markov chain转移,经过一段时间的采样,逼近平稳分布stationary distrib ...

  4. testng入门教程14数据驱动(不同文件)

    数据与test脚本不在同一文件时,下面是数据: package data_driver_two_parts; import org.testng.annotations.DataProvider; p ...

  5. ubuntu shell脚本出错 dash

    今天在Ubuntu下调试代码,明明是正确的,却仍然报错,查了错误信息才知道:Ubuntu中默认不是bash,而是为了加快开机速度,使用了dash. dash中需要严格的语法,而且与bash语法不同.例 ...

  6. C# 如何把dataTable以参数的形式传入 sql 存储过程

    ==================================================-- sql代码 示例:CREATE TYPE dbo.Content AS TABLE( ID i ...

  7. uva1411 最小值转最大值+二分图匹配

    这题给了n个白点和n个黑点坐标,计算出他们两两配对的总路程最少, 我们算出他们之间的距离,为d,然后 w[j][i]=-d; 就将求最小值转化为求最大值,然后采用km进行匹配计算 #include & ...

  8. SQL查询日历

    这东西给自己留着用. 经常会用到一些查询需要做全月统计,但有些时候的统计需要将未发生日期也显示出来,因此会需要一个固定的日期表,(T6的自定义查询估计也是需要的,至少以前是这样) 下面写两种方法来获取 ...

  9. Jackson基础

    一.所需jar包: jackson-core-x.x.x-rc4.jar.jackson-databind-x.x.x-rc4.jar.jackson-annotations-x.x.x-rc4.ja ...

  10. Zookeeper使用实例——服务节点管理

    分布式处理中,总会存在多个服务节点同时工作,并且节点数量会随着网络规模的变化而动态增减,服务节点也有可能发生宕机与恢复.面对着动态增减的服务节点,我们如何保证客户请求被服务器正确处理呢.我们可以通过z ...