學過計算機網路的同學都知道tcp協議是計算機網路課程裡面最複雜的協議之一,還沒有通訊就要搞個什麼三次握手,斷開還要什麼四次分手,中間還要什麼流量控制啦,擁塞控制,滑動視窗什麼的,初學者看了就會頭暈。
通訊基本流程
我們都知道tcp協議是面向連線的協議,可以保證資料不丟失,不重複,不亂序的到達接收方。tcp的通訊過程大概是下圖所示。
上圖為tcp整個完整的通訊過程,首先經過三次握手建立連線(綠色部分),連線建立後可以正常通訊(藍色部分),通訊完畢需要四次揮手斷開連線(紅色部分)。
三次握手
三次握手可以這麼理解:
tcp客戶端是男孩子,tcp伺服器是女孩子,男孩子要追女孩子,首先要建立戀愛關係。需要乙個建立戀愛關係的過程。
男孩:我們可以戀愛嗎?(客戶端請求伺服器建立連線)
女孩:你想追我?想清楚了!(伺服器要求客戶端確認連線)
男孩:沒錯,你就是我的夢中情人!(客戶端確認連線)
三次握手確立了tcp伺服器和客戶端的「戀愛關係」。為什麼需要三次握手,兩次握手不行嗎?從通訊角度看,對於客戶端兩次就夠了,但對於伺服器不夠,因為,兩次握手伺服器僅僅知道客戶端和伺服器之間的通道是通的,但伺服器和客戶端之間還未知,所以需要收到客戶端發來的確認訊息雙方才能確認雙方的訊息通路都是ok的。
四次揮手
對於連線的斷開需要四次揮手,可以理解為男孩和女孩要分手,需要經過一番如下商量。
男孩:我們不合適,我們分手吧。(客戶端已經沒有資料可以傳輸)
女孩:什麼?這麼快就分手了,不能這麼快完,我要給你算總賬!(伺服器這端還有未傳送完的資料)
女孩給男孩算賬中……(沒有傳送完的資料繼續傳輸)
女孩:算好了,分手!(伺服器這端資料傳輸完畢)
男孩:好的,我們從今後還是朋友……(等待time_wait時間到,恢復單身)
這裡有個注意的點是,客戶端在收到伺服器傳送的資料傳輸完畢的訊息後(第三次揮手),不能立即關閉連線(恢復單身,尋找新歡),必須等待2msl時間才能關閉,因為這期間最後一次揮手伺服器未必能收到,如果沒有收到,伺服器會重新傳送第三次揮手的訊息,這時候如果客戶端關閉,將無法回應第四次揮手訊息,使得四次揮手過程無法完成。
TCP三次握手 四次揮手
tcp 三次握手 tcp 連線是通過三次握手進行初始化的。三次握手的目的是同步連線雙方的序列號和確認號並交換 tcp 視窗大小資訊。以下步驟概述了通常情況下客戶端計算機聯絡伺服器計算機的過程 1.客戶端向伺服器傳送乙個syn置位的tcp報文,其中包含連線的初始序列號x和乙個視窗大小 表示客戶端上用來...
TCP三次握手 四次揮手
服務端的tcp程序先建立傳輸控制塊tcb,準備接受客戶端程序的連線請求,然後服務端程序處於listen狀態,等待客戶端的連線請求,如有,則作出響應。1 客戶端的tcp程序也首先建立傳輸控制模組tcb,然後向服務端發出連線請求報文段,該報文段首部中的syn 1,ack 0,同時選擇乙個初始序號seq ...
TCP三次握手四次揮手
tcp transmission control protocol 傳輸控制協議 tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線。位碼即tcp標誌位,有6種標誌 urg urgent緊急 ack acknowledgement 確認 psh push傳送 rst...