TCP IP的三次握手和四次揮手

2021-07-24 07:22:13 字數 1623 閱讀 6461

tcp報文的首部格式:

序列號:tcp連線中每乙個報文流都會有乙個32位的序列號

確認號:校驗身份時使用。

syn:建立連線時使用,用來同步序號

ack:表示確認號字段是否有效,1有效,0無效

fin:1表示資料已傳送完畢可以釋放連線,0表示不能釋放連線

客戶端請方a 伺服器應答方b

tcp的三次握手:

1.第一次握手:a給b發乙個tcp的報文,該報文的syn=1,ack=0表示想要和b建立連線,同時傳送乙個初始序列號isn=x,用於後面的身份校驗,無確認號。

2.第二次握手:b收到a的報文之後給a返回乙個tcp的報文,該報文的syn=1,ack=1,確認號=x+1,同時傳送自己的初始序列號isn=y

3.第三次握手:a收到b返回的報文後再次傳送乙個確認包,該報文的syn=0,ack=1,序列號=y+1,無確認號。(無確認號的原因是:tcp的建立階段結束,接下來開始進行應用層的資料互動所以不再需要tcp連線的確認號了。)

tcp的四次揮手:

tcp的連線是全雙工的雙向讀寫通道,所以說當想要把連線斷開時,要把分兩個階段把兩個方向的連線全部斷開。

《第一階段:a寫完資料之後要斷開連線》

1.第一次揮手:a給b傳送乙個報文,該報文的fin=1,表示資料已傳送完成想要和b斷開連線,同時傳送乙個序列號isn=x,a執行主動關閉, 關閉伺服器讀通道,b無法讀a了。

2.第二次揮手:b收到a的報文之後給a返回乙個tcp的報文,該報文的ack=1,序列號=x+1,b執行被動關閉,關閉客戶端寫信道,a無法寫b了。

(此時b仍然可以往a寫資料,a仍然可以讀取b的資料)

《第二階段:b向a寫完資料之後要斷開連線》

3.第三次揮手:b將資料處理完成之後再給a傳送乙個tcp的報文,該報文的fin=1,表示可以和a斷開連線,同時傳送乙個序列號isn=y,b執行主動關閉,關閉客戶端讀通道,a無法讀b了。

4.第四次揮手:a收到b的報文之後給b返回乙個tcp的報文,該報文的ack=1,序列號=y+1,a執行被動關閉,關閉伺服器寫信道,b無法寫a了。

出現在a,連線斷開請求方。當a收到第三次握手的報文之後給b傳送了ack之後立即進入timewait狀態。

timewait的作用:一是為了保證下乙個新建立的socket不會被以前延遲的報文影響,二是保證此次連線能夠可靠關閉。所以timewait狀態需要維持兩個msl,這樣所有可能重新分發的tcp報文就都可以確認消失了。

timewait的作用具體案例闡釋:一、如果b直接cloased,然後由於業務需求再次建立乙個新的tcp連線,新連線的埠有可能與舊連線一樣,這樣舊連線滯留在網路中的報文就會與新連線的衝突,所以需要等待2msl,這樣舊連線的資料報就都從網路消失了。二、如果a直接closed,然後由於各種元素導致b沒有收到第四次握手a傳送過來的ack,那麼b就會在等待超時之後不停的向a傳送fin,最後b會收到乙個rst而不是ack,繼而把錯誤上報給高層,所以a要在傳送了fin要等待兩倍的msl。為什麼是兩倍的msl呢?第乙個msl是為了保證殘留的資料報能夠全部傳送過來,第二個msl是為了保證殘留在網路中的資料報完全消失。

TCP IP三次握手和四次揮手

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

TCP IP 三次握手和四次揮手

作用 建立tcp連線 1.三次握手是客戶端先發起請求到伺服器,此時伺服器處於listen監聽狀態,a會先傳送乙個連線請求的報文 syn 1,ack 0,seq x 這個包也稱為syn包,當客戶端傳送完syn包後,就進入syn sent狀態。2.伺服器b收到報文後,如果確認要與a建立tcp連線,要回覆...

TCP IP三次握手 四次揮手

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