tcp協議是處於傳輸層的協議
客戶端與服務端通過傳輸層的tcp協議建立網路連線時,需要經歷三次握手的過程;
三次握手的期間,需要用到tcp報頭中的幾個標識:ack、syn、fin;
1、第一次握手,客戶端傳送連線請求報文,此時tcp報文頭部中的syn=1、ack=0,表明這是個連線請求,seq=x,客戶端變為syn_sent狀態,等待伺服器響應;
2、第二次握手,服務端接收到syn=1的請求報文,需要返回乙個確認報文,ack=x + 1,syn=1,ack=1,seq=y,傳送給客戶端,服務端變為syn_recv狀態;
3、第三次握手,客戶端收到確認報文後,再返回乙個報文,其中ack=y+1,ack=1,seq=x+1;
其實三次握手說白了,就是客戶端與伺服器相互傳送的三次請求,每次請求帶上一堆tcp報文頭,根據報文頭是否正確,來判斷建立的連線是否安全。
1、假設是兩次握手,如果客戶端在第一次握手的過程**現錯誤,卡在了半路上;
客戶端又重新傳送了一次連線請求過去,服務端接收到之後,開闢了連線資源返回響應,兩次握手建立了連線;
此時之前卡住的請求突然又通了,到達了服務端,服務端開闢了連線資源,返回響應給客戶端,但是由於此時客戶端和服務端之間已經建立了傳輸連線,所以這次的響應並不會被理會,這種情況顯然是存在問題的。
2、三次握手保證了客戶端與服務端之間建立的連線的安全和可靠性,如果發生了類似1中的問題,客戶端接收到二次握手的響應時,發現不對會傳送乙個要求復位的報文;
如果四次甚至更多次數的握手,也可以保證安全性,但是會浪費通訊的成本和資源。
1、第一次揮手,客戶端傳送報文,報頭中包含資訊fin=1,seq=u,此時進入fin-wait-1狀態;
2、第二次揮手,服務端接收到報文,進入close_wait狀態,返回乙個報文,包含資訊ack=1,ack=u+1,seq=v。客戶端收到這個報文後,進入fin-wait-2狀態,此時客戶端到服務端的連線就釋放了;
3、第三次揮手,服務端傳送連線釋放報文,fin=1,ack=u+1,seq=w,服務端進入last_ack狀態;
4、第四次揮手,客戶端接收到連線釋放報文後,傳送應答報文,ack=1,ack=w+1,seq=u+1,進入time_wait狀態,等待一會後,客戶端進入closed狀態,服務端接收到報文之後進入closed狀態。
Tcp三次握手與四次揮手
tcp三次握手 四次揮手 在tcp ip協議中,tcp協議提供可靠的連線服務,採用三次握手建立乙個連線。第一次握手 建立連線時,客戶端傳送syn包 syn j 到伺服器,並進入syn send狀態,等待伺服器確認 syn 同步序列編號 synchronize sequence numbers 第二次...
TCP三次握手與四次揮手
也許三次握手你會經常聽到,但你知道三次握手的真正意義嗎,為什麼需要三次握手呢?首先我們必須明白tcp是面向連線的協議,無論哪乙個方向在傳送資料之前,都必須先在雙方之間建立連線。這一點與udp協議是不一樣的,udp在傳送資料報之前是不需要建立連線的。建立tcp連線的過程中,通訊的雙方需要互相發報文進行...
tcp三次握手與四次揮手
一.tcp三次握手 簡述 a傳送乙個請求給b,b發回確認,然後a再加以確認,來回共3次 1 第一次握手 客戶端傳送syn包 syn x 到伺服器,並進入syn send狀態,等待伺服器確認。2 第二次握手 伺服器收到syn包之後,必須確認客戶的syn ack x 1 同時自己也傳送乙個syn syn...