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)
 

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