第二周:计算机网络概述(下)

一、计算机网络性能指标(速率、带宽、延迟)

1、速率

2、带宽

3、延迟/时延

前面讲分组交换的时候介绍了,有一种延迟叫“传输延迟”,即发送一个报文,从第一个分组的发送,到最后一个分组的发送完成的这段时间,就是这个分组的传输延迟。

事实上,在传输分组的过程中,除了传输延迟外,还有其他延迟。

问:分组交换为什么会发生延迟甚至数据丢包?

答:在分组交换网络里,当数据分组到达一个路由器,路由器按照存储转发的工作方式,会先把这个分组先暂存,然后确定这个分组在哪个链路进行转发,如果该链路正在转发其他分组,那这个分组就只能等待,这个排队的时间就是延迟。任何路由器供分组排队的缓存都是有限的,如果缓存满了却还有源源不断的分组到达,那就只能把分组扔了,这时候就出现了“丢包”的情况。通常作为分组,如果其到达的速度超出了输出链路的容量的时候,丢包的现象就难以避免了。

(1)四种分组延迟

在分组交换过程中,分组从到达一个节点(路由器)开始,到这个分组被成功转发到下一个节点,所消耗的时间主要有以下4种:

节点处理延迟:分组到了这个路由器,路由器要对这个分组进行处理,比如:检查以下这个分组有没有错、根据这个分组携带的地址信息决定在哪个接口把它转发出去等等。现在路由器的处理能力都比较强,这个时间是比较小的,不会超过毫秒级。在很多讨论的时候会把这个时间直接忽略掉。

排队延迟:当分组确定从哪个链路转发,而恰巧那个链路又刚好在传输其他分组的时候,分组就要在这个路由器节点上排队,这个时间消耗就是“排队延迟”。显然,这个排队时间是很不确定的

传输延迟:当我们的链路开始传输一个分组的时候,从传输这个分组的第一个比特开始,到最后一个比特发完,需要的这段时间就是传输延迟。传输延迟取决于分组长度L(bits)、链路带宽R(bps),传输延迟=分组长度/链路带宽

传播延迟:当一个分组发出来以后,它是通过信号(电信号、光信号、无线电波信号)传播到下一个节点上去的。这个信号在介质上传播显然也需要时间,这个时间就是“传播延迟”。传播延迟的时间和物理链路长度、信号传播速度有关。传播延迟=物理链路长度/信号传播速度

在分组交换的过程中,一个分组从到达某个节点开始,到它成功到达下一个节点,称为“一跳”。在这一跳的过程中,所消耗的时间=节点处理延迟+排队延迟+传输延迟+传播延迟

注意:

传输延迟和传播延迟不是一回事儿。传输延迟是发送一个分组需要多长时间,传播延迟是信号从这点经过链路传播到下一点需要的时间。下图是一个很好的类比:一个车队就好比一个分组,车队过收费站排队所花的时间是传输延迟,而在高速公路上行驶所花掉的时间就是信号传播延迟。

(2)用流量强度描述排队延迟

上面讲的4种延迟中,排队延迟比较特殊。因为它具有很强的不确定性。为此,我们引入了“流量强度”的概念。

理解:

传输长度为L的分组的时间t=L/R,那么t时间内平均有多少个分组到达呢?就是a*t,即La/R。如果La/R接近0,说明t时间内几乎没有分组到达,那么平均排队延迟就很小;如果La/R接近1,说明t时间内我转发一个分组,平均又有接近1个分组到达,那么平均排队延迟就很大;如果La/R大于1,说明我处理完一个分组却又有1个以上的分组到达,那么就会超出服务能力,平均排队延迟无限大。

二、计算机网络性能指标(时延带宽积、丢包率、吞吐量)

1、时延带宽积

时延带宽积:当我发送的第一个bit,到这个bit到达这段链路最终目的地的这段时间内,我一共发送了多少个bit的数据量。

在网络中,我们也可以说某段链路的比特长度是多少bit,其实指的就是时延带宽积。

