上圖可見tcp三次握手過程。因為網路原因,可能客戶a向伺服器b傳送了乙個syn同步請求連線在網路中滯留了一會。然而客戶a在超時重傳的事件內,沒有收到自己發出了請求後必會得到乙個ack為1的確認,等到超時重傳定時器時間到了後還沒有收到ack確認。因此客戶a需要再次傳送乙個syn同步請求,這時候伺服器b直接收到了,給a乙個ack確認,a也給伺服器b乙個ack確認,至此三次握手完成了,可以進行資料通訊了。但是這時候第一次發出的syn同步到了伺服器b,伺服器b對遲到的syn請求也給出了乙個ack確認,客戶a這時候已經不認為這個對遲到的syn請求是自己傳送的,所以不會處理這個ack(即向伺服器b傳送ack)。如何沒有最後一次確認,客戶a收到延遲的syn的ack確認就會建立連線,但是實際上並沒資料傳輸,這樣占用了伺服器b的資源。其中需要注意的是步驟一、syn = 1且ack = 0。syn為1時,源於協議的設計syn和fin各佔乙個位元組的序號。
且步驟一和步驟二進行同步請求時,syn為1,之後syn為0。
因為如果沒有等待這2msl,伺服器b傳送給a的fin報文一旦丟失,a就無法傳送乙個ack使b完全關閉。若a的ack包丟失,在這個時間裡還可以再次重傳給b,使b可以完全關閉。
從上圖可以看到a傳送fin後,其已經不可以再向伺服器傳送資料了。但是伺服器b沒有直接傳送fin報文,因此這時伺服器b還可以繼續向客戶a傳送資料,客戶a這時候只能接收伺服器發去的資料。只有當伺服器向客戶端a傳送了fin報文,這個時候伺服器才終止向客戶a傳送資料。
TCP連線建立與終止
目錄 tcptcp連線建立 三次握手 tcp連線終止 四次揮手 tcp的狀態變遷圖 tcp是乙個全雙工的 面向連線的 可靠地傳輸協議,所以無論哪一方向另一方傳送資料之前,都需要先在兩者之間建立乙個連線 基於全雙工通訊所以存在tcp的半關閉狀態,也就是說斷開連線必須是雙方都關閉,否則就說這種狀態為半關...
TCP連線的建立與終止
乙個tcp連線由乙個4元組構成,它們分別是兩個ip位址,兩個埠號。即乙個tcp連線是由一對端點或套接字構成,其中通訊的每一端都由一對 ip位址,埠號 所唯一標識。乙個tcp連線通常分為3個階段 啟動 資料傳輸和退出 tcp開啟與關閉 下圖是乙個典型的tcp連線的建立和關閉過程 為了建立乙個tcp連線...
TCP連線的建立與終止
img tcp連線的建立與終止 下面是tcp連線建立與終止的時候的時序圖 img 在tcp ip協議中,tcp協議提供可靠的連線服務,採用三次握手建立乙個連線 1 第一次握手 建立連線時,客戶端a傳送syn包 syn j 到伺服器b,並進入syn send狀態,等待伺服器b確認。2 第二次握手 伺服...