TCP IP 三次握手和四次揮手

2022-08-27 00:18:33 字數 2128 閱讀 9226

作用:建立tcp連線

1.三次握手是客戶端先發起請求到伺服器,此時伺服器處於listen監聽狀態,a會先傳送乙個連線請求的報文---syn=1,ack=0,seq=x ,這個包也稱為syn包,當客戶端傳送完syn包後,就進入syn-sent狀態。

2.伺服器b收到報文後,如果確認要與a建立tcp連線,要回覆乙個ack包---syn=1,ack=1,ack=x+1,seq=y(注意這裡的ack和ack,大寫的ack表示的是占用乙個位元位的ack設定位,小寫的ack是確認號)。服務端b將ack包傳送完後,進入syn-recv狀態

3.客戶端a收到後,解析b發來的ack包,會給b回覆---syn=0,ack=1,seq=x+1,ack=y+1。客戶端a傳送完後就進入了established狀態,表示a端已建立連線。

4.伺服器b收到包後也進入established狀態。

tcp連線就建立完成

作用:斷開tcp連線

斷開連線有可能是a提出來,也有可能是b提出來的。當前客戶端和伺服器都處於established建立狀態

1.假設是客戶端a先提出,a會給伺服器先發乙個fin包---fin=1,seq=u。發完後客戶端a將轉變為fin-wait-1狀態等待b的確認

2.伺服器b收到後,看到報文中fin=1,知道是a」想分手「,b一想分就分唄,就給a回了個報文---ack=1,seq=v,ack=u+1。發完後就進入了close-wait關閉等待狀態。

3.a收到後,又進入fin-wait-2,等待伺服器b給他發fin=1的報文。

4.伺服器b這時可能還有沒給客戶端a傳送完的資料,當他確認傳送完後,它會傳送乙個fin+ack包---fin=1,ack=1,seq=w,ack=u+1。

而後自動進入last-ack狀態。

5.客戶端a收到b發來的fin包後,還需要對伺服器b做個回應的報文---ack=1,seq=u+1,ack=w+1。當傳送完這個包後,a不會立即進入關閉狀態,他要等待可能因為網路或其他因素導致伺服器b端發的資料報,為了不遺漏資料客戶端a將等待2倍的msl時長,之後才關閉。

msl:maximum segment lifetime的英文縮寫,可譯為「最長報文段壽命」,它是任何報文在網路上存在的最長的最長時間,超過這個時間報文將被丟棄。

6.伺服器b收到a的回覆後這才算真正的確認關閉連線了。

有沒有感覺揮手(分手)好麻煩,那就像現實中的分手,總要搞清每一步 咳咳咳咳咳咳

ack:確認號

seq=包的序號(注意這個數字是相對的)

ack:表示是否前面確認號字段是否有效。只有當ack=1時,前面的確認號字段才有效。tcp規定,連線建立後,ack必須為1,帶ack標誌的tcp報文段稱為確認報文段。

syn:在建立連線時使用,用來同步序號。當syn=1,ack=0時,表示這是乙個請求建立連線的報文段;當syn=1,ack=1時,表示對方同意建立連線。syn=1,說明這是乙個請求建立連線或同意建立連線的報文。只有在前兩次握手中syn才置為1,帶syn標誌的tcp報文段稱為同步報文段

fin:表示通知對方本端要關閉連線了,標記資料是否傳送完畢。如果fin=1,即告訴對方:

「我的資料已經傳送完畢,你可以釋放連線了」,帶fin標誌的tcp報文段稱為結束報文段

closed 沒有任何連線狀態

listen 偵聽狀態,等待來自遠方tcp埠的連線請求

syn-sent 在傳送連線請求後,等待對方確認

syn-received 在收到和傳送乙個連線請求後,等待對方確認

established 代表傳輸連線建立,雙方進入資料傳送狀態

fin-wait-1 主動關閉,主機已傳送關閉連線請求,等待對方確認

fin-wait-2 主動關閉,主機已收到對方關閉傳輸連線確認,等待對方傳送關閉傳輸連線請求

time-wait 完成雙向傳輸連線關閉,等待所有分組消失

close-wait 被動關閉,收到對方發來的關閉連線請求,並已確認

last-ack 被動關閉,等待最後乙個關閉傳輸連線確認,並等待所有分組消失

closing 雙方同時嘗試關閉傳輸連線,等待對方確認

TCP IP三次握手和四次揮手

一 tcp協議 1 tcp協議是一種面向連線的 可靠的 基於位元組流的傳輸層通訊協議,採用全雙工通訊 full duplex 2 雙工通訊 full duplex 指通訊雙方都能在同一時刻進行傳送和接收操作,目前所有的交換機都支援雙工模式。3 半雙工方式 half duplex 指通訊雙方都能在同一...

TCP IP三次握手 四次揮手

一 tcp ip三次握手原理 建立連線協議 三次握手 1 客戶端向伺服器端傳送連線請求包syn syn j 等待伺服器回應 2 伺服器端收到客戶端連線請求包syn syn j 後,將客戶端的請求包syn syn j 放入到自己的未連線佇列,此時伺服器需要傳送兩個包給客戶端 1.向客戶端傳送確認自己收...

TCP IP三次握手 四次揮手

我們在使用網際網路和別的 進行通訊的時候,都要依賴tcp ip協議。甚至有時候網不太好,瀏覽器會顯示當前狀態 正在與某某 握手.當網路狀態很好的時候,就會一閃而過。本文將詳細總結筆者在學習三次握手四次揮手時的各個狀態以及過程。首先,狀態圖如下。初始時,客戶端和服務端都是closed狀態。這時,客戶端...