2、分组丢失(丢包)

因为我们的路由器等网络设备的队列缓存容量总是有限的,当缓存满了,后续到达的分组没有缓存了,这时候就会出现“丢包”。

不同的网络对于丢包的处理是不一样的,比如Internet,丢了就丢了;有的网络会采取重发(比如前一个节点或源主机重发一下这个分组),这些先不多说了,以后会讲。

在网络中,丢包是我们重点要考虑的现象,我们一般会用“丢包率”来对网络的丢包程度进行衡量。“丢包率”就是在一定统计时间内,丢包数量在你发的数据总数中所占的比例。

3、吞吐量/率

吞吐量/率:实际上说的也是一种速率,只不过这个速率强调的是从发送端发送数据,到接收端收到数据这样的两端之间的数据的传送的速率

从端到端角度来看,吞吐量取决于端到端的这条路径上的那条瓶颈链路(即带宽小的那条链路)

如果我们考虑较为复杂的互联网场景,如下图:假设有10条连接共享这个链路

三、计算机网络体系结构

1、分层结构

很多复杂系统都会采用分层结构,计算机网络的分层结构可以类比航空旅行:

2、为什么采用分层结构?

首先,分层系统的结构很清晰,层和层之间的关系很明确,所以分层结构很容易去识别复杂系统的组成部分,以及这些组成部分之间是什么关系。在计算机网络中,按照分层结构所提出的体系结构通常也被称为“参考模型”。

其次,分层结构也体现了模块化思想。模块化可以很好地封装内部,对外开放接口,至于内部如何实现,对外部来说是透明的,内部的实现怎么变化,外部都是感受不到的。因此这种分层就易于整个系统的更新维护。

第三,分层结构有利于标准化。如果大家都对某一个分层结构达成共识了,我们在实现相应功能的时候,都按照这样一个层次结构去实现,那就很容易实现标准化

问:分层结构是否有不利之处?

答:如果分层太多可能会导致系统效率很低。比如你去哪儿办事儿,他可能要一层层审批,层次越多,审批时间就越长,效率就越低。

3、分层网络体系结构基本概念

四、OSI参考模型

OSI参考模型是一个非常具有代表性的分层的网络体系结构。这个模型提出的目的是希望能够支持不同网络之间互联互通。当时的历史背景是有很多企业开发设计了不同的网络,这些网络之间很难互联互通。因此如何实现互联互通是当时一个急需解决的问题,所以提出了OSI这样一个标准,希望实现不同企业开发的网络都能实现互联互通。

因此,OSI参考模型实际上是我们网络系统互联的一个国际标准。但是这个国际标准仅仅是我们从理论上学习和理解网络通信的一个工具或理论模型。因为从市场上来说,这个东西失败了。

OSI参考模型将网络系统从功能上划分为7个层次,这7个层次从下到上依次是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。每个层次完成不同的功能,所有层次共同协作完成整个网络通信

1、用OSI参考模型解释网络通信的过程

注意:应用层、表示层、会话层、传输层这四个端到端层并不是真能够沿着虚线的协议横向的端到端,而是要沿着实线的箭头,通过各个层级再通过物理链路来进行消息传输。

2、OSI参考模型封装与通信过程

上图中,数据链路层比较特殊,它是对分组加头又加尾,其它层都是只加头。 

问:层和层之间为什么需要数据封装?即为什么过一个层就要加一个头呢?

答:因为数据封装是为了增加控制信息(包括地址信息、差错检测编码)

地址信息:标识发送端/接收端。即一个数据包发出去以后,要怎么保证它被正确的接收方接收,怎么让接收方知道是谁发送的这个数据包。

差错检测编码:用于差错检测或纠正。用于保证数据传输过程中不出错。在很多协议中,可能还会加上一些其他控制信息,比如:优先级(比如我发出一个数据包,并希望这个数据包能优先被处理)、服务质量(比如我希望网络为我这个数据包提供不同类型的服务)、安全控制等。

五、OSI参考模型的各层详解

