請求端(客戶端)傳送乙個syn指明客戶端打算連線的伺服器端口號,以及初始序列號。
服務端發回包含伺服器的初始序號的syn報文段作為應答。同時,將確認序號設定為客戶的isn加1以對客戶的syn報文段進行確認。乙個syn占用乙個序號。
客戶端必須將確認序號設定為服務端的isn加1以對伺服器的syn報文段進行確認。
建立乙個連線需要三次握手,而終止乙個連線要經過4次握手。這是由tcp的半關閉造成的。既然乙個tcp連線是全雙工(即資料在兩個方向上能同時傳遞),因此每個方向必須單獨的進行關閉。
客戶端傳送乙個fin,用來關閉從客戶端到服務端的資料傳送。
服務端收到這個fin,發回乙個ack,確認序號為收到的序號加一。和syn一樣,乙個fin將占用乙個序號。
服務端完成資料傳送,傳送給客戶端乙個fin。
客戶端收到fin之後,傳送給服務端乙個ack。
tcp提供了連線的一端在結束他的傳送後還能接受來自另一端資料的能力。這就是所謂的半關閉。
為了使用這個特性,程式設計介面必須為應用程式提供一種方式來說明「我已經完成了資料傳送,因此傳送乙個檔案結束(fin)給另一端,但我還想接收另一端發來的資料,直到它給我發來檔案結束(fin)」。
每個具體tcp實現必須選擇乙個報文段最大生存時間msl。他是任何報文段被丟棄前在網路內的最長時間。我們知道這個時間是有限的,因為tcp報文段以ip資料報在網路內傳輸,而ip資料報則有限制其生存時間的ttl欄位。對於ip資料報ttl的限制是基於跳數,而不是定時器。對於乙個具體實現所給定的msl值,處理的原則是:當tcp執行乙個主動關閉,並發回最後乙個ack,該連線必須在time_wait狀態停留的時間為2倍的msl。這樣可以讓tcp再次傳送最後的ack以防止這個ack丟失(另一端超時並重發最後的fin)
TCP IP詳解 讀書筆記 TCP 傳輸控制協議
tcp為應用層提供一種面向連線的 可靠的位元組流服務。乙個tcp連線中,僅有兩方進行彼此通訊,所以廣播和多播不能用於tcp。tcp通過以下方式提供可靠性 應用資料被切割為tcp認為最適合傳送的資料塊。由tcp傳遞給ip的資訊單位稱為報文段或段。tcp發出乙個段後啟動乙個定時器,用以等待目的端確認收到...
TCP 傳輸控制協議
推薦 tcp ip 簡直是程式設計師的福音 tcp 協議是 面向連線的,可靠的,流傳輸,協議。流 是指 不間斷 的資料結構,可以想象成排水管道中的水流。當應用程式採用 tcp 傳送訊息的時候,雖然可以保證傳送的順序,但是還是猶如沒有任何間隔的資料流,傳送給接收端。可以這麼理解 在傳送端,應用程式傳送...
TCP傳輸控制協議
tcp是網際網路中的傳輸層協議,使用三次握手協議建立連線。當主動方發出syn連線請求後,等待對方回答syn ack 1 並最終對對方的 syn 執行 ack 確認。這種建立連線的方法可以防止產生錯誤的連線,tcp使用的流量控制協議是可變大小的滑動視窗協議 tcp三次握手的過程如下 客戶端傳送syn ...