在整个TCP/IP协议簇中,数据链路层的作用是发送和接收IP层数据,它也用来发送其他协议的数据,这些协议往往是IP层的辅助协议,比如ARP协议等。数据链路层有很多不同的种类,最常见的是以太网(Ethernet)和Wi-Fi。我以为,数据链路层就是局域网,网内的节点之间的通信是不需要经过更高层的协议的,比如IP层等。但是由于该层种类比较多比较杂,所以涉及到的协议也是比较多的。
链路也指物理链路,没有协议和软件的含义,而数据链路多了实现通信规程的硬件和软件。
数据链路层的主要功能就是面向连接的协议,如建立和释放连接。主
主要理解停止等待协议
l 停止等待协议用于通信系统中,两个相连的设备相互发送信息时使用,以确保信息不因丢包或包乱序而丢失,是最简单的自动重传请求方法。
l 只有收到序号正确的确认帧 ACKn 后,才更新发送状态变量 V(S)一次,并发送新的。
l 接收端接收到数据帧时,就要将发送序号 N(S) 与本地的接收状态变量 V(R) 相比较。
l 若二者相等就表明是新的数据帧,就收下,并发送确认。否则为重复帧,就必须丢弃。但这时仍须向发送端发送确认帧 ACKn,而接收状态变量 V(R) 和确认序号 n 都不变。
l 连续出现相同发送序号的数据帧,表明发送端进行了超时重传。连续出现相同序号的确认帧,表明接收端收到了重复帧。
l 发送端在发送完数据帧时,必须在其发送缓存中暂时保留这个数据帧的副本。这样才能在出差错时进行重传。只有确认对方已经收到这个时,才可以清除这个副本。
l 实用的CRC 检验器都是用硬件完成的。
l CRC 检验器能够自动丢弃检测到的出错帧。因此所谓的“丢弃出错帧”,对上层软件或用户来说都是感觉不到的。
l 发送端对出错的数据帧进行重传是自动进行的,因而这种体制常简称为(Automatic Repeat reQuest),直译是,但意思是自动请求重传。
停止等待协议流程
停止等待协议的算法
这里不使用否认帧(实用的协议大都是这样的),而且确认帧带有序号 n。
按照习惯的表示法,ACKn 表示“第 n – 1 号帧已经收到,现在期望接收第 n 号帧”。
ACK1 表示“0 号帧已收到,现在期望接收的下一帧是 1 号帧”;
ACK0 表示“1 号帧已收到,现在期望接收的下一帧是 0 号帧”。
缺点:
数据每次发送都要等待应答帧的到来,效率较低。尤其是利用卫星进行通信的时候,卫星的传播延迟是270毫秒,每发一帧要用540毫秒。