OSI底层:就是物理层、数据链路层、网络层这三个非端到端层次。

1、物理层功能

(1)接口特性

简单说,物理层所实现的功能就是以bit为单位,在具体的物理介质上完成一个一个bit的传输。

具体来说,它要定义一些接口特性

接口特性:作为物理层,我们的主机和发送设备之间的接口是啥样的,我们发送设备和物理设备之间的接口是啥样的,这些都是物理层所要定义的规范。一般来说,在物理层所要规范的这些接口特性主要包括:机械特性、电气特性、功能特性、规程特性。

机械特性:就是这个接口是什么样的几何形状(方形口or梯形口or圆形口),插口在哪侧,插头在哪侧,这些都有详细的规定。

电气特性:就是在这个接口上传输信号使用多大电平、多高电压等等。这些就属于电气特性。

功能特性:通常会定义我这个接口到底有多少个引脚,每个引脚都是什么功能(比如这个引脚是接地的,另一个引脚发控制信号,那个引脚用来发数字信号等等)

规程特性:简单说就是定义这个接口在工作过程中遵循着什么样的过程,所以有时候也称之为“过程特性”,即这个接口,它的通信过程或工作过程是什么样的(比如哪个引脚先给一个信号,另一个引脚再给一个反馈信号,另一个引脚再发送数据信号等等)。这就是规程特性。

(2)比特编码

比特编码:物理层既然要实现最基本的bit的的传输,那它显然就必须要解决比特编码的问题。即:我到底用信号的什么特征来表示我这个比特呢?即用什么表示0,又用什么表示1呢?这就是“比特编码”。主要用了通信的调制解调相关的技术。

(3)数据率(数据传输速率)

数据率:就是在物理层我以多快的速度发送数据,这和介质、通信系统等因素有关。我们说的百兆网络、千兆网络说的就是这个数据率。

(4)比特同步

比特同步:就是我发送端发送一个bit,接收端刚好能收到这个bit,不会错过这个bit的接收时间,或者提前接收导致没能接收到这个bit。它事实上解决的是“时钟同步”的问题。

(5)传输模式

传输模式:就是在物理上我按照什么方式来传输这个数据。主要有三种模式,分别是单工、半双工、全双工

单工(Simplex):只能单向发送数据,比如传统的电视就是单工通信,电视台发送什么信号,我们电视机就接收什么。

半双工(half-duplex):也叫交替双向,就是可以双向通信,但是只能交替进行,比如对讲机,发和收不能同时进行。

全双工(full-duplex):就是发数据的同时也可以接收数据。一般全双工通信通常都会采用独立的两个信道。

2、数据链路层功能

物理层解决了单一比特的传输问题,数据链路层解决的是“这个比特到底应该由谁接收,以及如果一个比特出现了错误该怎么纠正”这些问题。

如上图,按照OSI参考模型,数据链路层接收网络层的数据单元,然后加头加尾构成一个帧,然后把整个帧交给物理层,物理层按一个一个比特进行传输。

因此数据链路层解决的主要是“节点到节点的数据传输”。这里的节点可能是主机,也可能是其他的网络设备。也就是说,数据链路层解决的是物理链路直接相连的两个相邻节点之间的数据传输。这个数据是以“帧”作为数据单位进行传输的。

(1)组帧(Framing)

那么数据链路层既然要解决物理链路直接相连的两个相邻节点之间的数据帧的传输,那么它必须要解决“组帧(Framing)的问题”,即组成一个数据帧。

组帧:就是加头加尾,头部加上一些地址信息,尾部加上一些差错检测等东西,这些根据不同的协议来构成帧。组帧的目的在于让接收的一端从物理层收到一系列比特流的时候,能够成功的切分出不同的数据帧,并且知道数据帧中哪些是头部和尾部信息,然后根据头部和尾部信息完成数据链路层协议所规定的功能。

(2)物理寻址(Physical addressing)

