Acknowledge and flow control

The Link Layer acknowledgment and flow control scheme shall be used in all Link Layer connections 。

 

 

 


简称是 SN 和 NESN,这两个也是存在于 Connection State 的包体的 Header 中。

SN 和 NESN 都是由 1  bit 构成,他们两个共同组成了 Connection State 的应答和流控机制(重传)。


SN 的物理含义是当前发送的包的序号

NESN 的物理含义是下一个期待接收的数据包序号


SN 和 NESN 在 Connection 建立时都初始化为 0

1)无论是 Master 还是 Slave,发送 packet 的时候,都会将当前的 sn 和 nesn copy 到 packet 的 SN 和 NESN bit中。

2)无论是 Master 还是 Slave,当接收到一个 packet 的时候,会将该 packet 的 NESN bit 和本地的 sn 比较:如果相同,说明该packet 是对端设备发来的 NAK packet(请求重发),则需要将旧的 packet 重新发送出去;如果不同,说明是对端设备发来的ACK packet(数据被正确接收),则需要将本地的sn加1,接着发送新的 packet 。

3)无论是 Master 还是 Slave,当接收到一个packet的时候,会将该 packet 的 SN bit 和本地的 nesn 比较:如果相同,则说明是一个新的 packet,接收即可,同时将本地的 nesn 加1;如果不同,则说明是一个旧的 packet,什么都不需要处理。

4)当一个设备无法接收新的packet的时候(例如RX buffer已满),它可以采取不增加nesn的方式,发送NAK packet。对端设备收到该类型的packet之后,会发送旧的packet。该设备收到这样旧的packet的时候,不会做任何处理。这就是Link Layer的流控机制(Flow control)
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章