网络核心

Posted 天“码”行空

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络核心相关的知识,希望对你有一定的参考价值。

       上一讲,我们学习了由主机(host)构成的网络边缘,我们说因特网是由边缘部分和核心部分构成。那么这一讲我们就来学习网络的核心部分。

       什么是网络的核心部分?网络核心,即由连接因特网端系统的分组交换机和链路构成的网状网络。网络的核心部分主要是为网络边缘部分的端系统提供数据交换的。比如说,主机A要向主机B通信,则主机A要通过核心部分的分组交换机和链路,将信息由A传送到B。

       网络核心部分有两种数据交换的方式,一种是分组交换,另外一种是电路交换

分组交换

        在各种网络应用中,端系统彼此交换报文(message),报文包含了将要发送的完整的数据信息,即报文能够包含协议设计者需要的任何东西(报文可以执行一种控制功能,也可以包含数据,例如电子邮件数据,JPEG图像,MP3音频文件)。报文是位于应用层的信息分组。为了从源端系统向目的端系统发送一个报文,源将长报文划分为较小的数据块,称之为分组(packet)。大多数计算机网络都不能连续地传送任意长的数据,所以实际上网络系统把数据分割成小块,然后逐块地发送,这种小块就称作分组(packet)。分组是网络层的数据单元。在源和目的地中间,每个分组都通过通信链路和分组交换机(packet switch)传送。分组交换机有两类:路由器和链路层交换机

       分组交换的核心机制是存储转发传输机制。什么叫存储转发传输?存储转发传输是指在交换机能够开始向输出链路传输该分组的第一个比特之前,必须接收到整个分组。通俗地说,就是先存储再转发,把分组全部先存储下来,然后再转发。

      通过上述图例,让我们更加形象化地来理解存储转发传输。为了简单起见,我们只考虑由两个端系统经一台路由器连接构成的简单网络。该网络中,路由器的任务相当简单:将分组从一条(输入)链路转移到另外一条(输出)的连接链路。在上图所示的特定时刻,源已经传输了分组1的一部分,分组1的前沿已经到达了路由器。因为该路由器应用了存储转发机制,所以它要等待,必须等该分组所有的比特到达路由器,才能转发。或者说,路由器必须先缓存该分组的比特,仅当路由器已经接收了该分组的所有比特后,才能开始向链路传输(转发)该分组。

 

      为了深刻领悟存储转发传输,我们现在计算一下从源开始发送分组到目的地收到整个分组所经过的时间(忽略传播时延)。分组以等于该链路最大传输速率的速度传输通过通信链路。由此,如果某源端系统或分组交换机经过一条链路发送一个L比特的分组,链路的传输(发送)速率为R比特/秒,则传输该分组的时间为L/R秒。从上图看,源在0时刻开始传输,在时刻L/R秒,最后一个比特也从源发出,在忽略传播时延的情况下,L/R时刻,源发送出最后一个比特也就意味着中间的路由器接收源发送过来的最后一个比特,即路由器刚好接收到整个分组,所以此时刻,不再只存储而不转发的状态,而是开始向目的主机开始转发分组。与源主机一样,也是经过L/R后,路由器已经传输了整个分组,并且不考虑传播时延情况下,L/R后,源主机也收到了整个分组。(目的主机从L/R时刻开始接收分组,2L/R时刻全部接收分组)。所以,总时延是2L/R。(这是由于路由器存储转发传输机制,使得在路由器这里要耽误L/R的时间:因为源主机0时刻发出第一个比特,但是只有路由器在L/R时刻发送出分组的最后一个比特时,路由器才能将0时刻接收到的比特通过输出链路向目的主机发送)。

       如果路由器不存储转发,而是一旦收到比特就向输出链路转发,总时延会发生变化吗?

       我们想想,如果交换机(路由器)收到比特就转发(不必首先收到整个分组),则因为比特没有被路由器保存,总时延是L/R。

       现在我们来计算一下,从源开始发送第一个分组到目的地接收到所有三个分组所需时间:0时刻,源开始发送第一个分组的比特,到L/R时刻,源已发送完第一个分组的所有比特,也是此刻,路由器接收完第一个分组,开始向目的地转发第一个分组的比特。此时,源开始发送第二个分组,到2L/R时刻,第一个分组全部到达目的地。且此时第二个分组也开始被路由器转发。源开始发送第三个分组。3L/R时刻,第二个分组全部到达目的地,且2L/R时刻开始发送的第三个分组也在此时刻(3L/R)到达路由器。此时路由器开始转发,在4L/R时刻,目的地收到所有的三个分组。

       一般性规律总结:通过由N条速率为R的链路组成的路径(N-1台路由器),从源到目的地发送一个分组。应用上述逻辑分析,我们看到端到端的时延是:d(端到端)= N*(L/R)   

                                    P个分组通过由N条速率为R的链路组成的路径(N-1台路由器),从源到目的地发送一个分组。我们看到端到端的时延是:d(端到端)=  (P-1+N)*(L/R)

      刚才这种情况比较简单,为什么呢?因为路由器只有一条输入链路和一条输出链路。事实上,大多数情况下,每台分组交换机由多条链路与之相连。对于每条相连的链路,该分组交换机具有一个输出缓存,也叫输出队列。它用于存储路由器准备发往那条链路的分组。如果到达的分组需要运输到某条链路,但发现该链路正忙于传输其他分组,该到达分组必须在输出缓存中等待。等待就必定要花费时间啊,由此除存储转发时延外,分组还要承担输出缓存的排队时延。 排队排多久,不确定,取决于网络的拥挤程度。这个过程就好比我们坐火车排队检票时,存储转发时延就好比第一个乘客到所有乘客过检票口这段时间。排队时延则不确定了,它取决于前面有没有其它车次的乘客正在检票和列车是否晚点等其它因素,排队时延是不确定的。

       我们来想一种这样的情况,就是某路由器的某条输出链路上一直有其它路由器或交换机传输过来的分组,并且源源不断。而该路由器又与源连接,且源正在发送分组,当分组的比特从源到达路由器时,发现路由器的输出链路已经被占用,那么该分组的比特就得排队,排队即作为输出队列存储于路由器中。但是很不幸,由于输出链路传输的分组较大,所以从源过来的分组就必然要排队,但是由于队列长度有限,或者说缓存空间的大小有限,一个到达的分组可能会发现该缓存已经被其它等待传输的分组完全充满了。在此情况下,将出现分组丢包的情况,到达的分组或已排队的分组之一将被丢弃。

 

    上图显示了一个简单的分组交换网络,如图例,分组被表示为三维厚片。厚片的宽度将表示该分组中比特的数量。在这张图中,所有分组具有相同的宽度,由此有相同的长度。假定主机A和B向主机E发送分组。主机A和B先通过100Mbps的以太网链路向第一的路由器发送分组。该路由器则将这些分组导向到一条15Mbps的链路。在某个短时间间隔内,如果分组到达路由器的到达率超过15Mbps,这些分组在通过链路传输之前,将在链路输出缓存中排队,在该路由器中将出现拥堵。例如主机A和主机B每个都同时发送了5个紧接着的分组突发块,则这些分组中的大多数将在队列中等待一些时间。想一想,这是不是与节假日期间,景区排队一样的道理呢?

        分组交换的核心机制是存储转发传输。路由器收到分组将转发给下一个结点,该结点可能是路由器,也可能是主机(端系统)。如果说某个路由器与多个结点相连,那么该路由器怎么知道要将分组传输到哪一个结点,才能无误地完成通信。比如以上图为例,右上角的路由器在收到来自左边路由器传输过来的分组后,是发送给主机C还是传输给下面的那个路由器呢?

        不同的计算机网络实际上是以不同的方式完成分组转发的。在此我们仅介绍在因特网中所采用的方法。在因特网中,每个端系统具有一个称为IP地址的地址(tips:我们打开网页搜索IP地址就能查询到本机的IP地址)。当源主机要向目的主机发送一个分组时,源在该分组的首部包含了目的地的IP地址。如上图,A要向D发送分组,则该分组的首部包含了D的IP地址。如同邮政地址那样,该地址具有一种等级结构。当一个分组到达路由器时,路由器检查该分组的目的地址的一部分,并向一台相邻路由器转发该分组。为什么路由器知道分组的一部分目的地址后,就能正确的转发呢?每台路由器具有一个转发表,用于将目的地址或目的地址的一部分映射成输出链路。当某分组到达一台路由器时,路由器检查该地址,并用这个目的地址搜索其转发表,找到适当的出链路。路由器则将该分组导向该出链路。

        路由器使用分组的目的地址来索引转发表并决定适当的出链路。思考一下关于转发表是如何设置的?原来,因特网中有一些特殊的路由选择协议,用于自动设置这些转发表。