物理层只能发送一个个比特,这些比特没有更多的含义,那么这些比特发出去之后到底谁来接收是不清楚的,所以在数据链路层要解决“物理寻址”的问题,即增加一个地址。

注意,物理寻址包括物理地址并不在物理层,而是在数据链路层!!!因为物理层全是0和1组成的比特流,它是没办法寻址的。

物理寻址(physical addressing):就是在帧头中增加发送端和/或接收端的物理地址标识数据帧的发送端和/或接收端接收。

(3)流量控制(Flow control)

此外,数据链路层还要解决“流量控制”问题。就是匹配发送端和接收端的发送速度和接收速度,避免接收端接收数据的速度太慢,发送端发送得太快,导致接收端缓存过多从而不得不扔掉数据,或者说避免淹没接收端。

(4)差错控制(Error control)

数据链路层还可以实现“差错控制”。就是在构造数据帧的过程中,采用一种特殊的编码(差错编码),加入到数据帧中,发送到接收端,接收端收到数据帧后,根据差错编码判断数据是否有错,如果有错,就要求发送端重传损坏或丢失的帧,并避免重复帧。

(5)访问(接入)控制(Access control)

如图上图,这些节点都使用共享的介质进行通信,那如果某个节点正在使用该介质进行通信,如果其他节点也用那就会冲突。这时候数据链路层就要有相关的协议,来解决介质的访问控制,即规定在任一时刻决定哪个设备拥有链路(物理介质)控制使用权。

3、网络层功能

从层次角度上来说,网络层完成的功能是从上面的传输层接收到数据单元,构造网络层次分组,然后交给数据链路层进行传输。

(1)逻辑寻址(Logical addressing)

网络层要负责从源主机到目的主机数据分组(packet)的交付。那么,我们怎么能保证源主机发送的分组,经过中间路由器转发之后,在下一个链路传输,再转发,再传输,最终送到目的地呢?这里就有一个非常重要的内容——寻址。因为网络层在从源主机把数据交到目的主机的过程中,可能会跨越多个网络。这个时候我们链路层里面使用的物理寻址就不灵了。就好比你在班级有一个学号,但是出了学校,靠这个学号给人发信件是不行的,得靠邮政地址,这个“邮政地址”具有全局唯一的特性。

所以为了保证穿越多个网络的网络层分组能够从源主机成功被送到目的主机,就必须要进行网络层的“逻辑寻址”,保证这个逻辑寻址在网络层不管跨越多少个链路和网络,这个地址都是唯一的。我用这样一个唯一的地址来标识网络层分组,可以保证数据可以被正确地送到目的地。在Internet网络中,这就是IP地址。

(2)路由

网络层除了寻址之外,还要解决一个“路由”的功能,帮助数据分组选择路径,这样才能保证数据从源主机到达目的主机。

(3)分组转发

作为路由器这些网络设备,在真正传输的过程中,要完成“分组转发”。即:收到一个分组,根据其告诉的路由,把它转发到下一个接口,以此类推。现代网络就是按照前面介绍的“分组交换”这样的存储转发方式工作的。

上图展示了分组转发的原理,图中红色字母表示网络层的唯一逻辑地址,绿色的数字代表物理地址。数据帧中,S表示源主机地址,D表示目的主机地址,帧最前面2格的数字表示源物理地址和要转发的物理地址。我们可以注意到,在整个过程中,源和目的的网络层地址是不变的,这样才保证了数据不管跨越多少网络,最终都能把数据送到目的地。

所以概括地说,网络层完成的功能是实现从源主机到目的主机能够跨越网络、跨越多个链路的数据分组的传输。这里面第一要引入唯一的逻辑地址(网络地址);第二要解决路由问题;第三要实现分组转发。

4、传输层功能

如上图,传输层从它的上一层(会话层)接收会话层的协议数据单元,构造传输层的协议数据单元(我们称之为“段segment”,因为传输层会把会话层发来的完整报文分割成一个个数据段,然后构造它的协议数据单元,然后交给网络层进行传输)

