计算机网络 - 数据链路层1
数据链路层
功能概述
- 为网络层提供服务。无确认无连接服务,有确认无连接服务,有确认面向连接服务。有连接一定有确认!
- 链路管理,即连接的建立、维持、释放(用于面向连接的服务)。
- 组帧
- 流量控制。
- 差错控制。(帧错、位错)
封装成帧
封装成帧就是在一段数据的前后部分添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。 首部和尾部包含许多的控制信息,他们的一个重要作用:帧定界(确定帧的界限)。(首部和尾部包含许多的控制信息,他们的一个重要作用:帧定界(确定帧的界限)。 帧同步:接收方应当能从接收到的二进制比特流中区分出帧的起始和终止。
流量控制
数据链路层的流量控制手段:接收方收不下就不回复确认
停止-等待协议
为了让接收方能够判断所受到的数据分组是否是重复的,需要给数据分组编号,由于停止-等待协议的停等特性,只需要1比特编号就可以了,即编号0或1
可以理解为停止-等待协议是特殊的滑动窗口。发送窗口大小 = 1,接收窗口大小 = 1
情况一:确认否认
- 发送方给接收方发送数据分组(DATA),
- 接收方收到后对其进行差错检测,若没有误码,则接收该数据分组,并给发送方发送确认分组(ACK)
- 发送方收到对发送的数据分组(DATA)所对应的确认分组(ACK)后,才能发送下一个数据分组(DATA),假设这个DATA在传输过程中出现了误码
- 接收方收到后对其进行差错检测,发现了误码,则丢弃该数据分组,并给发送方发送否认分组(NAK)
- 发送方收到对发送的数据分组(DATA)所对应的否认分组(NAK)后,就知道了之前所发送的DATA出现了差错, 而被接收方拒绝,于是,立刻重传该DATA,因此,发送方每发送完一个DATA之后,并不能立刻将该DATA从缓存中删除,只有收到该DATA的ACK之后,才能将DATA从缓存中删除
由此可知,发送方每发送完一个数据分组DATA后,就要停止发送DATA,等待ACK到达之后才能发送下一个DATA
情况二:超时重传
情况三:ACK丢失
接收端丢弃DATA0的数据,重新发送对于DATA0的ACK确认。
情况四:ACK迟到
接收端端丢弃重复的DATA0。重新发送ACK0。发送端忽略收到的ACK0