从这节课开始,我们会探讨数据链路层的流量控制、可靠传输这两个功能如何实现?这两个功能的实现都和滑动窗口机制有关系。通过之前的学习,我们知道数据链路层位于物理层之上,两个相邻节点之间的数据链路层实体以帧为单位进行数据的传输。数据链路层为网络层提供服务,网络层会把IP数据报也就是分组交给数据链路层。数据链路层会把 IP 数据报封装成帧。紧接着,数据链路层会把帧交给物理层进行传输。
通过之前的学习,我们已经知道数据链路层是如何把网络层交给他的信息封装成帧的,以及为了实
现逻辑上无差错的链路,数据链路层需要提供差错控制的功能,差错控制的功能会解决帧内部的位错误。相比之下,可靠传输的功能主要是要解决帧错误,包括帧丢失、帧重复和帧失序这些问题。另一方面,当我们探讨差错控制功能的时候,我们说过,有的时候数据链路层只负责发现一个帧内部的比特错误,如果发现这种错误,会把帧直接丢弃,然后想办法让发送方重新传输这个帧。如果接收方丢弃了一个帧的话,事实上这个问题就回到了帧错误的范畴。通过接下来的学习,我们会知道怎么实现可靠传输管理,也就是怎么解决帧丢失、帧重复和帧失序这几类帧错误。只要解决了帧丢失的问题,事实上也顺道解决了在差错控制功能当中,丢弃帧带来的后果,这是可靠传输的功能。
另外流量控制这个功能我们之前也说过,这个功能的主要目的是要让数据的接收方控制数据的发送方,让它发送帧的速率别太快,以确保接收方来得及接收这些帧。无论是流量控制还是可靠传输,这两个功能的实现都与滑动窗口机制息息相关。这一点在我们的408大纲里边也体现的淋漓尽致。在408大纲数据链路层这个部分,它的第四个子标题就是流量控制和可靠传输机制,再往下的一个子标题指明了流量控制、可靠传输这两个功能与滑动窗口机制的关系,另一方面,考研大纲要求我们掌握停止等待协议、后退n帧协议以及选择重传协议这三种协议。这三个协议的规则不同,但是它们都可以实现流量控制以及可靠传输这两个功能。事实上,这三种协议都是利用了滑动窗口机制去实现相应的功能,只不过三者的窗口大小不同。接下来,我们会引入两个概念分别叫发送窗口和接收窗口。先大致说一下第一种协议,停止等待协议它的发送窗口大小为1,接收窗口的大小也是1,第二种协议,后退n帧协议的发送窗口大于1,而接收窗口的大小等于1,最后一种选择重传协议,它的发送窗口和接收窗口的大小都会大于1。接下来我们先引入发送窗口和接收窗口的概念,并且来体会这二者的作用。
假设网络中有两个节点,分别是发送方和接收方,这两个节点的数据链路层实体会以帧为单位进行数据的传输,假设现在发送方要给接收方依次发送A、B、C、D一直到L这几个帧。我们希望接收方能够按顺序依次接收这些帧。接下来我们先引入发送窗口的概念。
假设橙色的这个虚线框表示的就是发送窗口,我们用WT来表示。我们规定,只有落在发送窗口之内的这些帧,是当前允许被发送的帧。另外接收方这边我们也会设置一个接收窗口,我们用WR来表示。只有落在接收窗口内的这些帧,才允许被接收。我们先解释一下WT和WR的含义,这的W 就是Window,也就是指窗口的意思,T的含义来自Transmit,它具有发送传输的含义,接收窗口的 R,它是来自于Receive,它有接收、收到的含义。在接下来的讲解中,我们会经常使用WT、WR这种简记的方式。所以我们首先要知道T和R分别表示的是发送窗口和接收窗口。从这个图示中可以看到窗口是有大小的,上面这个发送窗口的大小等于四,它可以框住一、二、三、四,四个帧。下面这个接收窗口大小等于二,可以框住两个帧。刚才我们说发送窗口内的这几个帧是当前允许被发送的,所以发送方的数据链路层,现在可以把A、B、C、D几个帧都发给接收方,我们不妨假设发送方首先发了A、B、C这几个帧。由于A和B两个帧对于接收方而言是落在了它的接收窗口之内的。因此,接收方可以把A、B两个帧给接收下来。另一方面,由于C这个帧落在了接收窗口之外,所以接收方收到这个帧的时候会直接把这个帧给丢弃。我们再回到发送方,现在对于发送方而言,由于E这个帧落在了发送窗口之外,所以E这个帧此时暂时不允许被发送。通过这个简单的例子,我们可以初步的感受发送窗口和接收窗口的作用。同时,我们也能够体会到窗口大小这个概念,它背后的含义。
接下来故事是这样的,由于接收方已经收到了A、B两个帧,接下来他是不是可以继续接收后面的几个帧了,所以接收方的滑动窗口会向右滑动。同时,接收方会使用某一种机制来控制发送方的这个发送窗口一起往后滑动。也就是说,发送窗口向右滑动的这个动作是由接收方控制和拿捏的。接收方可以通过确认机制去控制发送方的窗口向前滑动。而刚才我们说过,只有落在发送窗口之内的这些帧,当前是允许被发送的。因此,接收方控制了这个发送窗口的滑动,也就顺理成章的控制了这个流量,或者说控制了发送方发送帧的速度。确认机制到底是怎么回事?我们会通过之后的学习进一步展开探讨。
在这个视频中,我们先对滑动窗口机制有一个大致的了解。想要实现流量控制和可靠传输这两个功能,除了滑动窗口机制之外,还有刚才提到的确认机制以及重传机制去相互配合,另外为了支持上面这三种机制的正确运行。我们还需要给每个帧进行编号。接下来我们要探讨的停止等待协议后退 n帧协议和选择重传协议,这三个协议在我们刚才提到的滑动窗口机制、确认机制、重传机制、帧编号,这四个方面的特性会有所不同。因此,在接下来的学习中,我们会重点关注每种协议的这四个方面。基于这个框架去学习会更清晰一些。
以上就是这个视频的全部内容。