美文网首页
2-分组交换

2-分组交换

作者: 徐白xubai | 来源:发表于2018-03-30 17:37 被阅读0次

    前面说到了分组交换是互联网的核心。这次来仔细讲讲分组交换。
    因为互联网是建立在分组交换上的,所以分组交换存在的问题也就是互联网通信中会存在的问题。

    为什么用分组交换

    首先要回顾一下什么是分组交换。

    说到分组交换就要再提一下传统的电路交换。电路交换的一个具体实现就是打电话。每次打电话都会建立起一个专有线路,这个线路不会和其他人分享,通话仅限于发起会话和接受会话的双方。�有多少个同时打电话的双方就需要多少条电话线。线路是非常贵的,所以电路交接的线路费用会非常大。

    分组交换是把数据进行预处理,分成多个包,每个包独立转发。如果有多个人想同时发送数据,只要把他们的数据封装成包后加入发送队列就行。实现了多人通信共享一个物理线路。

    分组交换的另外一个特点就是,每次中转的路由器转发包,只负责发给相邻的下一站。

    如下图,A把数据包发给路由器S1,S1收到包转发后,检查数据包的目的地址B,如果B的地址在自己的路由表中,那就直接发给B。如果如图中所示,B不在下一站。S1就按照一定规则选一个相邻的路由器转发。或者进行广播,把数据包发给所有相邻的路由器。


    image.png

    那么这种发送数据的方法优势在哪里?

    同样用这张图,我们来看一下电路交换是怎么发送数据的。

    A到B建立一条专用线路1,A-S1-S2-S4-B。这是一条专用线路,当线路1建立完后,在这条线路撤销之前,其他线路不能占用。怎么保证不占用?就需要S1,S2,S4都有一个状态保存,存下这条线路。S1需要记住S1-A和S1-S2的线路已经连接上处于使用中。其他路由器S2和S4也需要记住。那么如果要撤销专用线路1,那么需要把S1、S2、S4的所有和线路1相关的状态都清除。

    线路1被占用的时候,如果我们要建立一条专用线路2,C-S3-S1-A,是无法建立的。因为物理线路A-S1已经被专用线路1占用了,而A到S1在本图中只有一条物理线路。

    从这个例子我们可以看出电路交换的缺点。

    1. 低效。一个通信就要占用一条物理线路。而互联网通信一个很大的特点就是突发和高频。打开一个网页都会在短时间内发好几个请求。
    2. 状态管理。路由器需要记住每个连接。如果一个连接中间断开,那么整个线路都会断掉。如果要清除连接,需要清除所有路由器的状态。
    3. 无法处理不同速率的连接。不管一个连接需要速率是大是小, 比如看视频可能6mb/s,ssh连接可能1kb/s,都要占用一个物理线路。无法充分利用线路带宽。

    而分组交换就能很好的解决以上问题。分组交换有几个特点。

    1. 每个包独立路由(按路线发送),它会在路由器的路由里找到下一站地址。
    2. 所有的包都能分享一个链路的所有容量
    3. 路由器不会保存每个通信的状态。

    所以互联网采用分组交换的原因就出来了。

    1. 能充分利用线路。而线路是非常贵的,而互联网的一个特点就是有请求多,高频。分组交换通过共享物理线路来节省线路。
    2. 如果线路或路由器出错,分组交换适应力更强。如果某个线路或路由器坏掉,数据包找另一条路即可,不会像电路交换一样,整个线路都断掉。

    分组交换会带来什么问题

    每个方法都有自己的优点和缺点。用分组交换进行通信也会存在一些问题。想要更快更好的传输数据, 分组交换中需要研究的有这么几个问题。

    1. 延迟问题
    2. 缓存
    3. 路由器怎么转发数据包。
    image.png

    延迟

    还是以这张图为例子
    假设一个数据包从A-S1-S2-S4-B,那么会经历这么几个过程。

    1. 分组延迟。数据包从发出是需要时间的。从第一个bit传输开始计时,一直到最后一个bit开始传输,中间所经过的时间就是分组延迟。
      这个延迟的计算公式就是包的大小p除以链路的带宽r,t = p \ r

    2. 传输延迟。就是数据包在物理链路中传输所用的时间。
      这个延迟的计算公式就是物理链路的长度l除以光速c,信号的传输速度是光速,t = l \ c

    3. 排队延迟。包在发送过程中会经历过多个路由器,路由器收到包后会做一些判断处理,所以包会在路由器里面排队等待。包在路由器逗留的时间就是排队延迟。这个延迟根据情况不同而不同,用Q(t)来指代。

    总的端到端延迟就是这三个延迟相加的总和。

    image.png

    图中公式的总时间t,就是总延迟。
    这个延迟是有上下限的,下限就是假设没有排队延迟,每个路由器立刻转发数据包。
    上限就是数据包在每个路由器经历了所有缓存,经历了每个路由器的最大排队延迟,把这些排队延迟加起来,再加上传输延迟和打包延迟。就是出延迟的上限。但是这个上限太大,没有什么意义。


    缓存

    这里要讨论的缓存有两个,一个是路由器的缓存,一个是接受方的缓存。

    视频缓存

    先来讲接受方的缓存。为什么需要缓存?以播放视频为例子,视频播放是以一个均匀的速度播放的。如果数据没接受完,那么就会播放到一半停下来。但是等到数据全部接受完再播放又要等很长时间。

    最理想的状况是,视频以每秒1mb的速度播放,同时接受方每秒收到1mb以上的数据,这样就能无停顿一直播放。但是网络状况没这么理想,有时1秒能收到2mb数据,有时1秒可能只能收1kb的数据。所以必须要储存一定量的数据,在网速不好的时候,能播放储存的数据。在网速好的时候再存储数据。

    用一张图来表示。

    视频缓存

    横轴是时间t。竖轴是接受的数据。

    可以看到接受方接受数据是一个不规律的曲线。图中的Playback rete就是播放的曲线。如果我想能不卡顿的播放,那么我的播放曲线必须在接受数据曲线的右边,并且两个曲线不能有交点。如果有交点,就代表在交点的时刻,已经播放的数据量等于已经接受的数据量。

    路由器缓存

    研究路由器缓存的目的就要为了研究排队延迟。

    首先看看几个问题。
    1、为什么要缓存?没缓存有什么问题?
    2、怎么设计缓存来解决

    互联网的通信经常有突发性,可能会在短时间有好几个包到路由器,如果路由器没有缓存,那么来不及处理的包只能丢弃。加上缓存就能降低丢包率。

    怎么设计缓存是一个进阶问题,涉及到对于网络通信动态过程的研究。在这里我们可以简单的认为缓存就是一个队列,先进先出。

    而队列模型在处理网络上来的数据包时有几个特点。

    1. 提高突发性会提高延迟。所谓的突发性就是随机性。为什么会提高延迟?因为突发性会提高阻塞和丢包的概率,就会提高延迟。
    2. 提高确定性会减小延迟。如果每隔1s来一个数据包,那就可以说确定性提高了。如果能对数据包达到情况有一个预测,那么就可以做措施减少丢包的可能性。就能减小延迟。
    3. 在无丢包的情况下, L(平均队列长) = 𝜆(到达速率)* d(平均延迟)

    路由器转发数据包(简介)

    首先要明确的概念是,这里提的路由器不是狭义上的只负责转发IP数据包的路由器。这里的路由器是指的是转发数据包的设备,包括了转发以太网数据帧的交换机和转发IP数据包的路由。

    数据包达到路由器后,在路由器发出去之前首先有做的就是寻址。寻址就是根据数据包里的目的地地址来决定发给哪一个和自己相邻的路由器。

    路由器内部会有存一个地址表,路由器会对照着表来决定转发的下一个路由器。

    说到这个地方,就需要区分交换机和路由,两个设备对应不同层,交换机对应链路层。路由对应IP层。链路层的数据帧用的地址是MAC地址。IP层对应的IP数据包用的地址是IP地址。现在很多路由器都是把交换机和路由的功能集合在了一起。我们可以理解为一个设备里运行着两个协议,处理数据有先后顺序。

    连接图

    如上图,数据包会先交给IP协议,封装在IP数据包里,然后交给以太网驱动协议,把IP数据包封装在以太网数据帧里发出。IP数据包封装时需要加入发送方和接受方的IP地址,以太网数据帧封装时需要加入发送方和接受方的MAC地址。如下图。
     


    封装图

    路由器收到数据包后。先交给链路层的以太网驱动程序,链路层会先检查数据包里的MAC地址是否和自己MAC地址相符,如果不符,路由表会在自己的以太网表中查找和自己相连的路由器是否有匹配的MAC地址,然后路由器会改写数据包的MAC地址然后转发给下一个路由器。

    如果数据包的MAC地址和自己相符,那么以太网驱动程序会把数据包的以太网部分去除变成IP数据包,然后交给网络层的IP协议。IP协议会检查数据包的IP地址和设备自己的IP地址是否符合。如果符合,就可以认为这个数据包达到目的地。IP协议会把数据包的IP首部剥除后,根据数据包用的协议,交给更上一层。如果IP地址不符,那么路由器会在自己的路由表里按照一定规则寻找合适的下一站路由器。在这里要注意一点,链路层在转发数据包的时候,会改写数据包的MAC地址,但是IP协议在决定转发对象后并不会改写数据包里的IP地址。它会告诉链路层转发给哪个路由器,链路层会数据包改写加上对应的MAC地址。

    也就是说一个数据包从目的地发出后,每过一站路由器,数据包的MAC地址都会变一次,数据包的MAC地址永远指向数据包的下一站目的地。但是数据包的IP地址是不会改变的。这样在最后到达目的地的时候,就能确定是否达到最终目的地。

    路由器转发数据包的大致过程就是如此。在这里没有详细解说路由器在路由表中寻找匹配路由的详细过程。这个部分比较繁琐,会在之后的路由器详细剖析的文章里提到。在此处只需要了解路由器是在自己的路由表里寻找数据包的下一站目的地即可。


    总结

    在这篇文章中。我们了解什么是分组交换,分组交换相比电路交换的优点在哪,计算机网络选择分组交换作为基础的通信方式的原因。在确定了分组交换为基本通信手段后,我们研究了分组交换下的网络的基本问题。研究了延迟的影响和计算,缓存的作用,路由器转发数据包的过程。了解了这些问题后,我们已经对网络的通信过程有了一个基本认识。之后所有的研究都是建立在这些基础知识上的一些细节的研究。比如路由表怎么寻址,IP地址怎么设计,IP协议怎么纠错,以及更上一层的传输层的TCP和UDP协议的实现。不管这些协议细节怎么设计,整个网络都是建立在分组交换转发这个基础上。

    相关文章

      网友评论

          本文标题:2-分组交换

          本文链接:https://www.haomeiwen.com/subject/xcqvcftx.html