什麽是TCP_TCP連接的握手和揮手

2024-04-08


什麽(me) 是網絡協議,在書(shu) 本上的定義(yi) :網絡協議是為(wei) 計算機網絡中進行數據交換而建立的規則、標準或者約定的集合。通常習(xi) 慣是理解為(wei) 規則,也就是TCP/IP規則。規則是什麽(me) ?是雙方實現交互必須遵守的規範。通俗講,如果把網絡比喻為(wei) 一個(ge) 交通網,那麽(me) 設備與(yu) 設備之間的鏈路,就是公路,而公路上的紅綠燈、限速這些就是規則;遵守規則才能保證兩(liang) 地地往來。而TCP/IP網絡協議,就是ip網絡中的重要規則之一。


TCP也就是傳(chuan) 輸控製協議(Transmission Control Protocol)是一種麵向連接的、可靠的、基於(yu) 字節流的傳(chuan) 輸層通信協議。因為(wei) 互聯網絡中的不同部分可能擁有截然不同的拓撲結構、帶寬、延遲、數據包大小和其他參數,而TCP協議能夠動態地適應互聯網絡的特性,具備麵對各種故障是的健壯性,可以在不可靠的互聯網絡上提供可靠的端到端字節流。


作為(wei) 一個(ge) 傳(chuan) 輸控製協議,TCP 的工作主要內(nei) 容也就是建立連接,傳(chuan) 輸數據以及連接終止三個(ge) 部分。在這其中TCP的建立連接稱為(wei) “三次握手”,連接終止成為(wei) “四次揮手”。


一、建立連接:


TCP是因特網中的傳(chuan) 輸層協議,使用三次握手協議建立連接。當主動方發出SYN連接請求後,等待對方回答SYN+ACK,並最終對對方的 SYN 執行 ACK 確認。這種建立連接的方法可以防止產(chan) 生錯誤的連接,TCP使用的流量控製協議是可變大小的滑動窗口協議。三次握手中,第一次握手確認客戶端具有發送的能;第二次握手確認服務端具有發送和接收的能力;第三次握手確認客戶端具有接收的能力,在三次握手中確認雙方都具有發送的能力和接收的能力。三次握手完成後,TCP客戶端和服務器端成功建立連接,就可以開始傳(chuan) 輸數據了。


二、三次握手過程:

第一次握手:SYN=1(連接請求報文),seq=a,發送後進入SYN-SENT狀態;

第二次握手:SYN=1,ACK=1(同意連接請求報文),seq=b,發送後服務端進入SYN-RCVD狀態;

第三次握手:ACK=1(確認請求報文),seq=a+1,發送後客戶端進入ESTABLISHED狀態,服務端收到後也進入ESTABLISHED狀態。


三、連接終止:

建立一個(ge) 連接需要三次握手,而終止一個(ge) 連接要經過四次握手,這是由於(yu) 服務端在接收到FIN, 往往不會(hui) 立即返回FIN, 必須等到服務端所有的報文都發送完畢了,才能發FIN。因此先發一個(ge) ACK表示已經收到客戶端的FIN,延遲一段時間才發FIN,這就造成了四次揮手。


四、四次揮手過程:

第一次揮手:若A認為(wei) 數據發送完成,則它需要向B發送連接釋放請求。該請求隻有報文頭,頭中攜帶的主要參數為(wei) :FIN=1,seq=u。此時,A將進入FIN-WAIT-1狀態。

第二次揮手:B收到連接釋放請求後,會(hui) 通知相應的應用程序,告訴它A向B這個(ge) 方向的連接已經釋放。此時B進入CLOSE-WAIT狀態,並向A發送連接釋放的應答,其報文頭包含:ACK=1,seq=v,ack=u+1。A收到該應答,進入FIN-WAIT-2狀態,等待B發送連接釋放請求。

第三次揮手:當B向A發完所有數據後,向A發送連接釋放請求,請求頭:FIN=1,ACK=1,seq=w,ack=u+1。B便進入LAST-ACK狀態。

第四次揮手:A收到釋放請求後,向B發送確認應答,此時A進入TIME-WAIT狀態。該狀態會(hui) 持續2MSL時間,若該時間段內(nei) 沒有B的重發請求的話,就進入CLOSED狀態,撤銷TCB。當B收到確認應答後,也便進入CLOSED狀態,撤銷TCB。


不管是三次握手還是四次揮手,其可靠性,簡單而言就是通過多次的確定,來減少錯誤的發生。很多協議的hello報文也是如此。通過固定某一階段,去不斷確定對端的狀態,由此確保網絡的穩定和可靠。並且TCP協議作為(wei) 網絡的重要協議,一種重要規則,我們(men) 需要好好的去了解其工作原理、作用;這樣能夠幫助我們(men) 更好地在網絡公路上的通行,建立良好的網絡秩序,從(cong) 而保證網絡的穩定性和持久性。