TCP三次握手和四次揮手

山有木xi發表於2020-02-25

百度百科對於tcp的定義是

"TCP旨在適應支援多網路應用的分層協議層次結構。 連線到不同但互連的計算機通訊網路的主計算機中的成對程式之間依靠TCP提供可靠的通訊服務。TCP假設它可以從較低階別的協議獲得簡單的,可能不可靠的資料包服務。 原則上,TCP應該能夠在從硬線連線到分組交換或電路交換網路的各種通訊系統之上操作。"

TCP是一種面向連線的單播協議,在傳送資料前,通訊雙方必須在彼此間建立一條連線。 在客戶端和伺服器的 記憶體裡儲存的一份關於對方的資訊,如ip地址、埠號等。TCP可以看成是一種位元組流,它會處理IP層或以下的層的丟包、重複以及錯誤問題。在連線的建立過程中,雙方需要交換一些連線的引數。這些引數可以放在TCP頭部。

TCP提供了一種可靠、面向連線、位元組流、傳輸層的服務,採用三次握手建立一個連線。採用四次揮手來關閉一個連線。

三次握手原理

SYN:請求建立連線,並在其序列號的欄位進行序列號的初始值設定。建立連線,設定為1

ACK:確認號是否有效,一般置為1

FIN:希望斷開連線

URG:緊急指標是否有效。為1,表示某一位需要被優先處理

PSH:提示接收端應用程式立即從TCP緩衝區把資料讀走

RST:對方要求重新建立連線,復位

第一次握手:建立連線時,客戶端傳送syn(syn=x)包到伺服器,並進入SYN_SENT狀態,等待伺服器確認;SYN:同步序列編號(Synchronize Sequence Numbers)。
第二次握手:伺服器收到syn包,必須確認客戶的SYN(ack=x+1),同時自己也傳送一個SYN包(syn=y),即SYN+ACK包,此時伺服器進入SYN_RECV狀態;

第三次握手:客戶端收到伺服器的SYN+ACK包,向伺服器傳送確認包ACK(ack=y+1),此包傳送完畢,客戶端和伺服器進入ESTABLISHED(TCP連線成功)狀態,完成三次握手。

通俗點說

1)A-->B:你好,我是A,收到了嗎

2)B-->A:你好A,我是B,我收到了

3)A-->B:收到,通訊開始

四次揮手原理

第一次揮手:Client傳送一個FIN,用來關閉Client到Server的資料傳送,Client進入FIN_WAIT_1狀態。
第二次揮手:Server收到FIN後,傳送一個ACK給Client,確認序號為收到序號+1(與SYN相同,一個FIN佔用一個序號),Server進入CLOSE_WAIT狀態。
第三次揮手:Server傳送一個FIN,用來關閉Server到Client的資料傳送,Server進入LAST_ACK狀態。
第四次揮手:Client收到FIN後,Client進入TIME_WAIT狀態,接著傳送一個ACK給Server,確認序號為收到序號+1,Server進入CLOSED狀態,完成四次揮手

通俗的說

1)A-->B:你好B,我的東西已經傳輸完畢

2)B-->A:收到,我的東西還沒傳輸完,請稍等

3)B-->A:你好A,我的東西傳輸完畢

4)A-->B:好的,通訊結束


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69917874/viewspace-2677191/,如需轉載,請註明出處,否則將追究法律責任。

相關文章