Store and Forward Networking

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

所以 Store and Forward Networking 的特性之一就是 较少的转发(sharing)。

在某一瞬间,某一条信息通过某一个连接(介于两个路由之间),其它的信息在路线上等待这个过程的完成。

Research Networks 1960-1980s

三个问题:

  • 如何 避免 在所有的结对计算机之间 进行直接的连接?
  • 如何 更高效的 转发信息?
  • 如何 动态地解决 运行中断(outages)?

在 1960-1980s,在Research Network(ARPANET)中 最终没有成型的创新 是 转变为packet Network。

首先,研究人员需要解决的是,如何在一条连接中,保证一条较长的信息 不会被堵塞(clog up)? 其次,如何动态地解决运行中断的问题?以及如何高效的转发packet?

这是一个持续了多于20年的 research project,科研人员们做出的最优雅的事情是 花费大量的时间舍弃原有的架构并重新进行设计。通过某种手段,他们能够看见产品的瑕疵和优点。

在20世纪七十年代的晚期,大约有100台电脑连接在ARPANET上,1978年1月4日,在 ARPANET Completion Report 上的插图中,我们能够看见它列举了当时 所有的 电脑。

工程师们花费了二十年的时间来完善的 高效的信息转发机制,它就是 Packet Switching

Packet Switching

挑战:在一个类似Store and Forward的简单方法中,将大的信息分成小的几块。

Break each message into packets

能够允许 从一个message分出来的 packets 经过不同的路径,到达目的地。即 动态地适应 使用的需要。

使用特殊用途的计算机:routers(路由器),用于 控制 网络的交通。

其中最为精华的部分:Break each message into packets.

复习的一个例子:发送者翔翔 发送一条 message 从 密歇根 到 洛杉矶。

原有Message:Hello there,have a nice day.
break into ->
(1)Hello ther(1,fromaddress,toaddress)
(2)e, have a (2,fromaddress,toaddress)
(3)nice day. (3,fromaddress,toaddress)

这三个“小卡片”每一张都经过了不同的旅途,最终在不同的时间段无序的到达目的地。

收件人李鸣 并不知道这三张小卡片是怎么过来的(或者说 按照什么样的路径过来的 who cares?),他按照序列号重新组合了这三条信息。

所以,这个例子有助于我们理解 这些“小卡片” 是如何共享基础设施(指路由器们) 的 基础概念。

逐渐演变成了Shared Network 。

Shared Network

在 Store and Forward 时期 的 拥有磁盘驱动的 大型计算机 转变为 相对而言十分小的 具有 转递packets 简单目的 的计算机。

Shared Network 中 信息的短期存储 取代了 Store and Forward 中 信息的长期存储。

在 Shared Network 中,当一个 packet 进入,它只是简单的 寻找它 穿过Internet 的路径(经过一系列的路由器)。

比如有 在芝加哥大学的当地网络,和斯坦福大学的当地网络,它们向 Internet 按某路线发送它们的 packets。这些 packets 寻找它们穿过 Internet 的路径。可能也有私人的电脑接入该网络。

所以,Shared Network只关注packets,具有 不可信赖 的性质。路由器的理念一直延续了下来,例如现在使用的TCP/IP网络。

  • 因为 为了节省花费,和使得 地理上的连接 更短,数据通过 不同的路由器 进行转递
  • 穿越整个国家(美国),一般只需要经过十个路由器。
  • Network 设计者们,一直在 增加 和 移动 连接,使得他们创造的网络更加 “和谐”(tune)。

为了解决数据在网络中转递的一系列问题,简化解决方案,或者把解决方案分解成许多易于管理的小块,设计者们发明了 层次的网络模型

Layered Network Model

  • 层次的网络模型,使得原有设计网络的问题,分割成许多易于管理的小问题。
  • 最著名的层次模型:TCP/IP协议族。
  • 同样的,也有OSI七层模型(高层4层 加上 低层3层)。

想要解决的问题:使得数据的传递具有可靠性 可靠的穿越网络。把这个问题划分成四个模块,这些模块各自独立的工作,然后想出方法使得它们各自的解决方法相互影响相互作用。

Application Layer :Web,E-mail,File Transfer
------------------------------------------------
Transport Layer(TCP) :Reliable Connection
------------------------------------------------
InternetWork Layer(IP) :Unreliable Connection
------------------------------------------------
Link Layer(Ethernet,WIFI) :Physical Connection

所以,这种把大的 复杂的问题分解为 四个小的 易于操作的问题,有利于我们得到较优的解决方案。

当你把这些问题分解为四个小问题,交给四个层来解决的时候,你必须编写相应的文档来声明如何让这些层共同工作。这个文件就是 Internet Standards。

Internet Standards

这个为所有协议指定的标准是被一个组织发明的:Internet Engineering Task Forces (IETF).

这个标准的名字 叫做 RFCs(Request for Comments)。

这些许多工程师编写出来的文件,描述了大多数Internet 的成分是如何一起工作的。

回到 Layer Architecture

  • 物理层 和 Internet 层就像是卡车和火车,它们拉货物,然后把货物放到准确的位置上面去。这中间经过了许多步。
  • Transport 层 检查 这个卡车是否完成工作,并且根据需要重新装载货物。

Link Layer (Physical Layer)

  • 当数据在网络中传递的时候,在不同的路由器上可能使用的是不同的物理媒介。
  • 呃,比如,物理的线路,无线电,光纤,等等。
  • The Link is "one hop". -Is it up or down? Connected or not?
  • 非常狭窄的关注面,对于整个 Internet 没有认知。

