Windows 2000 及 Windows Server 2003 TCP 功能的描述

文章翻譯 文章翻譯
文章編號: 224829 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

本文將告訴您下列 TCP 功能 Microsoft Windows 2000 和 Microsoft Windows Server 2003 中:
  • TCP 視窗大小
  • 現在支援 TCP 選項
  • Windows 按比例縮放-RFC 1323
  • 時間戳記-RFC 1323
  • 換行的順序編號 (腳印) 的保護
  • 選擇性通知 (SACKS)-RFC 2018
  • TCP 重新傳輸行為和快速重新傳輸
可以變更 TCP 功能,藉由變更登錄中的項目。

其他相關資訊

重要這個區段、 方法或任務包含告訴您如何修改登錄的步驟。然而,如果您不當修改登錄,可能會發生嚴重的問題。因此,執行這些步驟時請務必小心。為加強保護,修改登錄之前,請務必將它備份起來。以後您就可以在發生問題時還原登錄。如需有關如何備份和還原登錄的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
322756如何備份和還原在 Windows 登錄

TCP 視窗大小

TCP 接收視窗大小是所需的接收可緩衝連線期間的資料 (以位元組為單位)。傳送端主機可以傳送只有的資料量之前必須等待認可] 和 [視窗更新從接收主機。Windows TCP/IP 堆疊為了 self-tune 本身在大部分的環境中,並使用較大的預設視窗大小比舊版。

代替使用硬式編碼的預設接收視窗大小,TCP 會調整,以甚至增量的區段大小上限 (MSS) 的交涉連線安裝過程。調整接收視窗的 [MSS 甚至增量到增加完整大小 TCP 區段利用大量資料傳輸期間的百分比。

接收視窗大小會以下列方式來決定:
  1. 第一次的連線要求傳送至遠端主機通告接收視窗大小為 16K (16,384 個位元組)。
  2. 建立連接時接收視窗大小接近於 [MSS 的一個偶數遞增值。
  3. 視窗大小會調整為 4 次 [MSS,到 64 K 的最大大小,除非使用 [縮放比例選項 (RFC 1323)] 視窗。
附註請參閱 Windows 縮放 」 一節。

乙太網路連線的視窗大小通常會設定為 17,520 個位元組 (16K 捨入最多十二個 1460年位元組區段)。支援擴充的 TCP 標頭選項,例如選擇性應答 (SACKS) 和加上時間戳記的電腦建立連線時,可能會降低視窗大小。這兩個選項增加 TCP 標頭大小超過 20 位元組至這會產生空間較少的資料。

在舊版的 Windows NT,8,760 位元組或六個 1460年位元組區段的視窗大小的乙太網路連線。

將接收視窗大小設定成特定的值,TcpWindowSize 值加入到您的 Windows 版本的特定登錄子機碼上。 要這麼做,請您執行下列步驟:
  1. 按一下 [開始],再按一下 [執行]、 輸入 Regedit,] 然後再按一下 [確定]
  2. 展開您的 Windows 版本的特定登錄子機碼:
    • 在 Windows 2000 展開下列子機碼:
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
    • Windows Server 2003 展開下列子機碼:
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  3. 在 [編輯] 功能表上指向 [新增],然後按一下 [DWORD 值]。
  4. 在 [新值] 方塊和 thne 的型別 TcpWindowSize 按 Enter 鍵
  5. 按一下 [編輯] 功能表上的 [修改]。
  6. 在 [數值資料] 方塊中鍵入所要的視窗大小。

    附註。視窗大小的有效範圍是 0 0x3FFFC000 十六進位。
這個值不是預設為存在。當您新增 TcpWindowSize 值時,它會覆寫預設視窗大小演算法上文所述。

附註TcpWindowSize 也可以加入至參數機碼若要設定全域所有介面的視窗大小。

現在支援 TCP 選項

在過去 TCP 選項是主要用來交涉最大的區段大小。在 Windows,TCP 選項用來按比例縮放視窗]、 [時間戳記] 和 [選擇式 ACK.

有兩種類型的 TCP 選項:
  1. 一個單一八位元 TCP 選項用來指示特定的選項類型。
  2. 將多個八位元 TCP] 選項可選項種類、 選項長度和一系列的選項八位元資料組所組成。
下列清單顯示每個 TCP 選項類型、 長度、 名稱及描述。
類型: 0
長度: 1
選項: 選項清單的結尾
描述: 這是在時使用填補所需的最後一個 [TCP] 選項。

類型: 1
長度: 1
沒有作業的選項:
描述: 這用需要與邊框距離和更多 TCP 選項遵循相同的封包內時。

種類: 2
長度: 4
選項: 最大區段大小
描述: 這表示可以跨網路傳送的 TCP 區段的大小上限。

種類: 3
長度: 3
選項: 視窗縮放比例選項
描述: 識別使用視窗大小大於 64 k 時要使用縮放比例。

類型: 8
長度: 10
選項: 時間戳記選項
描述: 用來協助計算 Round 旅行時間 (RTT) 的傳輸的封包。

類型: 4
長度: 2
允許的選項: TCP SACK
描述: 通知其他主機允許選擇性的認可。

種類: 5
長度: 而異
選項: TCP SACK 選項
描述: 主機用來識別是否已收到逾時的順序封包。

Windows 縮放比例

用於更有效率的高頻寬網路,可能會使用較大的 TCP 視窗大小。TCP 視窗大小欄位控制資料流,並限於 2 個位元組或視窗大小為 65,535 位元組。

由於無法展開大小欄位,用縮放比例。TCP 視窗縮放比例是用來增加從 65,535 位元組最大視窗大小為 1 GB 的選項。

TCP 三向信號交換期間只使用視窗的 [間隔] 選項。視窗縮放比例值向左移位 16 位元視窗大小欄位來表示位元數目。視窗縮放比例值可介於 0 (沒有移位) 設定為 14。

若要計算,則為 True 的視窗大小,乘視窗大小 2 ^ S 其中 S 是刻度值。
例如:
如果視窗大小為 3 的視窗縮放比例與 65,535 位元組。
True 視窗大小 = 65535 * 2 ^3
True 視窗大小 = 524280
下列的 「 網路監視器 」 追蹤記錄會顯示如何使用視窗的 [間隔] 選項:
TCP:....S。 len:0、 seq:725163-725163,ack:0、 贏: 65535、 src:1217 dst:139(NBT Session)
TCP: 來源連接埠 = 0x04C1
TCP: 目的地連接埠 = NETBIOS 工作階段服務
TCP: 順序編號 = 725163 (0xB10AB)
TCP: 認可編號 = 0 (0x0)
TCP: 資料位移 = 44 (0x2C)
TCP: 保留 = 0 (0x0000)
+ TCP: 旗標 = 0x02:....S。
TCP: 視窗 = 65535 (0xFFFF)
TCP: 加總檢查碼 = 0x8565
TCP: 急件指標 = 0 (0x0)
TCP: 選項
+ TCP: 最大的區段大小選項
TCP: 選項 Nop = 1 (0x1)
TCP: 視窗縮放比例選項
TCP: 選項類型 = 視窗縮放比例
TCP: 選項長度 = 3 (0x3)
TCP: 視窗縮放比例 = 3 (0x3)

TCP: 選項 Nop = 1 (0x1)
TCP: 選項 Nop = 1 (0x1)
+ TCP: 時間戳記選項
TCP: 選項 Nop = 1 (0x1)
TCP: 選項 Nop = 1 (0x1)
+ TCP: SACK 允許選項
很重要的一點就是注意實際的三向信號交換中所使用的視窗大小不是縮放的視窗大小。這是每 RFC 1323 區段 2.2,"的視窗 」 欄位中一個 SYN (,例如一個 [SYN] 或 [SYN ACK]) 區段本身永遠不會進行縮放"

這表示第一個資料封包傳送後三向信號交換是實際的視窗大小。如果縮放比例皆使用 65,535 位元組的初始視窗大小。視窗大小再乘以三向信號交換中所識別的縮放比例。下表表示縮放因數界限的各種視窗大小。

摺疊此表格展開此表格
縮放比例因數縮放比例值初始的視窗調整過大小的視窗
0165535 或更少65535 或更少
1265535131,070
2465535262,140
3865535524,280
416655351,048,560
532655352,097,120
664655354,194,240
7128655358,388,480
82566553516,776,960
95126553533,553,920
1010246553567,107,840
11204865535134,215,680
12409665535268,431,360
13819265535536,862,720
1416384655351,073,725,440

例如:

如果視窗大小中登錄十進位格式輸入為 269000000 (269 M),在三向信號交換期間縮放比例是 13,因為 12 的縮放比例只允許一個視窗調整大小最多 268,431,360 位元組 (268 M)。

初始的視窗大小,在這個範例會計算方式如下:
具有 13 個視窗縮放比例係數的 65,535 位元組。
True 視窗大小 = 65535 * 2 ^13
True 視窗大小 = 536,862,720
當視窗大小值新增到登錄,並且它的大小大於預設值時,Windows 會嘗試使用可容納新的視窗大小的比例值。

在下列登錄機碼 Tcp1323Opts 值可以加入至控制縮放視窗] 和 [時間戳記:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  1. 在工具列上按一下 [開始]、 按一下 [執行],然後鍵入 [Regedit 以啟動 「 登錄編輯程式 」]。
  2. 在 「 登錄編輯器 」 中,按一下 [編輯],指向 [新增,然後再按 [DWORD 值
  3. 在 [新的值] 方塊鍵入 Tcp1323Opts,按下 ENTER,然後再按一下 [編輯] 功能表上的 [修改]。 附註有效範圍是 0,1,2 或 3 的位置:
0 (停用 RFC 1323 選項)
1 (只啟用視窗縮放)
2 (僅啟用的時間戳記)
3 (已啟用這兩個選項)
此登錄項目控制 RFC 1323 時間戳記] 和 [視窗縮放比例選項。加上時間戳記與視窗縮放比例啟用根據預設值,但可與旗標位元操作。位元 0 控制項視窗縮放比例和位元 1 控制項時間戳記。

加上時間戳記

先前,TCP/IP 堆疊會使用一個範例,每個視窗來計算來回時間 (RTT) 傳送的資料。傳送封包,直到收到認可時,已設定計時器 (重新傳輸計時器)。比方說如果 64,240 位元組 (44 完整的區段) 乙太網路上的視窗大小,只有其中一個每 44 封包已用來重新計算的來回時間。以 65,535 位元組的最大視窗大小,此取樣速率已足夠。使用視窗調整,和的 1 GB 的最大視窗大小,此 RTT 取樣率是不夠的。

TCP 時間戳記選項現在可以被設定為 [在區段 (資料和 ACK) 視為適當是由堆疊上用來執行作業,例如 RTT 計算腳印核取,並等。使用此資料,[RTT 可準確地計算與大視窗大小。RTT 用來計算重新傳輸間隔。精確 RTT 和重新傳輸逾時所需的最佳輸送量。

當 TCP 時間戳記用於 TCP 工作階段時,工作階段的原始寄件者會傳送的 TCP 三向信號交換 (SYN 封包) 其第一個封包選項。任一邊然後可以使用工作階段的 [TCP] 選項。

TCP 加上時間戳記選項 (TSopt):

摺疊此表格展開此表格
種類 = 8長度 = 10TS 值 (Tsval)TS 回應回覆 (Tsecr)
1 個位元組1 個位元組4 個位元組4 個位元組

檢視時間戳記選項欄位即可檢視網路監視器追蹤中展開 [TCP] 選項欄位如下所示:
TCP: 時間戳記選項
TCP: 選項類型 = 時間戳記
TCP: 選項長度 = 10 (0xA)
TCP: 時間戳記 = 2525186 (0x268802)
TCP: 回覆時間戳記 = 1823192 (0x1BD1D8)

換行的順序編號 (腳印) 的保護

TCP 序列數字欄位是限制為 32 位元這會限制可用的序列數字的數目。有高容量網路及大型的資料傳輸,就可能自動換行序號前一個封包周遊網路。如果在一個 Giga-每 1 位元組第二個 (Gbps) 網路傳送資料,順序編號可以包裝在少 34 秒。如果延遲封包不同的封包可能潛在存在具有相同的序號。若要避免混淆重複序號的事件,TCP 時間戳記是用來當做順序編號的延伸。 封包有目前和進度時間戳記。舊的封包具有較舊的時間戳記,而且會被捨棄。

選擇性通知 (SACKs)

Windows 會介紹效能功能,稱做 「 選擇式通知或 SACK 的支援。SACK 是特別重要的連線使用大型的 TCP 視窗大小。之前要 SACK,接收者可能只有認可的有已接收的連續資料流最新的序列數或 「 左邊的邊緣 」 的接收視窗。啟用 SACK,與接收者會持續使用 ACK 號碼來認可接收] 視窗左邊的緣,但是它也可以分別認可其他區塊的接收資料]。SACK 使用 TCP 標頭選項,如下所示。

SACK 使用兩種類型的 TCP 選項。

TCP Sack-Permitted 選項用只能在 SYN 封包中 (建立 TCP 連線時) 來表示它可以做選擇性 ACK.

第二個 TCP 選項 TCP 袋選項包含一或多個資料區塊的認可。資料區塊會識別使用順序數字,在開始和該資料區塊的結尾處。這也稱為是資料區塊的左邊和右邊邊緣。

類型 4 TCP Sack-Permitted 選項,Kind 5 TCP 袋選項。長度為此 TCP] 選項的長度 (以位元組計)。

Tcp 袋允許:

摺疊此表格展開此表格
種類 = 4長度 = 2
1 個位元組1 個位元組

TCP SACK 選項:

摺疊此表格展開此表格
類型 = 5長度 = 變數
1 個位元組至右邊緣的第 1 個區塊的第 1 個區塊的左的緣
...
左的緣 Nth 封鎖至第 n 個區塊的右邊緣

利用 SACK 啟用 (預設),封包或一系列的封包可以卸除,和接收者會通知寄件者收到哪些資料以及在資料中可能有漏洞 」 在何處。重新寄件者可以再選擇性地傳輸而重新傳輸的區塊已經尚未收到成功的資料不遺失資料。SACK 是由 SackOpts 登錄參數來控制。

SackOpts 值在下列登錄機碼中的可編輯來控制使用選擇性的通知:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  1. 在工具列上按一下 [開始]、 按一下 [執行],然後鍵入 [Regedit 以啟動 「 登錄編輯程式 」]。
  2. 找不到按一下上述的機碼在登錄編輯程式中,然後再按一下 [編輯] 功能表上的 [修改]
  3. 在 [數值資料] 方塊中輸入您想要的值。
注意: 有效的二進位值是 0 或 1,預設值是 1。 啟用這個參數會控制支援選擇式 ACK (SACK-RFC 2018)。

下列的 「 網路監視器 」 追蹤記錄說明主機,所有資料最多可達序號 54857341,加上序號 54858789 54861685 來自資料用來認可。遺失的資料是從 54857341 到 54858788。
TCP: A....、 len:0、 seq:925104-925104,ack:54857341、 贏: 32722、 src:1242 dst:139
TCP: 來源連接埠 = 0x04DA
TCP: 目的地連接埠 = NETBIOS 工作階段服務
TCP: 順序編號 = 925104 (0xE1DB0)
TCP: 通知編號 = 54857341 (0x3450E7D)
TCP: 資料位移 = 44 (0x2C)
TCP: 保留 = 0 (0x0000)
+ TCP: 旗標 = 0x10: A....
TCP: 視窗 = 32722 (0x7FD2)
TCP: 加總檢查碼 = 0x4A72
TCP: 急件指標 = 0 (0x0)
TCP: 選項
TCP: 選項 Nop = 1 (0x1)
TCP: 選項 Nop = 1 (0x1)
+ TCP: 時間戳記選項
TCP: 選項 Nop = 1 (0x1)
TCP: 選項 Nop = 1 (0x1)
TCP: SACK 選項
TCP: 選項類型 = 0x05
TCP: 選項長度 = 10 (0xA)
TCP: 左封鎖 Edge = 54858789 (0x3451425)
TCP: 區塊的右邊緣 = 54861685 (0x3451F75)

TCP 重新傳輸行為和快速重新傳輸

TCP 重新傳輸

為是檢閱一般的重新傳輸行為 TCP 會每個傳出區段交給向下,為網際網路通訊協定 (IP) 時開始重新傳輸計時器。如果沒有認可已收到指定區段中資料的在計時器逾時前,區段是重新傳輸。

在重新傳輸逾時 (RTO) 會持續地調整為符合連線使用平滑 Round 旅行時間 (SRTT) 計算,如 RFC 793 所述的特性。給定的段落上的計時器加倍之後該區段的每個重新傳輸。使用這個演算法,TCP 微調本身的連線正常的延遲。

快速重新傳輸

在某些情況下的重新傳輸計時器到期之前,TCP 重新傳輸資料。最常見的這些發生由於至功能,稱為 「 快速重新傳輸。支援快速的接收者的重新傳輸接收以序列數字超過目前的預期的資料,然後可能有些資料已卸除。若要協助通知此事件的寄件者,接收者會立即傳送的 ACK ACK 數字設定為 [已預期的順序編號。它會繼續要執行這項操作到達每個額外 TCP 區段。寄件者開始接收認可相同的順序編號的 ACK 串流時, 很可能已經卸除一個區段。 寄件者將會立即重新傳送預期接收者,而不需等待重新傳輸計時器到期的區段。這項最佳化會大大提升效能,經常捨棄封包時。

預設情況下,Windows 重區段如果它接收相同的順序編號、 (一個 ACK 和 2 的重複項目) 的三個 ACK 和該序列數字 lags 目前的。這是可控制與 TcpMaxDupAcks 登錄參數。

TcpMaxDupAcks 值在下列登錄機碼中的可編輯的控制項的 ACK 需要啟動快速數重新傳輸以:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  1. 在工具列上按一下 [開始]、 按一下 [執行],然後鍵入 [Regedit 以啟動 「 登錄編輯程式 」]。
  2. 找不到按一下上述的機碼在登錄編輯程式中,然後再按一下 [編輯] 功能表上的 [修改]
  3. 在 [數值資料] 方塊中輸入您想要的值。
注意: 有效的範圍是 1-3,預設值是 2。

這個參數會決定重複 ACK 」 快速重新傳輸 」 觸發重新傳送已在轉送的過程中卸除該區段之前必須收到的傳送的資料相同的序列數的數目。

屬性

文章編號: 224829 - 上次校閱: 2006年10月30日 - 版次: 6.3
這篇文章中的資訊適用於:
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows 2000 Datacenter Server
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
關鍵字:?
kbmt kbenv kbinfo kbnetwork KB224829 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:224829
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com