前面讲过(如上图),传输层是负责“端到端”传输的,所以它完成的是从源到目的,这样一个进程间的完整报文的传输。传输层从会话层接收的是完整报文,交给会话层的也是完整报文。

因此,传输层完成的报文包括:

(1)分段和重组

报文的分段和重组:从发送端将报文分成一个个数据段segment发出去,到了目的层(传输层)之后,再把它重新组装在一起。

(2)SAP寻址

SAP寻址:既然传输层要解决的是进程到进程之间的通信,所以需要寻址,相当于Internet的端口号,保证发出去的每个段被正确的进程接收。

1)传输层接收到会话层的数据单元“S-PDU”之后,对其进行分割,形成一个个传输层的段“Data-1”和“Data-2”,其中x表示源IP地址,y表示目的SAP地址,在Internet网络中就是端口号。

2)传输层的段交给网络层,构造网络层的数据单元,“S”和“D”是网络层的逻辑地址。

3)网络层的数据单元进一步交给数据链路层,构造数据帧,数据帧里有物理地址。

4)通过网络(Internet)传输到目的,目的再一层一层剥离头尾、头部、相关地址信息,按照地址信息向上正确提交。

5)最终,在目的的传输层把数据交给会话层,完成通信。

(3)连接控制

因此,传输层从功能上来说,会有“分段重组”。此外,传输层作为从下到上看第一个端到端的层次,还可以实现端到端的连接控制,包括端到端的建立、维护、拆除。

注意,传输层这里的“连接”并不是电路交换中的连接,传输层的连接是一种“逻辑连接”,是一种虚拟的连接。

(4)流量控制

有的传输层协议还会解决端到端的流量控制,即不管中间经历多复杂的网络,我从源端系统到目的端系统如何匹配数据的发送和接收速度的问题。

(5)差错控制

就是从端系统的角度引入一些差错编码、差错纠正机制来保证信息的正确。比如TCP协议就实现差错控制,而UDP就不实现。

5、会话层功能

OSI参考模型的会话层完成的功能是:接收表示层的数据单元,构造会话层的协议数据单元,再发给传输层。会话层在处理表示层数据单元的时候,并不会对其进行分割,最多是在里面插入一些控制信息。

会话层的主要功能就是进行对话管理(对话控制 dialog controlling),两个进程之间一次通信就是一个对话,会话层来支持这个对话的建立、维护和拆除。

同时,它还能实现对话同步(synchronization),即:在数据单元中插入一些同步控制点(syn),一旦数据传输在某个控制点的附近中断了或出现了意外,那么下次恢复的时候只需要恢复最近的控制点就可以了。

事实上,OSI参考模型从功能上来说,会话层的功能是非常少的,所以会话层也是OSI参考模型中最“薄”的一层。在实际的Internet网络中,这个层是不单独存在的,或者说根本就没有这一层。

6、表示层功能

表示层得到应用层的协议数据单元,构造表示层的协议数据单元,交给会话层。

(1)数据表示转化

表示层解决的问题一就是:从源主机和目的主机或端到端的角度解决交换信息的两个系统之间的信息本身的语法和语义问题。具体说就是解决两者之间所交换信息的数据表示与转化,不同的计算机系统数据的表示可能是不同的,比如大端数和小端数。如果把数据从一个源主机,原原本本地按照字节顺序复制,送给目的主机,由于二者字节顺序不同,可能得到的结果是不一样的。表示层就是要解决这个问题。

解决方式就是:在发送一端把数据转换成一个独立的编码,到了目的主机之后,目的主机的表示层再把这种独立的编码转换成主机相关的编码,这样就不会出现差错了。

(2)加密/解密、压缩/解压缩

表示层还可以对应用层协议数据单元的数据进行加密解密,以及压缩解压缩。

表示层完成的功能实际上也并不多,在实际网络里,这一层也不是独立存在的,其实是应用层做的。

7、应用层功能

