連線建立階段,三次握手:
為什麼不是一次?
因為tcp是有鏈結的,就像打**,a撥號給b,要b選擇接聽以後才能進行通訊,故第二次握手是傳送b同意的訊號。
為什麼不是兩次?
因為網路傳輸是不可靠的,存在b發回的確認幀丟失的情況。如果這個包丟失了,那麼a會認為和b沒連上,超時重傳乙個連線訊號;而b,則因認為a已經和自己建立好連線了,無視這個包。那麼a、b之間永遠連不上了。
為什麼b不對a發回的確認幀進行再確認?
不需要,因為建立連線是a先提出的,所以它有訊息要傳送給b,這份訊息會在a發回確認幀時帶給b,因此進入了訊息傳輸階段。而b的這份確認會在訊息傳輸階段進行,a沒收到確認幀,則會重傳訊息。
為什麼不是四次?
如果是四次握手,那麼流程是兩次握手的全雙工版: a和b建立連線,b回應,表示知道了;b和a建立連線,a回應,表示知道了。顯然第二步和第三步可以合併為三次握手。
連線建立過程:
第一次握手:主機a傳送位碼為syn=1,隨機產生seq number=1234567的資料報到伺服器;主機b由syn=1知道,a要求建立連線;
第二次握手:主機b收到請求後要確認聯機資訊,向a傳送ack number=(主機a的seq+1),syn=1,ack=1,隨機產生seq=7654321的包;
第三次握手:主機a收到後檢查ack number是否正確,即第一次傳送的seq number+1,以及位碼ack是否為1,若正確,主機a會再傳送ack number=(主機b的seq+1),ack=1,主機b收到後確認seq值與ack=1則連線建立成功。
完成三次握手,主機a與主機b開始傳送資料。
連線關閉階段,四次揮手:
為什麼是四次?
因為tcp是全雙工的通訊模式,三次握手達到的其實是四次握手的效果。a單方面想關閉和b的通訊渠道,只表示a不想給b發訊息了;只有當b也不想給a發以後,連線才能真正的關閉。
TCP三次握手四次揮手的原因
1,引言 tcp三次握手,四次揮手的具體過程我就不講了吧,很多高瀏覽量的博文都講爛了,我主要是講理解和一些重難點,雖然文字很長,但是看完了肯定有收穫。2,正文 首先大家最關心的,為什麼要三次握手 眾所周知,網路層是不可靠的盡力交付的,他不管你送沒送達,這就意味著有一種可能性,a向b傳送乙個syn請求...
TCP三次握手 四次揮手
tcp 三次握手 tcp 連線是通過三次握手進行初始化的。三次握手的目的是同步連線雙方的序列號和確認號並交換 tcp 視窗大小資訊。以下步驟概述了通常情況下客戶端計算機聯絡伺服器計算機的過程 1.客戶端向伺服器傳送乙個syn置位的tcp報文,其中包含連線的初始序列號x和乙個視窗大小 表示客戶端上用來...
TCP三次握手 四次揮手
服務端的tcp程序先建立傳輸控制塊tcb,準備接受客戶端程序的連線請求,然後服務端程序處於listen狀態,等待客戶端的連線請求,如有,則作出響應。1 客戶端的tcp程序也首先建立傳輸控制模組tcb,然後向服務端發出連線請求報文段,該報文段首部中的syn 1,ack 0,同時選擇乙個初始序號seq ...