終止合併的例外條件
本節定義具備接收區段接合(RSC)功能的迷你端口驅動程序在接合區段之前必須執行的檢查。
區段必須先通過下列兩種類型的檢查,才能合併:
檢查區段中是否有特定條件。 例如,TCP 標頭中 SYN 旗標的存在會觸發異常,而且該段不會被合併。 這些類型的檢查定義如下。
相依於先前合併區段和目前所檢查區段的資訊進行檢查與相互關聯。 例如,檢查接收的區段是否為重複的通知落在這個檢查類別中。 這些類型的檢查定義於聯合 TCP/IP 區段 的規則中。
如果檢查失敗,就會觸發例外,而迷你端口驅動程式必須終止該 TCP 連線的整合,並將資料段視為如下:
偵測到例外狀況之前聯合的 TCP 區段應該以單一單位表示。
偵測到例外狀況之後聯合的 TCP 區段應該以個別單位表示。
注意 在以下的例外狀況 7 和 8 中,小型端口驅動程式應該從觸發例外的區段開始繼續合併。
接收符合下列任何準則的區段必須觸發例外狀況:
NIC 中的硬體資源限制會防止聯合。
區段具有無效的 TCP 或 IP 總和檢查碼。
段的 TCP 標頭中包含任何 SYN、URG、RST 或 FIN,如 RFC 793第 3.1 節中所定義。 更廣泛地說,如果區段包含 PSH 或 ACK 以外的任何旗標,它應該觸發例外狀況。 如需ECN旗標,請參閱下面的例外狀況8。
區段包含 TCP 時間戳選項以外的一或多個 TCP 選項。 如需 TCP 時間戳選項的討論,請參閱 RFC 1323。
區段包含 IPv4 選項或 IPv6 擴充功能標頭。
區段是 IPv4 片段。
合併目前接收到的區段會導致單一合併單元超過法定IP資料包長度上限。 此例外狀況需要特殊處理。 如需詳細資訊,請參閱:
在 TCP/IP 封包合併 規則中的第一個流程圖
RSC 驅動程式的程式設計考慮中的「回應 RSC 統計數據查詢」。
區段包含 ECN 旗標,如 RFC 3168 中所定義,符合下列其中一個或兩個準則:
區段包含IP標頭中ECN欄位 (ECT, CE) 的值,與上一個區段不同。
區段在 TCP 標頭中,ECN 旗標 (ECE 和 CWR) 的值與上一個區段不同。