电路交换

        通过网络链路和交换机移动数据有两种基本方法:电路交换(circuit switching)和分组交换(packet switching)。在电路交换网络中,在端系统间通信会话期间,预留了端系统间沿路径通信所需资源(缓存,链路传输速率)。在分组交换网络中,这些资源不是预留的;会话的报文按需使用这些资源,其后果是不得不等待(即排队)接入通信线路。这是分组交换和电路交换的不同点。

        我们举一个电路交换的例子,就是传统的电话网络。考虑当一个人通过电话网向另外一个人发送消息时所发生的情况。在发送方能够发送信息之前,该网络必须在发送方和接收方之间建立一条连接。这是一个名副其实的连接,因为此时沿着发送方和接收方之间路径上的交换机都为该连接维护连接状态。用电话的术语说,该连接被称为一条电路(circuit)。当网络创建这种电路时,它在连接期间在该网络链路上预留了恒定的传输速率(表示每条链路传输容量的一部分)。既然已为该发送方-接收方连接预留了带宽,则发送方能够以确保的恒定速率向接收方传送数据。

     上图显示了一个电路交换网络。在这个网络中,用4条链路互联了四台电路交换机。这些链路中的每条都有4条电路,由此每条链路能够支持4条并行的连接。每台主机都与一台交换机直接相连。当两台主机要通信时,该网络在两台主机之间创建一条专用的端到端连接。因此,主机A向主机B发送报文,网络必须在两条链路的每条上先预留一条电路。在这个例子中,这条专用的端到端连接使用第一条链路的第二条电路和第二条链路的第四条电路。由于每条链路有四条电路,对于由端到端的连接所使用的每条链路而言,该连接在连接期间获得链路总传输容量的1/4。例如,如果有两台临近交换机之间每条链路具有1Mbps传输速率,则每个端到端电路交换连接获得250kbps专用的传输速率。

      与此相反,考虑一台主机要经过分组交换网络向另一台主机发送分组所发生的情况。与使用电路交换相同,该分组经过一系列通信链路传输。但与电路交换不同的是,该分组被发送进网络,而不预留任何链路资源之类的东西。如果因为此时其它分组也需要经过该链路进行传输,而出现拥堵,则该分组不得不在传输链路的发送侧的缓存中等待而产生时延。因特网尽最大努力以实时方式交付分组,但它不做任何保证。

 

 

 

 

以上是关于网络核心的主要内容,如果未能解决你的问题,请参考以下文章

基于matlab的网络通信系统自适应传输模糊控制器的实现

Java流

使用IGP和BGP的配合达到降低路由容量目的的实验与总结

计网基础-数据交换之电路交换

用C# TextBox控件编写列车时刻表查询,求查询代码!

JavaIO学习总结一