【Coursera】Technology :Fifth Week(1)
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)的更多相关文章
- 【Coursera】Technology :Fifth Week(2)
The Ethernet Story Bob Metcalfe Bob 参与了 Xerox 研究项目,着手解决建造一个处处连接个人计算机的架构.当时,他们刚刚完成了 Internet 的开端 -具有 ...
- 【NLP】前戏:一起走进条件随机场(一)
前戏:一起走进条件随机场 作者:白宁超 2016年8月2日13:59:46 [摘要]:条件随机场用于序列标注,数据分割等自然语言处理中,表现出很好的效果.在中文分词.中文人名识别和歧义消解等任务中都有 ...
- 【NLP】蓦然回首:谈谈学习模型的评估系列文章(一)
统计角度窥视模型概念 作者:白宁超 2016年7月18日17:18:43 摘要:写本文的初衷源于基于HMM模型序列标注的一个实验,实验完成之后,迫切想知道采用的序列标注模型的好坏,有哪些指标可以度量. ...
- 【BZOJ】1002:轮状病毒(基尔霍夫矩阵【附公式推导】或打表)
Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下图 ...
- 【scikit-learn】06:make_blobs聚类数据生成器
版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/kevinelstri/article/ ...
- 【7】解决:移动端点击a链接出现蓝色边框
[1]_blank : 浏览器总在一个新打开.未命名的窗口中载入目标文档. [2]title : 鼠标悬浮显示的文字. [3]href : 跳转到哪个链接. a{ border: no ...
- 【OpenCV】边缘检测:Sobel、拉普拉斯算子
推荐博文,博客.写得很好,给个赞. Reference Link : http://blog.csdn.net/xiaowei_cqu/article/details/7829481 一阶导数法:梯度 ...
- 【MavenWeb】初探:创建一个Maven Web项目
第一步:创建一个Simple的Maven项目 直接点下一步,把name上面的几个部分填写好,直接Finish即可. 就可以看到如下的结构: 注意点1:如果按照网上的其他一些做法来创建,你会发现少了sr ...
- 【原创】Js:日期处理(日期格式必须【yyyy-mm-dd】才能转成long的毫秒!其他的不是【年-月-日】的格式,结果会是【NaN】)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
随机推荐
- mysql 权限管理 针对表的字段 级别 授权 columns_priv表
针对Mike账号 db1库下面的t1表的 id,name字段授予select权限,age字段授予update权限 授权格式 select(要授权的字段,要授权的字段) 用户括号 括起来 .updat ...
- Python高阶函数(Map、Reduce、Filter)
Map函数 map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回. 举例说明 比如我们有一个函数f(x)=x2,要把这个函数作用 ...
- 杀死正在运行的进程: linux
1:杀死正在运行的进程:使用ps -aux|grep labor 查出进程PID 2:使用kill PID 将进程杀死.
- Filter—过滤器
过滤器的作用是什么? 1.拦截传入的请求和传出的响应,能拿到请求和响应中的数据 2.监视,修改,或处理正在客户端和服务器之间交换的数据流 3.利用过滤器的执行时机,实现Web程序的预处理,和后期的处 ...
- Trove系列(一)—入门篇
概述DBaaS是目前云计算服务的重要部分,数据库作为一种特殊的应用程序,在应用中普遍存在.而其独特性不仅在于普遍性,而且其性能对应用的表现是至关重要的.数据库的通用性和重要性使得维护一个健壮的数据库实 ...
- eclipse调优
基于Eclipse 4.7.0 (Oxygen) 目的:加快eclipse启动速度 修改eclipse安装目录下配置文件eclipse.ini(1)指定eclipse运行的jre,不让其进行搜索-vm ...
- python 线程、多线程
复习进程知识: python:主进程,至少有一个主线程 启动一个新的子进程:Process,pool 给每一个进程设定一下执行的任务:传一个函数+函数的参数 如果是进程池:map函数:传入一个任务函数 ...
- python3.4学习笔记(九) Python GUI桌面应用开发工具选择
python3.4学习笔记(九) Python GUI桌面应用开发工具选择 Python GUI开发工具选择 - WEB开发者http://www.admin10000.com/document/96 ...
- Kotlin语言Web库又添一虎将:Kweb
Kweb是一个库,您可以利用它使用Kotlin编程语言轻松构建Web应用程序.从程序员的角度来看,它基本上消除了浏览器和服务器之间的分离.这意味着只操纵DOM的事件不需要进行服务器往返.由于Kweb是 ...
- 安装SQL2008时显示:RebootRequiredCheck 检查是否需要挂起计算机重新启动。
解决方法: a.在开始->运行中输入regeditb.删除HKEY_CURRENT_USER\Software\Microsoft\Microsoft SQL Serverc.删除HKEY_LO ...
