共用方式為


接收區段聯合的範例

本節說明聯合演算法,方法是使用依順序接收的區段範例,並在 DPC) 的單一延遲過程 (調用中處理。

此頁面會針對連續區段使用 X 和 X' 標記。 所有其他區段和單一聯合單位 (SCU) 欄位,如 聯合 TCP/IP 區段的規則中所述。

範例 1:資料區段

區段描述

系統會處理屬於相同 TCP 連線的連續 10 個區段。 下列每個條件都成立:

  • X'.SEQ == X.NXT

  • X'SEQ > X.SEQ

  • X'.ACK == X.ACK

這些區段都不會產生例外狀況。

結果

單一 SCU 是由 10 個區段組成。 這表示為單一 NET_BUFFER_LIST 中的單一 NET_BUFFER

範例 2:資料區段,後面接著例外狀況,後面接著資料區段

區段描述

系統會處理屬於相同 TCP 連線的連續 5 個區段。 下列每個條件都成立:

  • X'.SEQ == X.NXT

  • X'SEQ > X.SEQ

  • X'.ACK == X.ACK

這些區段都不會產生例外狀況。 第 6 個區段是具有 TCP SACK 選項的重複 ACK 區段,並根據 聯合 TCP/IP 區段的規則編號 3 產生例外狀況。

注意 在此情況下,處理 TCP 選項的例外狀況規則優先,因此會覆寫聯合規則。

系統會處理屬於相同 TCP 連線的連續 2 個區段。 下列每個條件都成立:

  • X'.SEQ == X.NXT

  • X'SEQ > X.SEQ

  • X'.ACK == X.ACK

這些區段都不會產生例外狀況。

結果

單一 SCU 是由前 5 個區段組成。 第 6 個區段不會形成 SCU。

第 7 和第 8 個區段會形成 SCU。

NET_BUFFER_LIST鏈結會以三個NET_BUFFER_LIST結構表示,每個結構都有單一NET_BUFFER。 會維護接收區段的順序。

範例 3:資料區段,後面接著多個視窗更新

區段描述

系統會處理屬於相同 TCP 連線的連續 5 個區段。 下列每個條件都成立:

  • X'.SEQ == X.NXT

  • X'SEQ > X.SEQ

  • X'.ACK == X.ACK

這些區段都不會產生例外狀況。 第 6 個區段是使用 SEG 進行視窗更新的純 ACK。WND = 65535,如下列流程圖所示。

流程圖,顯示使用 TCP 時間戳記選項聯合區段的規則。

第 7 個區段是純 ACK,它是使用 SEG 進行視窗更新。WND = 131070,如相同的流程圖所示。

結果

單一 SCU 是由 7 個區段組成。 這表示為單一 NET_BUFFER_LIST 中的單一 NET_BUFFER

SCU。WND = 131070,並會根據此值更新總和檢查碼。

範例 4:與資料區段混合的 Piggybacked ACK

區段描述

系統會處理屬於相同 TCP 連線的連續 3 個區段。 下列每個條件都成立:

  • X'.SEQ == X.NXT

  • X'SEQ > X.SEQ

  • X'.ACK == X.ACK

這些區段都不會產生例外狀況。 系統會處理屬於相同 TCP 連線的連續 2 個區段。 下列每個條件都成立:

  • X'.SEQ == X.NXT

  • X'SEQ > X.SEQ

  • X'.ACK == X.ACK

這些區段都不會產生例外狀況。

結果

單一 SCU 是由 5 個區段組成。 這表示為單一 NET_BUFFER_LIST 中的單一 NET_BUFFER。 SCU。ACK 設定為最後一個 SEG.ACK。