【Internet History, Technology, and Security】第五讲心得(上)
因为毕业和一些其他原因,视频学习拖到了现在,深感自己的时间安排能力的不足。言归正传,回到本周的学习内容。
Introduction/The Link Layer
60至80年代,使用最多的网络为储存和转发网络(store and forward networking): 消息将进入一台计算机,并停留一段时间去找到自己在网络中的的下一站,不断转发,直到找到终点。因此,较少的转发就是这个网络的特性之一,然而,这种网络也有着“没有太多的共享”这一特性,一次只有一条信息通过这些链接发送,而其他所有的信息只是在等待时间,排成一行。
从60年代到80年代,这一缺陷终于在ARPnet被改进,那就是将其成为分组网络(Packet Network)。分组网络是基于“为了快速共享网络”而提出的,它希望使用者能够更快地处理故障,使发送的数据能够在半秒钟之内退回,而不是像之前一样花费十分钟,甚至是一两天。为了实现这种可能性,研究人员们付出了近20年的努力,不断丢弃并重写架构,在视频中可以看到,在20世纪70年代的晚期,已有100多台电脑加入了这个新的网络体系。
那么分组交换的实际应用又是如何呢?教授重新举了之前课程中所提到的明信片案例。假设一张明信片只能处理10个字符,如果要发送30个字符信息,自然需要三张明信片,将他们编号,并放入邮箱中。而不同的明信片可能会被不同的邮递员寄出,也可能会经过不同的路线,但最终,它们都能到达目的地并拼成一条完整的信息,就不需要像之前一样,像火车一样把它们连在一起。因此,存储和转发网络中的计算机,从具有磁盘驱动器的大型、功能强大的计算机,发展到只有一个转发数据包目的非常小的计算机,而不是长时间存储消息。
其实分组交换依旧需要不断地转发,最终到达目的地。只是相较于传统转发机制,分组交换转发的不再是整段的消息,而是一个个较小的数据包。以密歇根大学和斯坦福大学为例,他们会在这些校园里有各种各样的本地网络,有计算机,还有服务器和各种各样的东西。他们会将所有的数据包,所有的数据发送到互联网,然后这些数据包会在互联网上找到它们的路。
而在这些跳跃转发的过程中,还存在着许多要解决的问题,为了简化解决方案或将解决方案分解成更简单、更易于管理的部分。他们想出了一个四层的网络模型,通过把一个大问题分解成一些子集,分开工作,想出办法让这些部分相互作用,这就是著名的TCP/IP协议族,除此以外,还存在着一个七层的网络模型OSI。而要使这些层完成他们的任务,就需要编写对应的声明,这就是Internet Standards。
链路层所考虑的是两台计算机之间的连接问题,举个例子,当你要寄送信件时,那个从你家拿邮件的人,把邮件扛在肩上,这是一个环节,他们把邮件放在卡车上,然后把邮件送到一个卡车上,并把它送到另一个地方,接着又把它放在火车上送出。卡车、火车、邮递员或邮递员就是这些小小的链接层。这就是链路层,它只在意在这条线上定义的东西,而不关心另一端上的其它东西。它的工作是获取一端的数据,而这些数据我们要如何分享?它并不在乎。我们看到的常见链路技术如以太网或WiFi或电缆调制解调器、DSL、卫星或光纤,这些都是各种形式的链接层。除了无线,以太网可能是最普遍的链路层。
所以,基于链路层的特性,当制造商建立一个以太网或无线适配器,他们会在里面设置一个序列号,用来表示物理地址,以便这台计算机知道哪些数据包和它同属在一条线上。
完成了设备之间的连接后,如何解决多个设备通信,又成为了新的难题。研究人员必须想出一个避免混乱的方法,以太网实现这一点的方式是使用一种称为“CSMA/CD”的技术。当我们准备发送数据报的时候,可能存在着其他的主机也想要发送数据报,所以首先我们要进行侦听,等待直到链路上没有了动静,再开始发送信息,接着继续侦听发送的信息,当信息冲突的时候,它们会将其返回。在一系列地等待与发送之后,每台计算机的数据都能安全地到达目的地。可以说,这项技术就像交通的红绿灯,能有效保证计算机之间的数据传递的冲突发生。
Bob Metcalfe-The Ethernet Story
前一段内容是对网络发展的概括,让我们对网络架构的发展有个大概了解,这一段则是介绍了以太网的发明人Bob Metcalfe。
在Bob完成了Arpanet的研究后,他接到了Xerox的Signet项目研究的邀请,这个项目的目的是为了建造一个处处连接着个人电脑的架构。那时的连接方法还存在着许多问题,其中之一就是线路就像本垒打一样,由核心的基地中,杂乱无章地延伸到各地,像老鼠窝一样;而另一个问题,就是他们团队研究的另一个项目——第一台激光打印机,他们想让激光打印机执行在计算机之间传递文件的工作,这就需要传输速率达到20M/s,但这台打印机即使提高速率,也只能达到144K/s。
在此之前,研究团队中的 Charles Simony 对Signet已经开发了一定阶段 ,Bob 接手了他的工作。在视频中,Bob称赞了Simory的计算机网络思想,因为Signet中的不少模块在之后转化成了LAN的一部分,而LAN是在1990年才被发明出来,可以说,Signet是超越时代的产物。这里要说句题外话,在退出Signet的研究后, Simony 开发了一种名为 Bravo 的文本编辑器,最后 Bravo 演变成了现在的 Microsoft Office,这位 Charles Simony 则成为了亿万富翁,还去了趟空间站。
在如何组织这个局域网的过程中,Bob偶然间遇到了Hawaiian大学的一个分组无线电网络,叫做ALOHA网。ALOHA网络的美妙之处在于它解决了一个分布式问题。他们能够很轻松地共享无线电频道。
而实现方法又是什么呢?Hawaii 大学的 Norm Abramson 设计了这一种非常简单的随机重传程序,操作者可以输入卡片信息,之后通过终端发送至主机上,接着等待一段时间,如果有收到回执,说明发送成功,但是如果没有收到,这可能意味着有两台终端同时决定发送信息。所以,当许多终端参与进来的时候,信息传递过程中的碰撞发生之后,他们将会设置一个随机数,来尽可能地实现在不同的时间段进行重新发送。在某一时刻发生的信息碰撞在未来不易发生,因为这两个终端在未来会在不同的时间段重新发送。ALOHA实现了通过分布式的方法来对一条电缆进行共享,能够解决“老鼠窝”问题。
接下来就是实践了,Bob先是买了一条一千米长的电缆,并且拿到了一台脉冲发电机,通过电缆将示波器与脉冲发动机相连,然后开始沿着电缆发射方波,并从示波器观察发送情况,一开始显示的不是方波,而是一种相对不稳定的波形,但在设定了数字门限(digital threshold)后,就能发现方波,这让Bob有了一些信心,能够实现之后的数据发送。
在发送数据的过程中,Bob团队则会对发送的比特数据包进行编码,编码也很简单,就是现在广为人知的曼彻斯特编码。曼彻斯特编码的美妙之处在于,当您发送数据包时,会不断地进行转换,不需要听很长时间,就能知道包裹是否经过。所以以太网和ALOHA网络之间的最早的区别之一,就是载波感觉,在ALOHA中,你不能判断其他人是否和你同时在传输,但在以太网上,你可以。这样做的好处是,如果你在发送,而其他人同时发送,你最好还是放弃吧,因为你们已经破坏了对方的数据包,所以不要那么轻举妄动,之后则会恢复原本会丢失的带宽,继续发送损坏的数据包。
Bob还回忆起当时做了一些刀工,把铜线上的绝缘材料去除。但是看起来他并不擅长做这工作。与他同屋的有一个学生,曾经做过电视线路的安装,所以非常擅长做这些活,这名学生叫David Boggs,协助了Bob促成了以太网的诞生。
回到正题,Bob仍需要继续解决“老鼠窝”的问题,希望只通过一条电缆就能实现网络接入,但面临着一些技术问题,需要找到一个不破坏网络但能利用网络的方法。在与David一起研究的过程中,他们找到了一种设备叫gerald tap,而这个设备就解决了他们所面临的技术难题,“老鼠窝”问题也随之解决。
本周的课程相较于之前增加了许多,所以分为上下两章,理解起来比之前轻松了一些,但部分内容还是有疑惑,加上英语水平有限,也无法解决,比如Bob一开始提出的打印机问题之后是怎么解决的?也许是我理解上有偏差,希望之后重温的时候能明白过来。