t c p將使用者資料打包構成報文段;它傳送資料後啟動乙個定時器;另一端對收到的資料進行確認,對失序的資料重新排序,丟棄重複資料; t c p提供端到端的流量控制,並計算和驗證乙個強制性的端到端檢驗和。
導致兩個進入established狀態的變遷對應開啟乙個連線,而兩個導致從established狀態離開的變遷對應關閉乙個連線。
ti m e wa i t狀態也稱為2 m s l等待狀態。每個具體t c p實現必須選擇乙個報文段最大生存時間m s l(maximum segment lifetime)。它是任何報文段被丟棄前在網路內的最長時間。
問題:為什麼要存在time_wait(2msl)狀態?
time_wait狀態有兩個存在的理由:
(1)可靠地實現tcp全雙工鏈結的終止
(2)允許老的重複分節在網路中消逝
第乙個理由是:因為最後的ack如果丟失的話,那麼伺服器一定時間內收不到ack,將會重新傳送fin,所以客戶機必須維護狀態資訊,以允許它重新傳送最終那個ack。要是客戶機不維護狀態資訊,它將相應乙個rst,這個分節就會被伺服器解釋成為乙個錯誤。tcp需要正確處理終止序列的四個分節來執行所有必要的工作以徹底終止某個鏈結上兩個方向的資料流。所以處於time_wait狀態一端,有時必須重發最後的ack。
第二個理由是:原來的分組可能在網路中迷途(由於路由故障,迴圈),這些分組被稱為迷途的重複分組或漫遊的重複分組。如果路由在某個時刻修復,然後ack已經重發。那麼就會收到兩個ack,如果沒有2msl狀態,那麼這個ack會當做新的鏈結的ack。
我們說圖1 8 - 1 3中客戶執行主動關閉並進入t i m e wa i t是正常的。伺服器通常執行被動關閉,不會進入t i m e wa i t狀態。這暗示如果我們終止乙個客戶程式,並立即重新啟動這個客戶程式,則這個新客戶程式將不能重用相同的本地埠。這不會帶來什麼問題,因為客戶使用本地埠,而並不關心這個埠號是什麼。
然而,對於伺服器,情況就有所不同,因為伺服器使用熟知埠。如果我們終止乙個已
經建立連線的伺服器程式,並試圖立即重新啟動這個伺服器程式,伺服器程式將不能把它的
這個熟知埠賦值給它的端點,因為那個埠是處於2 m s l連線的一部分。在重新啟動伺服器程式前,它需要在1 ~ 4分鐘。
下圖就是乙個伺服器執行主動關閉帶來影響的例子。
最大報文段長度(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的連線與終止
一 三次握手 1 伺服器必須準備好接受外來的連線。這通常通過呼叫socket bind和listen這三個函式來完成,我們稱之為被動開啟。2 客戶端通過呼叫connect發起主動開啟。這導致客戶tcp傳送乙個syn 同步 位元組,它告訴伺服器客戶將在 待建立 連線傳送的資料的初始序列號。通常syn分...
TCP的連線與終止
tcp的連線與終止 1.tcp報頭 t c p將使用者資料打包構成報文段 它傳送資料後啟動乙個定時器 另一端對收到的資料進行確認,對失序的資料重新排序,丟棄重複資料 t c p提供端到端的流量控制,並計算和驗證乙個強制性的端到端檢驗和。2.tcp連線的建立與終止 3.tcp的狀態變遷 導致兩個進入e...
TCP連線建立與終止
目錄 tcptcp連線建立 三次握手 tcp連線終止 四次揮手 tcp的狀態變遷圖 tcp是乙個全雙工的 面向連線的 可靠地傳輸協議,所以無論哪一方向另一方傳送資料之前,都需要先在兩者之間建立乙個連線 基於全雙工通訊所以存在tcp的半關閉狀態,也就是說斷開連線必須是雙方都關閉,否則就說這種狀態為半關...