TCP 首部中的選項欄位
TCP 使用者傳送包含資料和 TCP 首部資訊的報文段。首部包含源地址、目的地址和其他變數。在傳輸過程中,每個網路裝置都會處理 TCP 首部。資料保持不變,但首部細節(如 IP 地址)可能會發生變化。
TCP 首部中的選項欄位
TCP 首部有一個可選的選項欄位,用於增強功能。它可以是 0 到 320 位,具體取決於資料偏移量的大小。選項欄位包含各種型別:最大報文段大小、視窗縮放、時間戳等。此欄位顯示總選項長度,包括型別和長度。選項資料欄位包含選項詳細資訊,例如數值或時間戳。

此欄位提高了 TCP 連線的效能、可靠性和安全性。它根據網路狀況調整報文段和視窗大小。它檢測並防止報文段重新排序和欺騙。選項欄位在連線建立期間協商傳送方和接收方之間的功能。在 IPv4 報文段中,選項欄位位於首部之後,包含額外資訊。它最多可以為 40 位元組,但實際大小因報文段而異。並非所有報文段都包含選項欄位;這取決於使用情況和目的。
TCP 首部中選項欄位的重要性
TCP 首部中的選項欄位是為了 TCP 協議的未來改進而建立的。但是,它並沒有被廣泛使用,其內容也沒有標準化。
TCP 最初建立時,網際網路規模較小且不太複雜。最初的 TCP 首部可以很好地處理兩個裝置之間的通訊。但隨著網際網路的發展,出現了新的需求,例如傳輸更大的資料並確保更可靠和安全的通訊。
選項欄位旨在滿足這些新需求,而無需完全更改 TCP 協議。但是,它並沒有得到廣泛採用,並且不建議使用它。以下是一些原因
選項欄位不是強制性的,因此並非所有 TCP 實現都支援它。
選項欄位的內容沒有標準化,導致相容性問題。
選項欄位為每個 TCP 報文段添加了額外資訊,這可能會降低效能。
由於這些原因,選項欄位現在很少使用。如果您需要標準 TCP 首部不支援的新功能,最好使用 TCP 協議擴充套件(如選擇性確認 (SACK) 選項)。
TCP 選項欄位中的各種選項
TCP 選項欄位使資料傳輸更快、更安全、更可靠。它幫助 TCP 選擇資料大小,檢測和修復問題。選項欄位支援與其他計算機協商功能。TCP 有 35 個選項,具有不同的名稱和編號。有些是常見且已知的,而另一些則是新的或未使用的。
常見選項
選項列表結束:標記選項欄位的結束。
無操作:填充空閒空間以對齊選項。
最大報文段大小 (MSS):告知要傳送的最大資料大小。
視窗縮放:使視窗大小更大,以加快傳輸速度。
允許 SACK:允許選擇性確認來修復資料問題。
SACK:提供選擇性確認部分,以避免資料重傳。
時間戳:測量報文段時間並提高連線效率。
TCP 適應網際網路需求,與舊計算機配合使用,並變得更快、更安全、更可靠。
資料偏移欄位
TCP 首部中的資料偏移欄位指定首部大小(以字為單位)。一個字是 32 位或 4 位元組的資料。資料偏移量顯示 TCP 首部大小。
最小大小:5 個字(20 位元組),沒有選項,只有必需欄位。
最大大小:15 個字(60 位元組),其中 10 個字(40 位元組)為選項。
資料偏移量幫助接收方在 TCP 報文段中定位資料。它避免了選項和資料之間的混淆,提高了效率。
分片和 MSS
當大型報文段無法適應網路鏈路的限制時,就會發生分片。每個分片都有自己的 IP 首部,其中包含位置和長度資訊。目的地使用此資訊重新組裝分片。
分片以多種方式影響 TCP 效能
每個分片的額外 IP 首部會增加開銷。
由於分片是單獨傳輸和確認的,因此報文段丟失的風險增加。
由於每個跳點都會處理分片,因此延遲會增加。
TCP 使用 MSS 選項設定最大資料大小來避免分片。MSS 在連線建立(SYN 報文段)期間協商。預設 MSS:IPv4 為 536 位元組,IPv6 為 1220 位元組。MSS 幫助 TCP 傳送較小的報文段,避免分片。它提高了 TCP 連線的吞吐量、可靠性和延遲。
視窗大小和視窗縮放
視窗大小控制 TCP 中兩臺計算機之間的資料流。它限制了可以傳送或接收的資料量。TCP 首部有一個 16 位的視窗大小欄位。最大大小為 65535 位元組,對於快速或遠端網路而言並不總是足夠。TCP 使用視窗縮放選項來增加視窗大小。在連線開始時,縮放因子決定實際視窗大小。縮放因子可以是 0 到 14,允許最大 1 GB 的視窗。視窗縮放幫助 TCP 使用更大的視窗大小,在長距離或繁忙的網路上速度更快。
報文段丟失和 SACK
報文段丟失是指由於各種原因導致報文段從未到達其目的地。TCP 使用序列號來跟蹤已傳送和接收的報文段。確認號告訴傳送方已收到哪些報文段。有時,某些報文段會丟失,導致已接收資料的重傳。TCP 使用選擇性確認 (SACK) 來避免重傳已接收的資料。SACK 告訴傳送方哪些部分資料已收到,哪些資料丟失。SACK 幫助 TCP 更快地解決資料丟失問題並提高可靠性。
舊的重複報文段和時間戳
舊的重複報文段是指由於錯誤而多次傳送報文段。TCP 使用時間戳來區分舊報文段和新報文段。時間戳記錄傳送方和接收方時間以檢查報文段的新鮮度。透過使用時間戳,TCP 確保僅處理新報文段,從而提高安全性和速度。
結論
TCP 首部中的選項欄位是一個額外的部分,它使 TCP 能夠執行更多操作並更好地工作。選項欄位可以包含許多選項,這些選項可以幫助 TCP 更快、更安全、更可靠地傳送和接收資料。一些常見且重要的選項包括
MSS:告知可以一次傳送的最大資料大小。
視窗縮放:告知如何使視窗大小更大。
SACK:告知哪些部分資料良好,哪些資料丟失。
時間戳:告知每個報文段的兩個時間。
選項欄位還取決於 TCP 首部的一些其他部分,例如
資料偏移量:告知 TCP 首部的大小(以字為單位)。
序列號:告知傳送和接收了哪些報文段。
確認號:告知哪些報文段良好。
選項欄位是 TCP 隨著時間的推移而變化和改進的一種方式。透過使用選項欄位,TCP 可以滿足網際網路的需求和願望,同時仍然與舊計算機配合使用。選項欄位還可以讓 TCP 執行新操作,從而使 TCP 速度更快、更安全、更可靠。
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP