TCP連接的建立和釋放分別通過“三次握手”和“四次揮手”來完成。
三次握手過程
TCP三次握手是建立可靠網(wǎng)絡(luò)連接的關(guān)鍵過程,它用于確保通信雙方能夠正常發(fā)送和接收數(shù)據(jù),并提供可靠的數(shù)據(jù)傳輸機(jī)制。三次握手的主要目標(biāo)包括:
? 同步雙方的序列號
? 確認(rèn)雙方的接收和發(fā)送能力
? 防止因?yàn)檫^期報(bào)文導(dǎo)致的誤連接

1
第一次握手
? 客戶端發(fā)送一個(gè)SYN(同步)請求報(bào)文,表示希望建立連接,并附帶初始序列號(Sequence Number)。< 客戶端撥通服務(wù)器的電話,說“喂?聽得到嗎?”>? 客戶端進(jìn)入 SYN_SENT 狀態(tài),等待服務(wù)器的響應(yīng)。
2
第二次握手
? 服務(wù)器收到請求后,回復(fù)一個(gè)SYN+ACK(同步+確認(rèn))報(bào)文。< “聽得到!你那邊OK嗎?”>? ACK字段確認(rèn)客戶端的序列號,同時(shí)服務(wù)器生成自己的初始序列號。
? 服務(wù)器進(jìn)入 SYN_RCVD 狀態(tài),等待客戶端的確認(rèn)。
3
第三次握手
? 客戶端收到服務(wù)器的確認(rèn)后,再發(fā)送一個(gè)ACK(確認(rèn))報(bào)文,確認(rèn)服務(wù)器的響應(yīng)。<客戶端確認(rèn):“沒問題,開始聊吧!”>? 客戶端進(jìn)入 ESTABLISHED 狀態(tài),服務(wù)器也進(jìn)入 ESTABLISHED 狀態(tài),連接正式建立。下面是TCP頭部的一個(gè)簡單介紹:上述流程中提到:

序列號:
定義:序列號標(biāo)識數(shù)據(jù)流中每個(gè)字節(jié)的唯一編號,用于確保數(shù)據(jù)的有序傳輸。
初始值:在連接建立時(shí),序列號由發(fā)送方隨機(jī)生成。
變化規(guī)則:每發(fā)送一個(gè)數(shù)據(jù)段,序列號會增加該數(shù)據(jù)段的字節(jié)數(shù)。例如,發(fā)送100字節(jié)的數(shù)據(jù)后,序列號會增加100。
作用:解決網(wǎng)絡(luò)中數(shù)據(jù)包亂序問題,確保接收方能夠按照正確順序重組數(shù)據(jù)。
確認(rèn)號:
定義:確認(rèn)號表示接收方期望收到的下一個(gè)數(shù)據(jù)包的序列號。
變化規(guī)則:確認(rèn)號等于接收到的序列號加上數(shù)據(jù)段的長度。如果接收到的是SYN或FIN報(bào)文,則確認(rèn)號加1。
作用:通知發(fā)送方哪些數(shù)據(jù)已經(jīng)被成功接收,解決丟包問題。
確認(rèn)號和序列號機(jī)制是確保TCP數(shù)據(jù)傳輸數(shù)據(jù)可靠性的關(guān)鍵機(jī)制。
為什么要三次握手?
簡單來講,三次握手是保證通信穩(wěn)定正確的最小開銷。
可以有一個(gè)很簡單的對話例子:
? A — B:你聽得到我嗎?
? B — A:我聽得到,你能聽到我嗎?
? A — B:我也能聽到,我們可以開始正式交流了。
三次握手通過同步序列號,確認(rèn)機(jī)制等等,確保了TCP連接的穩(wěn)定性和可靠性。
四次揮手過程
TCP的四次揮手是用于終止TCP連接的過程,確保雙方都能可靠地關(guān)閉連接。

1
第一次揮手
客戶端發(fā)送一個(gè)帶有FIN(Finish)標(biāo)志的報(bào)文段,表示客戶端不再發(fā)送數(shù)據(jù),但仍然可以接收數(shù)據(jù)。此時(shí)客戶端進(jìn)入FIN_WAIT_1狀態(tài)。< 客戶端說:“我講完了,先掛了”>
2
第二次揮手
服務(wù)器收到客戶端的FIN報(bào)文后,發(fā)送一個(gè)ACK(Acknowledgment)報(bào)文作為確認(rèn),確認(rèn)序號為收到的序號加1。此時(shí)服務(wù)器進(jìn)入CLOSE_WAIT狀態(tài),客戶端收到ACK后進(jìn)入FIN_WAIT_2狀態(tài)。< 服務(wù)器回應(yīng):“收到,我還在處理消息?!?
3
第三次揮手
服務(wù)器在完成數(shù)據(jù)發(fā)送后,向客戶端發(fā)送一個(gè)FIN報(bào)文,表示服務(wù)器也不再發(fā)送數(shù)據(jù)。此時(shí)服務(wù)器進(jìn)入LAST_ACK狀態(tài),等待客戶端的確認(rèn)。< 服務(wù)器處理完數(shù)據(jù)后說:“我也講完了?!?
4
第四次揮手
客戶端收到服務(wù)器的FIN報(bào)文后,發(fā)送一個(gè)ACK報(bào)文作為確認(rèn),確認(rèn)序號為收到的序號加1。此時(shí)客戶端進(jìn)入TIME_WAIT狀態(tài),等待2MSL(最大報(bào)文段生存時(shí)間)后進(jìn)入CLOSED狀態(tài)。服務(wù)器收到ACK后,立即進(jìn)入CLOSED狀態(tài)。< 客戶端確認(rèn):“好的,再見!”>
注:如果服務(wù)器沒有收到客戶端的ACK,會在2MSL后重傳FIN,客戶端在TIME_WAIT狀態(tài)可以重新發(fā)送ACK。2MSL的時(shí)間足以讓網(wǎng)絡(luò)中所有舊的重復(fù)報(bào)文段消失,防止它們干擾新的連接。
為什么需要四次揮手?
全雙工通信:TCP是全雙工的,每個(gè)方向都需要單獨(dú)關(guān)閉??蛻舳税l(fā)送FIN表示不再發(fā)送數(shù)據(jù),但服務(wù)器可能仍有數(shù)據(jù)要發(fā)送,因此需要服務(wù)器也發(fā)送FIN來確認(rèn)關(guān)閉。
可靠關(guān)閉:通過四次揮手,確保雙方都能確認(rèn)對方的關(guān)閉意圖,避免數(shù)據(jù)丟失或不完整。
億佰特串口服務(wù)器推薦

億佰特串口服務(wù)器產(chǎn)品涵蓋單串口服務(wù)器、多串口服務(wù)器、Wi-Fi串口服務(wù)器以及串口服務(wù)器模組等,可提供串口轉(zhuǎn)網(wǎng)絡(luò)功能,能夠?qū)⒋跀?shù)據(jù)轉(zhuǎn)換成TCP/IP協(xié)議數(shù)據(jù),實(shí)現(xiàn)串口與網(wǎng)絡(luò)的雙向透明傳輸。被廣泛應(yīng)用于考勤系統(tǒng)、機(jī)房監(jiān)控、電力監(jiān)控等場景。
-
數(shù)據(jù)傳輸
+關(guān)注
關(guān)注
9文章
2201瀏覽量
67586 -
TCP
+關(guān)注
關(guān)注
8文章
1425瀏覽量
83516 -
報(bào)文
+關(guān)注
關(guān)注
0文章
39瀏覽量
4357
發(fā)布評論請先 登錄
TCP/IP協(xié)議工作過程的三次握手和四次揮手
TCP三次握手過程及四次揮手過程說明
TCP三次握手和四次揮手以及11種狀態(tài)資料下載
如何使用WireShark進(jìn)行TCP三次握手
TCP建立連接概述及三次握手、四次揮手的流程
用戀愛的方式解釋TCP的三次握手和四次揮手
TCP三次握手和四次揮手,這樣解釋太通俗易懂了!
評論