tcpip詳解卷1


序號用來標識從T C P發端向T C P收端發送的數據字節流,它表示在這個報文段中的的第一個數據字節。如果將字節流看作在兩個應用程序間的單向流動,則 T C P用序號對每個字節進行計數。序號是32 bit的無符號數,序號到達 2^32-1后又從0開始。

T C P為應用層提供全雙工服務。這意味數據能在兩個方向上獨立地進行傳輸。因此,連接的每一端必須保持每個方向上的傳輸數據序號。

T C P提供了一種可靠的面向連接的字節流運輸層服務。

T C P將用戶數據打包構成報文段;它發送數據后啟動一個定時器;另一端對收到的數據進行確認,對失序的數據重新排序,丟棄重復數據; T C P提供端到端的流量控制,並計算和驗證一個強制性的端到端檢驗和。

三次握手

  1. 請求端(客戶)發送一個SYN段指明客戶打算連接的服務器的端口,以及初始序號ISN,這個SYN段為報文段1.
  2. 服務器發回包含服務器的初始序號的SYN報文段(2)作為應答.同時,將確認序號設置為客戶的ISN加1以對客戶的SYN報文段進行確認,一個SYN將占用一個序號.
  3. 客戶必須將確認序號設置為服務器的ISN加1以對服務器的 SYN報文段(3)進行確認

當一端為建立連接而發送它的 S Y N時,它為連接選擇一個初始序號。 I S N隨時間而變化,因此每個連接都將具有不同的 I S N。 RFC 793 [Postel 1981c]指出I S N可看作是一個3 2比特的計數器,每 4 m s加1。這樣選擇序號的目的在於防止在網絡中被延遲的分組在以后又被傳送,而導致某個連接的一方對它作錯誤的解釋。

建立一個連接需要三次握手,而終止一個連接要經過 4次握手。這由 T C P的半關閉(h a l f - c l o s e)造成的。既然一個 T C P連接是全雙工(即數據在兩個方向上能同時傳遞) ,因此每個方向必須單獨地進行關閉。這原則就是當一方完成它的數據發送任務后就能發送一個 F I N來終止這個方向連接。當一端收到一個 F I N,它必須通知應用層另一端幾經終止了那個方向的數據傳送。發送F I N通常是應用層進行關閉的結果。收到一個F I N只意味着在這一方向上沒有數據流動。一個 T C P連接在收到一個 F I N后仍能發送數據。

當服務器收到這個 F I N,它發回一個A C K,確認序號為收到的序號加 1(報文段5) 。和S Y N一樣,一個F I N將占用一個序號。同時 T C P服務器還向應用程序(即丟棄服務器)傳送一個文件結束符。接着這個服務器程序就關閉它的連接,導致它的 T C P端發送一個F I N(報文段6) ,客戶必須發回一個確認,並將確認序號設置為收到序號加1(報文段7) 。

最大報文段長度

當建立一個連接時,每一方都有用於通告它期望接收的 M S S選項(M S S選項只能出現在S Y N報文段中) 。如果一方不接收來自另一方的 M S S值,則M S S就定為默認值5 3 6字節(這個默認值允許 2 0字節的I P首部和2 0字節的T C P首部以適合5 7 6字節I P數據報)。

當 T C P發送一個 S Y N時,或者是因為一個本地應用進程想發起一個連接,或者是因為另一端的主機收到了一個連接請求,它能將 M S S值設置為外出接口上的 M T U長度減去固定的I P首部和T C P首部長度。對於一個以太網, M S S值可達1 4 6 0字節。

如果目的 I P地址為“非本地的 ( n o n l o c a l )”, M S S通常的默認值為 5 3 6。

TCP的狀態變遷圖

TCP的狀態變遷圖
TCP的狀態變遷圖
TCP正常連接建立和終止所對應的狀態
TCP正常連接建立和終止所對應的狀態

2MSL等待狀態

T I M E _ WA I T狀態也稱為 2 M S L等待狀態。每個具體 T C P實現必須選擇一個報文段最大生存時間M SL(Maximum Segment Lifetime) 。它是任何報文段被丟棄前在網絡內的最長時間。

當 T C P執行一個主動關閉,並發回最后一個 A C K,該連接必須在 T I M E _ WA I T狀態停留的時間為 2倍的M S L。這樣可讓 T C P再次發送最后的A C K以防這個A C K丟失(另一端超時並重發最后的 F I N)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM