Week5


Technology: Internets and Packets

Welcome to Week 5! This week, we’ll be covering internets and packets. The Internet is designed based on a four-layer model. Each layer builds on the layers below it. The Link and Internetwork layers are the lowest layers of that model.

Helo,转眼之间,我们就来到了第五周的学习,从第五周开始,我们就从历史方面走向了技术方面,哪么接下来就让我们看看这周讲些什么吧(内容有点长,需要慢慢看哦)


Layer1: Link

Introduction/ The Link Layer

20世纪60~80年代,使用最多的还是Store and Forward Networking网络,然而你知道的(在Week2中我们介绍了这个网络),它存在着很多缺点,例如无法处理信息堵塞,无法动态的处理信息中断等问题,为了解决这个问题,Packet-switching技术应运而生。Packer-switching的核心理念之一就是化繁为简,一个庞大的数据,就把它分成无数个小的数据,这些无数小的数据,通过不同的路径,一直Hop,哪里有闲置的路线,就往哪里Hop,但其终点相同的,这样就避免了数据堵塞,极大地利用了闲置资源。在现实中这样的想法是很难实现的。因为速度的局限性,可在互联网中,你完全不用担心,因为网络

的速度是你无法想象的,从美国到中国,信息的传递只需要几毫秒。这就是Shared Network 的前身。因此计算机从具有磁盘驱动器的大型计算机转变为能够发生数据包的微型计算机,在信息的转发过程中,信息不再是长期储存在计算器中,而是短暂的储存在Router中,通过不断的Hop,到达目的地,这样也就形成了Internet

虽然Packet-switching的问题解决了网路堵塞的问题,可是新的问题又出现了——哪些data经过了哪些路由(Routers)。因此为了简化这种方案,使其变得更加简单,更加可管理,于是就提出了Layered Network Model,而这种模型同样采用了Packet的核心思想,化繁为简,把许多的大问题分解成一个个的小问题。当然由于分解的方式不同,所存在的模式也就不同。除了我们所熟悉的TCP/IP模型(四层)外也有OSI(Open System Interconnection model),它有七层。

当然,在历史的见证中,似乎TCP/IP模式更受到欢迎,现在我们所用的也是TCP/IP,因为老师着重的介绍了这么模型的四层,让我们来了解一下吧

第一层:Link Layer(aka Physical Layer)

采用分层结构的原因就是为了简化问题。因此第一层Link,只是为了解决一个问题,如果超过一台计算机共享同一根网线时,我们该如何传输数据?如何共享?当然这是一个很复杂的问题,但我们并不关心整个世界这么大的范围,而只关注于一个Link,这也是分层结构的好处,每个层都趋于专门化。信息传送到目的地可能需要经过很多种的传输介质:有线、无线传输、光缆……等等。不过一段光缆,长40英里也好,长40英尺也好,都是一个link。一个link就是一个hop,这就需要路由器,路由器从一个link中把数据拉下来然后推向下一个link。打比方来说吧,人们寄信,首先邮局从你家的邮箱里把信件拉走,这时你的信可能是放在邮递员的自行车上,后来你的信上了卡车、然后又上了火车、……这就是一个个link。一个个邮递员、卡车、火车就是Link Layer的组成部分。这里面很重要的一点就是每个邮递员、或者每种交通工具并不是就把你的信直接送到收信人手中,而信只是在每个环节都只是向目的地更加靠近了。这就是Link Layer的思路

解决了传输方法,但还有一个核心问题,我是谁?我来自哪里?我要去哪里?这也是数据的三个问题,如何精准的将数据从一个地方传到另一个地方,这就需要给每个计算机一个地址,而这个地址Ethernet

当硬件制造商构建Ethenet或无线适配器时,在其内部内置了一个序列号,这个序列号就是每个计算机的的地址,也是我们常说的网络物理地址,它是由六组两两结合的字符所构成的,包含字母和数字。这样每个计算机都有一个物理地址,在一个WiFi环境下,电脑A想和电脑B通信,电脑C在接收到他俩之间的通信时,能通过物理地址知道自己不属于这场通信。这样Shared Network就能正常的工作。

然而Link Layer还需要解决一个重要的问题,那就是数据冲突。以太网解决的方案是一种叫做 "Carrier Sense Media Access with Collision Detection 的技术,该技术就是在我们要传输数据时,先Listen。先听听信道里面有没有东西在传输,如果有我们就等,如果没有我们再开始传输。如果已经有人在占用了,我们就要等待他完成他的传输。传完之后,我们还要listen,如果能清晰地听到我们的数据,就说明传输得不错,但如果不能听见,这就说明遇到了两台电脑同时传输了信息,导致了冲突的问题。所以两台电脑都得各退一步,不过这时就需要用到有点儿复杂的随机数运算,两台电脑退的步数不是相同的,这样就不会退步了之后再传输结果再冲突了。这样也就解决了冲突问题。

接下来让我们见见Ethenet的发明者Robert Melcalf

Bob Metcalfe - The Ethernet Story


Robert Melcalf在获得麻省理工学院的学士学位后,搬到河对岸的哈佛大学攻读博士学位之后。在他学习期间,他接触到了Abramson的工作,他对此很感兴趣。从哈佛毕业之后,他决定前往施乐帕洛阿尔托研究中心正式工作之前留在夏威夷度假,以便帮助Abramson工作,当他到帕洛阿尔托研究中心,他看到那里的研究人员已经设计并建造出后来称为个人计算机的机器,但这些机器都是孤零零的,于是他运用帮助Abramson工作获得的知识,创造了packet switching(当时还不被叫做局域网)。当时已经有了第一台激光打印机,名字叫做Ears,它的速度是每秒20M,然而在当时网络的连接方式存在着许多问题,其中之一就是被称为 a rat's nest  ,还有一个突出的问题就是网速太慢了。因此为了解决这些问题,Bob转变了工作方向。 接下来就介绍了LAN(局域网)的发明过程了.

Software aspect:LAN一部分来源于Charles Simony早先的一个项目Signet(Signet stands for Simonys Infinitely Glorious Network),后来这个项目由Bob接受了,他转手去写了一个文字编辑器,哦,对了,这个编辑器叫做Bravo,可能说这个你们不认识,它后来变成了Microsoft Office。果然优秀的人,去哪里都是优秀的。在当时还有一个问题就是如何去分配LAN上的Packet,在一个偶然的情况下,他们在University of Hawail 发现了解决问题的方法,那就是Aloha Net,这也是上文上所说的简单随即重传方法(randomized retransmission procedure)

Hardware aspect:Bob先是买了一条一千米长的电缆,并且拿到了一台脉冲发电机,通过电缆将示波器与脉冲发动机相连,然后开始沿着电缆发射方波,并从示波器观察发送情况,一开始显示的不是方波,而是一种相对不稳定的波形,但在设定了数字门限(digital threshold)后,就能发现方波,这让Bob有了一些信心,能够实现之后的数据发送,在发送数据的过程中,Bob团队则会对发送的比特数据包进行编码,编码也很简单,就是现在广为人知的曼彻斯特编码。曼彻斯特编码的美妙之处在于,当您发送数据包时,会不断地进行转换,不需要听很长时间,就能知道包裹是否经过。所以以太网和ALOHA网络之间的最早的区别之一,就是载波感觉,在ALOHA中,你不能判断其他人是否和你同时在传输,但在以太网上,你可以。这样做的好处是,如果你在发送,而其他人同时发送,你最好还是放弃吧,因为你们已经破坏了对方的数据包,所以不要那么轻举妄动,之后则会恢复原本会丢失的带宽,继续发送损坏的数据包.

Bob还回忆起当时做了一些刀工,把铜线上的绝缘材料去除。但是看起来他并不擅长做这工作。与他同屋的有一个学生,曾经做过电视线路的安装,所以非常擅长做这些活,这名学生叫David Boggs.这也是Ethernet的另一位创造者,为了解决a rats nest的问题,于是他们只设一条主路,每当有新的电脑要连接进入时,只是增加一个分支(tap)。Bob也不希望,每次增加分支会导致网速下降。所以后来他们创建了gerald tap,解决了这个问题。

就是在这样不断的探索中,文中提到的两个互联网的问题被慢慢的解决了。

Layer2: Internet Portocol


The InterNetwork(IP)

在简单的了解了第一层Link Layer后,接下来让我们再来了解第二层Internetwork Layer。

你可能无法想象,5W名工程师用了20年才研发出了第一层Link Layer,这是多么庞大的工程呀。这项技术集结了当时人类智慧的结晶。现在让我们来看看第二层的智慧。在当时,有超过5000名的工程师在考虑网络层的问题:假设你有一个包裹,上面已经写好了收发地址,我们知道了有哪些路可以通往目的地,但是要如何到达或是用什么手段运送这个包裹,就是网路层要解决的问题。在Link层我们用内置了一个序列号的网络适配器,这相当于一个物理地址。于是工程师们思考了网络层是否也应该由一个地址,这也就构成了我们常说的IP地址。

IP Addresses

IP地址和物理地址截然不同,物理地址是一成不变的,而IP地址是可以随着网络的环境而发生改变的。例如同一台联网电脑,我今天在福州,哪么我的地址就是福州的地址,明天在上海,哪么我的地址就是上海的地址。IP地址的设定不是被某家机构所控制的,地址是被分配的。

IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节),它分为两部分,前半部分为网络号,说明你所处的网络,当数据包位于网络中间时,它不会真正查看所有数字,它只会查看前缀,例如,网络会认为所有发送到密歇根大学的数据包都是141.211.*,之后我们在密歇根内部分配这些数字,然后这个数字由分配数字的互联网机构分配给我们,也就是后半部分的主机号。这样做的好处是,当计算机希望跨越互联网发送信息时,路由器必须做的事情会被简化,因为它只需要查看前缀,不需要看整个地址。

Router Table

这里我们还需要提一下一项重要的技术,它就是Router Table(路由表),路由表是通过访问与其相邻的路由表来交换信息的。

它存在这样的机制:

  • 记录包将发往那里的列表;
  • 根据目的地ip地址决定往哪个方向传递;
  • 了解相邻链路上的流量,避免网络拥堵。
  • 了解相邻节点状态

DHCP:Dynamic Host Configuration Protocol,即动态主机配置协议

是一个非常重要的互联网协议。允许用户和设备自动请求分配一个动态的IP地址.

这对使用移动设备的人尤其重要。假设你在咖啡厅使用了你的笔记本电脑,又带到家里用它工作了一会儿,到了学校又连上了学校的WiFi,看起来一切工作正常。然而为什么在三个地方我们都能连上网络而没有因为IP地址错误出现什么问题呢?

一般来说,电脑在制造出厂时就分配好了以太网地址,但没有分配IP地址,而是在第一次连接WiFi时询问IP地址。遵守这个协议的电脑是向外提出IP地址请求,请求一个IP地址,在这个地方使用。如果这里有access point,那么access point会分配给你一个IP地址,供你在这个地点使用。所以说实际上你在咖啡店、家里、学校使用的IP地址是三个不同的IP地址

Non-Routable Addresses:

IP的地址是有限的(IPv4情况下是2的32次方个),一个IP地址只能使一台设备上网,全世界这么多人,每个人的设备也不止一台,哪么怎么解决IP地址短缺的问题呐?这就要依赖于NAT(Network Address Translation,网络地址转换)技术了。在这项技术中,每台家庭路由器实际上都有一个独特的地址,但您看不到它,路由器会给你一个临时地址,一个根本不能在互联网上运行的地址,它只在你的房子里,但当你的信息离开房子时,真实地址作为寄件人就会被使用。

Time to Live

在当时,Packet还有一个突出的问题,那就是路由环路问题。packet陷入死循环,一直循环,如果长期下去,对网络是一种巨大的负担,因此为了解决这个问题,工程师们引入了生存时间的概念,每次数据包通过路由器时,它都会从此字段中减去一个数据包,它以一个介于25之间的数字开始,它可以高达255,但通常是25,当数字降为0的时候,他们就会把这个包丢弃,避免了可能造成的阻塞问题。这就是TTL技术。

Vint Cerf - A Brief History of Packets

Vint是ARPnet创始人之一,对包交换(packet-switching)概念有着很深的理解。之前所说的信息传递都是基于数据包的概念,但其实早在ARPnet出现之前,这个概念就已经存在

包交换是麻省理工学院的leon kleinrock专门研究的一个概念,他实际上是在研究消息交换,用这种消息交换的方法来分析队列网络,这是一个重要的里程碑。

大约在1961年左右,Paul Baran正在为兰德公司工作,并且非常关注在核后环境中保持指挥和控制的能力,那时美国非常担心俄罗斯真的会发射导弹,为了能对核攻击作出反应,他们需要掌控指挥和控制权。因此,在1962年,在集成电路或其他任何东西出现之前,Paul认为应该对声音进行数字化和分组化,然后使用一种能够向各个方向传输的杆式无线电来创造一个高度互联的环境。在那个时候,消息块(message block)的概念就已经被提出了。

到了1966年,Larry Roberts和另一位研究人员一起做了一个点对点的实验来测试包交换,在圣莫尼卡的系统开发公司(SystemDevelopmentCorporation)的ANSF-Q7机器和麻省理工学院林肯实验室的TX2机器之间,他们在2400位线路上演示了来回移动数据包。而与此同时,伦敦国家物理实验室的一位名叫唐纳德·W·戴维斯(DonaldW.Davies)的男子也对这项研究起了兴趣,试图从英格兰的科学研究委员会那里弄到钱,但最后得到的钱只够构建1个节点,这三人共同促进了包交换的诞生,他们展示了使用标准的方式,可以使不同类型的计算机互相交谈。

PS:(这周学习的内容量有点大啊。哈哈哈。这周也改变了一下排版模式,看看效果。人总是向往美的事物。)

Internet History,Technology,and Security - Technology: Internets and Packets (Week5)的更多相关文章

  1. Internet History,Technology,and Security -Transport Control Protocol(TCP)(Week6)

    Week6 Technology: Transport Control Protocol(TCP) Welcome to Week 6 of IHTS. We are in our second we ...

  2. Spring Security极简入门三部曲(上篇)

    目录 Spring Security极简入门三部曲(上篇) 写在前面 为什么要用Spring Security 数据库设计 demo时刻 核心代码讲解 小结 Spring Security极简入门三部 ...

  3. Spring Security极简入门三部曲(中篇)

    目录 Spring Security极简入门三部曲(中篇) 验证流程 Authentication接口 过滤器链 AuthenticationProvider接口: demo时刻 代码讲解 小结 Sp ...

  4. Internet History, Technology, and Security(week5)——Technology: Internets and Packets

    前言: 之前都在学习Internet的历史,从这周开始,进入到了Internet技术的学习. Layer1: Link Introduction / The Link Layer 80年代之前,主流网 ...

  5. Internet History,Tecchnology and Security

    Internet History Internet Technologe Internet Secure

  6. Coursera:Internet History ,Techornology and Security

    WEEK1 War Time Computing and Communication Bletchley Park 布莱彻利庄园:a top-secret code breaking effort b ...

  7. 关于iOS9中的App Transport Security相关说明及适配(转)

    原文:http://my.oschina.net/vimfung/blog/494687 iOS9中新增App Transport Security(简称ATS)特性, 主要使到原来请求的时候用到的H ...

  8. Spring Security 动态url权限控制(三)

    一.前言 本篇文章将讲述Spring Security 动态分配url权限,未登录权限控制,登录过后根据登录用户角色授予访问url权限 基本环境 spring-boot 2.1.8 mybatis-p ...

  9. Spring Security教程之session管理(十一)

    1.1     检测session超时 1.2     concurrency-control 1.3     session 固定攻击保护 Spring Security通过http元素下的子元素s ...

随机推荐

  1. 驰骋工作流系统-Java共工作流引擎配置定时任务

    关键词:工作流定时任务  流程引擎定时任务设置  工作流系统定时任务配置  开源工作流引擎 开源工作流系统 一.定时任务的作用 发送邮件,发送短信. 处理节点自动执行的任务.比如:一个节点的待办工作是 ...

  2. Mysql查询语句之排序查询

    语法: /* select 查询列表 from 表 [where 筛选条件] order by 排序列表 [asc/desc] */ ①asc为升序,desc为降序,且默认为升序 ②order by子 ...

  3. day 36 html的补充

    参考博客:https://www.cnblogs.com/majj/p/9062540.html 内容回顾: 0.浏览器 1.标签 - 行内标签 a span i em strong b.label ...

  4. 微信小程序获取二维码(直接上代码)https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=ACCESS_TOKEN

    应为是直接返回二进制数据所有与其他接口些许差别,希望能帮助现在的你! 谢谢!!!    /** * 37.微信二维码生成 */ public String getWeiXinCourseMap() { ...

  5. php: $$str

    这种写法称为可变变量有时候使用可变变量名是很方便的.就是说,一个变量的变量名可以动态的设置和使用.一个普通的变量通过声明来设置,例如: <?php$a = "hello";? ...

  6. vim介绍、颜色显示和移动光标、一般模式下移动光标及复制、剪切和粘贴

    第4周第4次课(4月12日) 课程内容: 5.1 vim介绍5.2 vim颜色显示和移动光标5.3 vim一般模式下移动光标5.4 vim一般模式下复制.剪切和粘贴 5.1 vim介绍 centos7 ...

  7. Python的特有的参数传递(*和**)

    目录 值传递 引用传递 python的传递方式具有两种值传递和引用传递.除此之外,python中还允许包裹方式的参数传递,这未不确定参数个数和参数类型的函数调用提供了基础: 值传递 int.float ...

  8. 区块链学习笔记:DAY05 如何使用公有云区块链服务

    这是最后一节课了,主要讲华为云在云区块链提供的服务,如何基于华为云BCS来构建应用 先来个简单的比喻: 1.有关BaaS的范围定义 包含物理主机.虚拟主机.容器服务.区块链.智能合约和服务 2.华为云 ...

  9. NB-IoT将成为未来5G物联网主流技术

    日前,我国完成了IMT-2020(5G)候选技术方案的完整提交.据悉,在提交的方案中,NB-IoT技术被正式纳入5G候选技术集合,预计2020年6月ITU将正式宣布5G技术方案的诞生.而NB-IoT也 ...

  10. Python高级学习笔记

    Python高级学习笔记,此笔记中包含Linux操作系统.Html+CSS+JS.网络协议等. 所有思维导图为本人亲手所画,请勿用于商用. 大哥们,求点赞哦. 第一天笔记:链接 第二天笔记:链接 第三 ...