数据链路层只关心 数据经过一个路由器(或者是一条物理线路 link)传递的过程。

所以在链路上,电压是怎么工作的?我们是如何在该层传递数据的?以及当有多台电脑共同使用它的时候,如何解决共享的问题?

数据链路层类似 一条link -从一台主机出来,连接到另外一台主机。这条link有可能是光纤,有可能很长也有可能很短。路由器从某条 link 上获取信息,然后再将信息递送到另外一条 link 上。

路由器的工作就像邮局一样:某个邮递员从你家获取了你的邮件,然后他把这些邮件放在通往集中地的卡车上,到达集中地之后,把这些信件放在一列火车上,送完别的地方。这些火车,卡车,邮递员就类比于我们的线路。

这些线路中并没有某一条线路至始至终都在传递数据,它们只是把数据往更远的地方传送了一段距离。

数据链路层不关心线路的材料是啥,它也不考虑是否连接的一端有web或者是否有其他的东西。

Problem Solved by Link Layer

  • How does data get pushed onto a link?
  • How is the link shared?

普遍适用的连接技术:

  • Ethernet
  • WIFI
  • 现代的电缆
  • DSL(数字用户线路:以电话线为传输介质的传输技术组合)
  • 卫星
  • 光纤

Link Layer Address 链路层地址 MAC

许多物理的数据链路层的设备在出厂的时候就被厂商配备了地址。

  • Ethernet
  • WIFI

厂商 给这些数据链路层的设备 分配了连续的地址,然后被送往全球各地的中心。这些连续的数字 有利于 数据 穿过 同一条被共享的线路。

  • 物理地址有利于 在某一条 link 的另一端 系统识别出属于它的信息。
  • 信息所携带的物理地址在经过一条 link 之后就会发生改变。
  • 有时候像 WIFI 和 Wired Ethernet 的 link 被多台计算机所共用。

像 WIFI 一样,当你坐在家里享受 wifi 的时候,你在和别人共享 “空气” 这一媒介,你的设备通过 链路层的地址 来识别“空气”中的哪些信息发送往你的设备。

Sharing Nicely -Avoiding Chaos

  • CSMA/CD媒体接入方法,带冲突检测的 载波侦听 多路接入方法。避免了信息的混乱。
  • 为了避免断章取义的信息,系统们必须遵守规则(协议)。
  • 以太网(Ethernet)协议比较简单。

当我们准备发送数据报的时候,我们知道也许在某个地方,有其他的主机也想要发送数据报,所以首先我们要做的事情,就是侦听,等待直到链路上没有了动静,然后我们就开始发送信息,然后继续侦听发送的信息,当信息冲突的时候,它们所做的事情是返回。经过复杂无序的计算之后,返回数据报的数量是不一定的,保证冲突的时候,任意一台主机发送的数据报都不具有优先权,这是公平的。

当我们侦听到了信息拥塞和冲突,我们等待一些信息的返回,并在之后重新发送信息。

首先我们尽可能的避免了拥塞,但是一旦我们遇到了信息拥塞,我们就重新发送 被返回的信息。

2016/7/29

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

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

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

  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. 自增ID时如何插入ID

    自增ID时如何插入ID SET IDENTITY_INSERT TABLE_NAME ON; INSERT INTO TABLE_NAME(XXX, XXX,..., XXX) SELECT XXX, ...

  2. NYOJ 47

    思路: 在n>3的时候就用前两个小的来带后两个大的,有两种方式(一就是1,2先过,然后1回来,然后n,n-1过,然后2,回来),(二就是 1,n先过去 然后1回来,然后 1,n-1过去吗.,然后 ...

  3. [LeetCode] 628. Maximum Product of Three Numbers_Easy

    Given an integer array, find three numbers whose product is maximum and output the maximum product. ...

  4. [LeetCode] 243. Shortest Word Distance_Easy

    Given a list of words and two words word1 and word2, return the shortest distance between these two ...

  5. Bootstrap学习笔记-响应式布局原理

    响应式布局的原理就是利用css3中@media媒体来实现的 <html> <head> <meta charset="utf-8"> <t ...

  6. 010-centos上安装matlab

    #001-下载matlab_R2015b和破解文件(四个)到百度云盘上下载7.6g#002-上传matlab大文件先安装vm tools,然后直接复制到虚拟机桌面#003-挂载matlab镜像并安装m ...

  7. Azkaban 入门

    需求 实际当中经常有这些场景:每天有一个大任务,这个大任务可以分成A,B,C,D四个小任务,A,B任务之间没有依赖关系,C任务依赖A,B任务的结 果,D任务依赖C任务的结果.一般的做法是,开两个终端同 ...

  8. linux常用命令:chkconfig 命令

    chkconfig命令用来安装,查看或修改 services随系统启动的启动选项的设置.是Red Hat公司遵循GPL规则所开发的程序,它可查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各 ...

  9. Js基础知识1-数组操作全解

    数组操作全解 js变量类型 var string; var name = "student",age=12; //underfined.null.boolean.string.nu ...

  10. Python入门之字符编码

    一.字节编码的基础知识 一.计算机基础知识 #1 我们的程序都是运行在特定的操作系统内,例如window,linux,mac等等#2 运行应用程序,需要要操作系统发出请求,我们双击运行的时候会向操作系 ...