本篇博文總結於
《計算機網路》。
特點:
tcp連線的端點叫做套接字(socket)
tcp報文段的首部格式
tcp可靠傳輸的實現
滑動視窗,以位元組為單位;
超時重傳時間的選擇;
選擇確認sack;
tcp的流量控制
利用滑動視窗實現流量控制。
傳送方的傳送視窗不能超過接收方給出的接收視窗的數值。
當tcp連線一方收到對方的零視窗通知,就啟動持續計時器。
tcp的擁塞控制
(有空再慢慢研究)
tcp的運輸連線管理
運輸連線三個階段:連線建立、資料傳送、連線釋放。
在tcp連線建立過程中要解決以下三個問題:
連線建立
伺服器(b)的tcp伺服器程序先建立傳輸控制塊tcb,準備接受客戶程序的連線請求。然後伺服器程序就處於listen(收聽)狀態,等待客戶的連線請求。
客戶端(a)的tcp客戶程序也是首先建立傳輸控制塊tcb,然後向b發出連線請求報文段,這時首部中的同步位syn=1,同時選擇乙個初始號seq=x。tcp規定,syn報文段(即syn=1的報文段)不能攜帶資料,但要消耗乙個序號。這時,a程序進入syn-sent(同步已傳送)狀態。
b收到連線請求報文段後,則向a傳送確認。在確認報文段中就把syn位和ack位都置1,確認號是ack=x+1,同時也為自己選擇乙個初始序號seq=y。這時b程序進入syn-rcvd(同步收到)狀態。
a程序收到b的確認後,還要向b給出確認。確認報文段的ack置1,確認號ack=y+1,而自己的序號seq=x+1。這時,tcp連線已經建立,a進入established(已建立連線)狀態。
當b收到a的確認後,也進入established(已建立連線)狀態。
連線釋放
a程序先向其tcp發出連線釋放報文段,並停止再傳送資料,主動關閉tcp連線。a把連線釋放報文段首部的fin置1,其序號seq=u,它等於前面已傳送過的資料的最後乙個位元組的序號加1.這時a程序進入fin-wait-1(終止等待1)狀態,等待b的確認。
b收到連線釋放報文段後即發出確認,確認號是ack=u+1,而這個報文段自己的序號是v(b前面已傳送過的資料的最後乙個位元組序號加1)。這裡b程序進入close-wait(關閉等待)狀態。tcp伺服器程序這時應通知高層應用程序,因而從a到b這個方向的連線就釋放了,這時的tcp連線處於半關閉(half-close)狀態。b到a這個方向的連線並未關閉,這個狀態可能會持續一些時間。
a收到來自b的確認後,就進入fin-wait-2(終止等待2)狀態,等待b發出的連線釋放報文段。
若b已經沒有要向a傳送的資料,其應用程序就通知tcp釋放連線。這時b發出的連線釋放報文段必須使fin=1。現假定b的序號為w(在半關閉狀態b可能又傳送了一些資料),b還必須重複上次已傳送過的確認號ack=u+1。這時b就進入last-ack(最後確認)的狀態,等待a的確認。
a在收到b的連線釋放報文段後,必須對此發出確認。在確認報文段中把ack置1,確認號ack=w+1,而自己的序號是seq=u+1。然後進入到time-wait(時間等待)狀態。請注意,現在tcp連線還沒有釋放掉,必須經過時間等待計時器設定的時間2msl後,a才進入到closed狀態。時間msl叫做最長報文段壽命(maxxinum segment lifetime)
傳輸協議 TCP
一tcp可靠資料傳輸 1 封裝tcp報文段 2 發出報文後啟動乙個計時器 3 通過校驗和發現資料差錯 4 通過序號重新排序,丟棄重複報文 5 流量控制 tcp的可靠傳說實現機制包括差錯編碼 確認 序號 重傳 計時器等 tcp的可靠資料傳輸是基於滑動視窗協議,但是傳送的視窗大小動態變化 二tcp流量控...
TCP 傳輸控制協議
推薦 tcp ip 簡直是程式設計師的福音 tcp 協議是 面向連線的,可靠的,流傳輸,協議。流 是指 不間斷 的資料結構,可以想象成排水管道中的水流。當應用程式採用 tcp 傳送訊息的時候,雖然可以保證傳送的順序,但是還是猶如沒有任何間隔的資料流,傳送給接收端。可以這麼理解 在傳送端,應用程式傳送...
TCP傳輸控制協議
tcp是網際網路中的傳輸層協議,使用三次握手協議建立連線。當主動方發出syn連線請求後,等待對方回答syn ack 1 並最終對對方的 syn 執行 ack 確認。這種建立連線的方法可以防止產生錯誤的連線,tcp使用的流量控制協議是可變大小的滑動視窗協議 tcp三次握手的過程如下 客戶端傳送syn ...