计算机通信网的第3章数据链路层Part2主要讨论了连续发送的滑动窗口协议,这是一种改进的协议,旨在减少停等协议在等待应答时对资源的浪费,提升通信效率。滑动窗口协议的核心在于发送方和接收方维护的两个窗口——发送窗口Ws和接收窗口Wr,它们分别定义了可连续发送和接收的数据包数量。
1. **连续发送的滑动窗口协议概念**:
- 这种协议允许在未收到应答信号期间,发送方连续发送多个数据包(PDU),前提是发送窗口内的数据包都能被接收方接收并确认。
- 发送窗口Ws和接收窗口Wr的大小决定了连续传输的范围,例如回退n帧协议和选择性重传协议都是窗口大小大于1的实例,而停等协议是特殊情况,其窗口大小Ws和Wr均为1。
- 关于PDU的编号,通常是用二进制表示,确保每个编号是唯一的,并且可以循环使用。例如,用2位二进制可以表示0-3的PDU编号。
2. **PDU编号与应答编号**:
- PDU编号用于区分不同数据包,通常用N位二进制编码,如接收到ACK(K)表示对PDU(k-1)的确认,期待接收下一个PDU(K)。
- 课程内容选择理解2,即ACK确认的是前一个PDU,有助于避免混淆和数据包重复。
3. **发送窗口的移动**:
- 如果接收应答迅速,发送窗口会持续向前滑动,直到收到确认或达到上限Ws。每收到一个确认,发送窗口就移动到下一个未确认的PDU。
- 接收窗口则随着接收并处理上层递交的数据包而向后移动。
4. **确认帧的超前应答**:
- 在某些情况下,接收方可能会提前发送确认,称为确认帧的超前应答,例如在接收到连续的几个数据包后一次性确认,这有助于提高效率。
- 当收到正确序列号的数据包时,接收窗口更新,然后发送相应的ACK;对于错误的序列号,保持窗口位置不变,仅发送正确的ACK。
5. **协议实现细节**:
- 在接收端,当收到一个数据包时,会检查其序列号是否正确。如果正确,将数据包递交上层,更新窗口位置,并发送确认;如果序列号错误,保持窗口位置不变,但同样发送确认。
通过滑动窗口协议,数据通信在等待应答的同时进行多帧发送,有效地利用了网络资源,特别是对于具有较长延迟的信道,能够显著提高数据传输的效率。