应用层是最丰富的的一层,在计算机网络中我们可能有很多应用,这些应用的通信功能都是对应的应用层,也就有了不同的应用层协议,比如上图中,HTTP是Web应用的应用层协议,FTP是文件传输的应用层协议,SMTP是电子邮件的应用层协议。

即,所有的网络应用在第七层都会遵循该应用的应用层协议,去处理应用数据。即:用户把数据交给相应的应用,网络应用通过该应用的应用层协议处理用户的数据,然后构造成应用层的协议数据单元交给表示层。

因此,应用层从功能上来说,就是给用户提供了一个使用网络的接口,具体说就是使用一些用户代理(浏览器、收发邮件的软件等),然后这些应用代理(软件)就基于该应用的应用层协议实现应用层数据的通信或交换。

典型的网络应用非常多,包括:文件传输应用(FTP)、电子邮件应用(SMTP)、Web传输应用(HTTP)

以上,就是OSI参考模型的7个层次,每个层次完成不同功能,相邻层次之间通过接口完成数据的上下传递,对等的相同层次遵循相同的网络协议来交换协议数据单元。

六、TCP/IP参考模型

TCP/IP参考模型一共有四层,从下到上分别是:网络接口层、网际层、运输层、应用层。

在TCP/IP参考模型中,网络接口层并没有去定义具体的相关协议,它的工作只是封装网际层的IP分组。然后上层的传输层定义TCP和UDP两个协议,然后再向上的大部分网络应用都是基于TCP或UDP。

因此,TCP/IP参考模型的一个特点就是:所有的应用其实都是架构在IP之上的(Everything over IP)。

网络接口层作为底层网络,只要能够封装IP分组,能够把IP分组从一点传输到另一点(比如从一个主机传输到另一个主机或从一个路由器传输到另一个路由器)就OK。(IP over everything)

TCP/IP这样的一个特点也恰恰是我们Internet网络能够快速发展的一个主要因素。既然底层网络没有限制,只要在这个网络上能够封装IP分组,你就能够作为我们互联网的一部分,构造我们的Internet网络,所以网络发展起来就非常快,非常open。

七、五层参考模型

5层参考模型综合了OSI和TCP/IP的优点。5层参考模型是我们现在网络中从理论到实践,应用最多的,也是一个非常好的参考。很多情况下我们都会用5层模型来讨论问题。本课程的内容组织和讲解基本上也是按照5层模型来进行的。

这五个层次从功能上与前面讲的OSI参考模型是非常类似的,同时也和TCP/IP模型基本对应,只不过数据链路层刚好对应了TCP/IP参考模型的网络接口层。

按照这样的五层模型,我们来看一下五层模型所解释的数据的封装和传输过程是什么样的

1)源主机的应用层准备一个报文M。

2)报文从源主机的应用层到达传输层之后,传输层要构造一个“段”(有可能对报文进行拆分,但示意图中没有拆分),同时会加上一个段头H_{t},然后交给网络层。

3)网络层也会加上网络层的头H_{n},通常网络层构造的数据单元被称为“数据报(datagram)”,进一步交给数据链路层。

4)数据链路层对数据报构造数据帧(frame),构造数据帧一般会加头H_{I}加尾(图中没有画尾)

5)数据帧构造好后,再交给物理层,就是一个个bit了,这个帧就会通过物理层传输到交换机的物理层。

6)交换机还原数据帧到链路层,链路层进一步传输到路由器。

7)路由器从物理层接收到这个帧以后,还原到链路层,链路层去掉帧的头和尾,还原到网络层的数据报,网络层数据报进行交换转发,数据链路层再次封装,传到物理层,通过物理层传输到目的主机的物理层。

8)到达目的主机物理层后,还原到链路层,链路层去头去尾,还原到网络层数据报,在网络层去掉头以后,还原到传输层的段,在传输层去掉头之后,还原到应用层的报文。报文就成功地被交付到目的主机了。

不同层的数据叫法:

应用层:报文

传输层:段

网络层:数据报(datagram)

数据链路层:数据帧(data frame)

物理层:比特(bit)

八、计算机网络与Internet发展历史

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值