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)