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. R-sampe & seq函数学习[转载]

    转自:https://blog.csdn.net/u012108367/article/details/69913280 https://blog.csdn.net/qq_33547243/artic ...

  2. RMAN中%d %t %s %u,%p,%c 等代替变量的意义

    backup incremental level 0 database format='LEV0_%d_%t_%U_%s_%p' format=string 文件路径和名称的格式串,其中可包含宏变量: ...

  3. zw版【转发·台湾nvp系列Delphi例程】HALCON HistoToThresh2

    zw版[转发·台湾nvp系列Delphi例程]HALCON HistoToThresh2 procedure TForm1.Button1Click(Sender: TObject);var imag ...

  4. 谷歌浏览器 URL无法访问

    使用谷歌浏览器老是会崩溃,或者访问的时候发现“URL无法访问”等失败的问题,连淘宝都没法访问,这个让人很恼火, 最后在扩展应用那里搜到个URL的redirect,问题解决了,~~发现没有再出现类似问题 ...

  5. Hive 大数据倾斜总结

    在做Shuffle阶段的优化过程中,遇 到了数据倾斜的问题,造成了对一些情况下优化效果不明显.主要是因为在Job完成后的所得到的Counters是整个Job的总和,优化是基于这些 Counters得出 ...

  6. Ubuntu系统下Jenkins的git构建基本方法

    上一博文讲到了本地脚本的构建方法. 本篇博文主要讲“Ubuntu系统下Jenkins的git构建基本方法”. 点击保存后即可完成简单的构建. 构建触发器 这个触发器是决定什么时候触发构建,可以设置为定 ...

  7. oracle中使用函数控制过程是否执行(结合job使用)

    oracle中使用函数控制过程是否执行(结合job使用时候,循环时间不好写的时候,可以此种方法比较方便) CREATE OR REPLACE FUNCTION wsbs_pk_date_validat ...

  8. mp4v2 基本知识

    mp4v2 和mp4的一些基础知识 由于项目需要做mp4文件的合成(264+aac)和mp4文件的解析: MP4文件本身就是一个容器,对于视频来说就是把不同的内容放按照mp4的规则存放而已: 如果完全 ...

  9. SNMP学习笔记之Linux下安装和配置SNMP

    注意:本篇安装用户是root,非root用户启动的时候会报缺少文件错误. 一.安装SNMP 1.1.下载Net-SNMP的源代码 选择一个SNMP版本,比如5.7.1,下载地址如下:http://so ...

  10. python百分号%—%s、%d、%f

    百分号%表示占位符,在后续通过%传入真实的值 %s  拼接字符串,实际可以接受任何类型的值 %d  只能拼接整数数字 %.nf  四舍五入拼接浮点数,n表示保留到小数点后n位,不加.n默认保留6位小数 ...