停止等待协议 停止等待(stop-and-w ait)协议是最简单但也是最基本的数据链路层协议
很多有关协议的基本概念都可以从这个协议中学习到
我们先从最简单的情况讲起
一、不需要数据链路层协议的数据传输 当两个主机进行通信时,应用进程要将数据从应用层逐层往下传,经物理层到达通信线路
通信线路将数据传到远端主机的物理层后,再逐层向上传,最后由应用层交给远程的应用进程
但现在为了把主要精力放在数据链路层的协议上,可以采用一个简化的模型(见下图),即把数据链路层以上的各层用一个主机来代替,而物理层和通信线路则等效成一条简单的链路
数据链路层也可简称为链路层
在发方和收方的链路层分别有一个发送缓冲区和接收缓冲区
若进行全双工通信,则在每一方都要同时设有发送缓冲区和接收缓冲区
缓冲区是必不可少的
这是因为在通信线路上数据是以比特流的形式串行传输的,但在计算机内部数据的传输则是以字节(或若干个字节)为单位并行传输的
因此,必须在计算机的内存中设置一定容量的缓冲区,以便解决数据传输速率不一致的矛盾
下图所示的简化模型对于一个计算机网络中任意一条链路上的数据传输情况都是适用的
在网络内部,各交换结点的数据链路层的上面只有一个网络层
对于这种交换结点,网络层就相当于简化模型中的主机
图 4-10 两台计算机通过一条链路通信的简化模型 为了深入理解数据链路层的协议,我们先从一种假想的、完全理想化的数据传输过程开始讨论
下面即可看出,对于这种完全理想化的数据传输,数据链路层协议是根本不需要的
为了和后面的讨论相衔接,我们假定数据传输是以帧为单位
假定 1:链路是理想的传输信道,所传送的任何数据既不会出差错也不会丢失
假定 2:不管发方以多快的速率发送数据,收方总是来得及收下,并及时上交主机
第一个假定很容易理解
对第二个假定则需加以解释
我们假设主机 A 连续不断地向主机 B