那这一章呢就是所有同学都非常期待的大头,它所要考查的内容非常多,而且非常容易出错。所以一定要好好听了。
那我们先把第三章呢做一个小的剧透。我们主要先是要讲链路层的功能。接着呢就会讲链路层的两种信道,分别是点到点以及广播这两种信道。第三个呢就是局域网和广域网。这两种网络在这个数据链路层上面都使用的IP协议。第四个就是链路层它所使用的设备。主要是交换机还有网桥。那这里面,说是重点的话,啊其实都应该算是重点。而这个功能里面的具体的几个功能,也是我们考查的重点。比如说组帧,差错控制还有流量控制等等,这些大家都要非常的熟悉。
我们先来看一下数据链路层的功能概述。
那在讲功能之前呢,我们先要确定这样一个事情。也就是在研究数据链路层的时候,我们要用一个什么样的思想。
这是一个非常典型的数据通信模型。那A假如说要跟B通信,就要给B发送数据。那发送的数据呢,先经过应用层进行一个封装,在传输层再封装一次,到网络层再封装一次,到数据链路层呢加头加尾再封装一次。然后转成0101比特流的形式,放到链路上进行传输。那经过这个中间系统,就要先经过一步解封装,从物理层开始,到数据链路层解封装,再到网络层解封装。然后呢再从网络层开始自上而下地对数据进行一个封装。接着再在数据链路上面进行一个传输,那传输到终端,传输到这个信宿的时候呢,我们就把这个数据自下而上的一步一步地再解封装,最后还原出原始的数据,送给这个B。那在这样一个过程当中呢,其实我们可以看到数据是自上而下先封装,然后再解封装,再封装再解封装这样一个过程。
然而当我们专门去研究数据链路层它的问题的时候呢,很多情况下,我们只是关心在协议栈当中,水平方向的各个数据链路层。所以,当这个A主机,要给B主机发送数据的时候呢,我们就可以想象数据是从A的链路层,自左向右水平方向发送的,就像这样一个箭头所示。那这个就是我们在这一章研究链路层的一个研究思想。
那接下来我们看一下数据链路层的基本概念,首先呢这是一个互连的网络图。现在有三个网络,那在这个网络当中呢有几个基本术语大家要清楚。首先第一个就是结点。结点呢主要指的就是主机和路由器,可以看到这样都是结点,而相邻着的也就是说用这样一条线连接起来的两个结点呢就叫做相邻结点。第二个就是链路。链路指的就是网络当中两个结点之间的物理通道。链路的传输介质主要有双绞线、光纤和微波,分为无线链路和有线链路。那在这个图当中啊,我们可以看到任何两个结点之间的连线都叫做一条链路。那这个链路强调的是在物理层面上的物理通道。它体现的传输介质呢就分为两种,有线的和无线的,所以链路就分为有线链路和无线链路。
那与链路相对应的呢,叫做数据链路。它是网络当中两个结点之间的逻辑通道。如果把实现控制数据传输协议的硬件和软件加到这个链路上就构成了数据链路。那如何区分,我们就看它是逻辑的还是物理的。如果是物理通道呢,就是链路。如果是逻辑上的通道,就是数据链路。
那下一个就是帧。帧呢,是链路层的协议数据单元。它的作用呢是封装网络层的数据报。这个我们之后在组帧讲这个功能的时候会格外讲到。
所以说数据链路层它主要是负责通过一条链路从一个结点向另一个物理链路直接相连的相邻结点传送数据报。这句话实际意思就是在说,我们这个数据链路层它的主要职责,就是把上层网络层交付给它的数据报,安全地无差错地传给它的相邻结点。
就像一个搬运工的角色。它要把这个货物安全地搬运到相邻的位置。
那接下来我们就看一下数据链路层的一些主要功能。数据链路层呢在物理层提供服务的基础上会向网络层提供服务,而其中最基本的服务就是将源自网络层来的数据可靠地传输给相邻结点的目标网络层,其主要作用呢就是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造为逻辑上无差错的数据链路,使之对网络表现为一条无差错的链路。
那这句话非常长,我们首先举这样一个例子。假如说有一个公司的大Boss,他呢就是网络层。那他有一个小秘书,她就是负责数据链路层。那现在大Boss发话了,说你把这5份文件发送B公司。那小秘书她不可能自己亲自去因为她因为她有其他很多的工作要做,
那她就把这样一份工作呢交给了一个啊一个下级员工,那这个员工呢他是一个傻子,他是物理层。
所以小秘她就想,如果我要把这个东西给傻子的话,我就要先提前准备好,要把这个五份文件分别编号,编成1、2、3、4、5。这样如果到时候发生丢失啊或者是重复,我也好找,然后好去解决这个问题。
那她把这五份文件给了傻子,
傻子呢就跋山涉水,
把这个五份文件送给了B公司的一个小秘书。那小秘书现在就发现,诶,你这五份文件没有发全,我只收到了你给我的1、2、3号文件,那快去把4、5号找回来。那傻子就把这个4号和5号文件找回来,再给这个小秘。
那现在小秘书呢就收齐了5份文件,把这5份文件交给了大Boss。啊大Boss就非常开心,所以说这样就是一个网络层、数据链路层以及物理层它们三个层次之间的一个关系。可以看到物理层它比较傻,它特别容易把这个数据弄丢,所以数据链路层呢就要提前准备好,未雨绸缪,把可能要发生的差错都提前预知好,然后呢进行一定的差错控制。所以说它相当于给网络层就是提供了一个无差错的一种服务,使得网络层好像觉得,诶,没有发生什么差错,我们这个数据链路层干的很好。
那为了实现这种无差错的一个数据链路呢,我们链路层它就有一定的功能。首先第一个功能就是为网络层提供服务。这种服务呢有三种,无确认无连接服务,有确认无连接服务以及有确认面向连接服务。首先这个无确认无连接服务,通常用于实时通信或者是误码率比较低的一个通信信道。也就是说源主机在发送数据的时候不用事先跟目的主机建立好一个链路的连接,啊而且这个目的主机呢收到了数据帧的时候也不需要返回确认,如果帧丢失了数据链路层也不负责重发,而直接交给上一层处理。那这种服务呢其实不太负责的,但是为了通信,啊为了实时的通信为了更快,所以就要有这种服务。那第二种就是有确认无连接的服务,那这种也是事先不需要建立连接,但是呢目的主机在收到数据的时候必须要发回一个确认,那如果源主机发现在规定的时间内没有收到你这个确认信号,它就把刚才没有收到确认的这个帧,重新传输一次。这样就可以提高我们这个数据链路层或者说链路上的可靠性了。那这种服务呢比较适合于误码率相对来说比较高的通信信道,比如说无线通信。第三种呢就是有确认面向连接服务。那这种呢就是最安全最可靠的了,事先要建立好连接,同时呢接收端、目的机器它收到这个一个帧之后呢就要返回一个确认帧,那发送端发现了有这样一个确认帧才能继续发送下一个。所以说这三种服务,都是数据链路层可以给网络层提供的服务。
要注意的一点就是,如果是有连接的,一定是有确认的。所以说就不存在没有确认还面向连接的服务。
那第二个功能就是,链路管理。也就是说把连接的建立、维持和释放的过程。那这样一个链路管理的功能呢,主要是偏向于面向连接的服务。
再来看第三个功能,组帧。这个我们之后在下一节课会详细讲解。
第四个功能就是流量控制。那这个流量控制呢大家可以想象这样一个尔康的图片,啊,他其实就是在告诉发送方你慢一点儿发,接收端已经没有这个能力来接收了,所以要控制一下发送方的速度。
那第五个功能就是差错控制。这里面的差错呢,有帧错也有位错。那对于这两种错误呢,我们都会有相应的控制手段,这个我们在之后也会详细讲解。那有关于数据链路层的功能概述呢,我们就讲到这里。下节课我们将来学习第一个非常重要的功能就是组帧。