如何理解TCP的三次握手原理?根據題意的題意,三次握手就是為了客戶端與服務器之間建立連接。TCP協議中文名傳輸控制協議,是一系列規則的集合,使用時需要跟網際協議(IP)共同使用,是以互聯網在計算機之間由信息單元形式發送數據。而IP協議是控制實際數據傳輸,TCP協議負責追蹤在互聯網上傳送的信息所劃分的各個數據單元,也就是所謂的"包"。TCP協議是面向連接協議,也就是說兩端在傳輸信息時連接是一直處于建立和保持的狀態。其負責把信息劃分為IP協議能夠處理的,也要把接受到的包拼成一個完整的信息。
TCP的三次握手原理
TCP會話初期所謂的三次握手,也就是對每次發送的數據量是如何跟蹤進行協商,使數據端的發送和接受同步,而根據接收到的數據量來確定數據及確定數據發送,接受完畢后何時撤銷聯系并建立虛擬連接。TCP握手協議在TCP/IP協議中,TCP協議可提供可靠的連接服務,采用三次握手原理來建立一個可靠的連接。
第一次握手:建立連接時,客戶端發送"包"至服務器,并進入SYN-SEND狀態,來等服務器確認。
第二次握手:服務器接受到客服端發來的"包",此時確認客戶的SYN包,同時也會為自己發送一個SYN包,即SYN+ACK包,這時候服務器就會進入SYN-RECV狀態,準備給客戶端發送SYN+ACK包。
第三次握手:客戶端接受到服務器發送過來的SYN+ACK包后,就會向服務器發送確認包ACK,這個包發送完成,此時客戶端和服務器都會進入ES-TABLISHED狀態,表示三次握手已經完成。因此,三次握手完成,客戶端和服務器就可以進行數據傳輸了。
現在不想連接了,TCP也要相互確認后才可斷開連接,此過程采用的是四次揮手原理。
四次揮手
第一次揮手:斷開連接時,客戶端發送一個FIN=1的請求給服務器,要求斷開,等待服務器確認。
第二次揮手:服務器接受到客戶端發來的請求,發送ACK=1進行確認,確認信息后發送。
第三次揮手:服務器發送一個FIN=1的包至客戶端,與源主機斷開,等待源主機返回一個ACK=1的信息。
第四次揮手:客戶端接受到服務器發送的FIN=1的包,確認后發送ACK=1的信息至服務器,這樣四次揮手完成,完成客戶端與服務器之間的連接。
TCP為什么需要三次握手而不是四次揮手呢?從三次揮手原理看,四次握手原理是在三次握手原理的第三次握手基礎上,服務器把確認的ACK包再次發送至客戶端。實際上這樣的過程可以無限循環下去,其實三次握手就已經能夠讓雙方都知道對方設備是好用的且次數是最少的。如此看來不采用四次握手而采用三次握手,是為了減少資源浪費,因此第四次握手相當多余的。