2024-04-08
什么是網絡協議,在書本上的定義:網絡協議是為計算機網絡中進行數據交換而建立的規則、標準或者約定的集合。通常習慣是理解為規則,也就是TCP/IP規則。規則是什么?是雙方實現交互必須遵守的規范。通俗講,如果把網絡比喻為一個交通網,那么設備與設備之間的鏈路,就是公路,而公路上的紅綠燈、限速這些就是規則;遵守規則才能保證兩地地往來。而TCP/IP網絡協議,就是ip網絡中的重要規則之一。
TCP也就是傳輸控制協議(Transmission Control Protocol)是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。因為互聯網絡中的不同部分可能擁有截然不同的拓撲結構、帶寬、延遲、數據包大小和其他參數,而TCP協議能夠動態地適應互聯網絡的特性,具備面對各種故障是的健壯性,可以在不可靠的互聯網絡上提供可靠的端到端字節流。
作為一個傳輸控制協議,TCP 的工作主要內容也就是建立連接,傳輸數據以及連接終止三個部分。在這其中TCP的建立連接稱為“三次握手”,連接終止成為“四次揮手”。
一、建立連接:
TCP是因特網中的傳輸層協議,使用三次握手協議建立連接。當主動方發出SYN連接請求后,等待對方回答SYN+ACK,并最終對對方的 SYN 執行 ACK 確認。這種建立連接的方法可以防止產生錯誤的連接,TCP使用的流量控制協議是可變大小的滑動窗口協議。三次握手中,第一次握手確認客戶端具有發送的能;第二次握手確認服務端具有發送和接收的能力;第三次握手確認客戶端具有接收的能力,在三次握手中確認雙方都具有發送的能力和接收的能力。三次握手完成后,TCP客戶端和服務器端成功建立連接,就可以開始傳輸數據了。
二、三次握手過程:
第一次握手:SYN=1(連接請求報文),seq=a,發送后進入SYN-SENT狀態;
第二次握手:SYN=1,ACK=1(同意連接請求報文),seq=b,發送后服務端進入SYN-RCVD狀態;
第三次握手:ACK=1(確認請求報文),seq=a+1,發送后客戶端進入ESTABLISHED狀態,服務端收到后也進入ESTABLISHED狀態。
三、連接終止:
建立一個連接需要三次握手,而終止一個連接要經過四次握手,這是由于服務端在接收到FIN, 往往不會立即返回FIN, 必須等到服務端所有的報文都發送完畢了,才能發FIN。因此先發一個ACK表示已經收到客戶端的FIN,延遲一段時間才發FIN,這就造成了四次揮手。
四、四次揮手過程:
第一次揮手:若A認為數據發送完成,則它需要向B發送連接釋放請求。該請求只有報文頭,頭中攜帶的主要參數為:FIN=1,seq=u。此時,A將進入FIN-WAIT-1狀態。
第二次揮手:B收到連接釋放請求后,會通知相應的應用程序,告訴它A向B這個方向的連接已經釋放。此時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狀態。該狀態會持續2MSL時間,若該時間段內沒有B的重發請求的話,就進入CLOSED狀態,撤銷TCB。當B收到確認應答后,也便進入CLOSED狀態,撤銷TCB。
不管是三次握手還是四次揮手,其可靠性,簡單而言就是通過多次的確定,來減少錯誤的發生。很多協議的hello報文也是如此。通過固定某一階段,去不斷確定對端的狀態,由此確保網絡的穩定和可靠。并且TCP協議作為網絡的重要協議,一種重要規則,我們需要好好的去了解其工作原理、作用;這樣能夠幫助我們更好地在網絡公路上的通行,建立良好的網絡秩序,從而保證網絡的穩定性和持久性。
400-1144-149