TCP的連線與終止

2022-09-22 20:21:14 字數 1941 閱讀 6029

tcp的連線與終止

1.tcp報頭

t c p將使用者資料打包構成報文段;它傳送資料後啟動乙個定時器;另一端對收到的資料進行確認,對失序的資料重新排序,丟棄重複資料; t c p提供端到端的流量控制,並計算和驗證乙個強制性的端到端檢驗和。

2.tcp連線的建立與終止

3.tcp的狀態變遷

導致兩個進入established狀態的變遷對應開啟乙個連線,而兩個導致從established狀態離開的變遷對應關閉乙個連線。

4. 2msl等待狀態

ti m e wa i t狀態也稱為2 m s l等待狀態。每個具體t c p實現必須選擇乙個報文段最大生存時間m s l(maximum segment lifetime)。它是任何報文段被丟棄前在網路內的最長時間。

對乙個具體實現所給定的m s l值,處理的原則是:當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)。

這種2 m s l等待的另乙個結果是這個t c p連線在2 m s l等待期間,定義這個連線的插口(客戶的i p位址和埠號,伺服器的i p位址和埠號)不能再被使用。這個連線只能在2 m s l結束後才能再被使用。

遺憾的是,大多數t c p實現(如伯克利版)強加了更為嚴格的限制。在2 m s l等待期間,插口中使用的本地埠在預設情況下不能再被使用。所以一般都是客戶機執行主動關閉。

我們說圖1 8 - 1 3中客戶執行主動關閉並進入t i m e wa i t是正常的。伺服器通常執行被動關閉,不會進入t i m e wa i t狀態。這暗示如果我們終止乙個客戶程式,並立即重新啟動這個客戶程式,則這個新客戶程式將不能重用相同的本地埠。這不會帶來什麼問題,因為客戶使用本地埠,而並不關心這個埠號是什麼。

然而,對於伺服器,情況就有所不同,因為伺服器使用熟知埠。如果我們終止乙個已

經建立連線的伺服器程式,並試圖立即重新啟動這個伺服器程式,伺服器程式將不能把它的

這個熟知埠賦值給它的端點,因為那個埠是處於2 m s l連線的一部分。在重新啟動伺服器程式前,它需要在1 ~ 4分鐘。

下圖就是乙個伺服器執行主動關閉帶來影響的例子。

5.最大報文段長度

最大報文段長度(max segment size)表示t c p傳往另一端的最大塊資料的長度。當乙個連線建立時,連線的雙方都要通告各自的mss。當建立乙個連線時,每一方都有用於通告它期望接收的mss選項(mss選項只能出現在syn報文段中)。如果一方不接收來自另一方的mss值,則mss就定為預設值5 3 6位元組(這個預設值允許2 0位元組的i p首部和2 0位元組的t c p首部以適合5 7 6位元組i p資料報)。

例子考慮我們的主機s l i p,通過m t u為2 9 6的s l i p鏈路連線到路由器b s d i上。圖1 8 - 8顯示這些系統和主機s u n。

從s u n向s l i p發起乙個t c p連線,並使用t c p d u m p來觀察報文段。圖1 8 - 9顯示這個連線的建立(省略了通告視窗大小)。

在這個例子中, s u n傳送的報文段不能超過2 5 6位元組的資料,因為它收到的m s s選項值為2 5 6(第2行)。此外,由於s l i p知道它外出介面的m t u長度為2 9 6,即使s u n已經通告它的m s s為1 4 6 0,但為避免將資料分段,它不會傳送超過2 5 6位元組資料的報文段。系統允許傳送的資料長度小於另一端的m s s值。只有當一端的主機以小於5 7 6位元組的m t u直接連線到乙個網路中,避免這種分段才會有效。如果兩端的主機都連線到乙太網上,都採用5 3 6的m s s,但中間網路採用2 9 6的m t u,也將會出現分段。使用路徑上的m t u發現機制是關於這個問題的唯一方法。路徑上的mtu發現機制就是運用icmp的需要分片但是設定了不分片位(df)的錯誤訊息,這個錯誤訊息返回下一站的mtu。如果所用的icmp版本並不返回下一站的mtu的話,那麼只能乙個乙個(設定一系列的測試值)測試了,由大到小。

TCP的連線與終止

t c p將使用者資料打包構成報文段 它傳送資料後啟動乙個定時器 另一端對收到的資料進行確認,對失序的資料重新排序,丟棄重複資料 t c p提供端到端的流量控制,並計算和驗證乙個強制性的端到端檢驗和。導致兩個進入established狀態的變遷對應開啟乙個連線,而兩個導致從established狀態...

TCP的連線與終止

一 三次握手 1 伺服器必須準備好接受外來的連線。這通常通過呼叫socket bind和listen這三個函式來完成,我們稱之為被動開啟。2 客戶端通過呼叫connect發起主動開啟。這導致客戶tcp傳送乙個syn 同步 位元組,它告訴伺服器客戶將在 待建立 連線傳送的資料的初始序列號。通常syn分...

TCP連線建立與終止

目錄 tcptcp連線建立 三次握手 tcp連線終止 四次揮手 tcp的狀態變遷圖 tcp是乙個全雙工的 面向連線的 可靠地傳輸協議,所以無論哪一方向另一方傳送資料之前,都需要先在兩者之間建立乙個連線 基於全雙工通訊所以存在tcp的半關閉狀態,也就是說斷開連線必須是雙方都關閉,否則就說這種狀態為半關...