網路通訊的實體是不同主機之間程序的通訊,也就是端到端通訊,其過程借助於tcp或者udp協議,基於埠。
倘若利用tcp協議,則傳輸前有三次握手,傳輸後有三次揮手,是乙個可靠傳輸。
倘若利用udp協議,傳輸前不需要建立連線,對方收到後也不需要傳送確認,是乙個不可靠的傳輸,但是勝在消耗資源少,速度快。
首先我們需要知道為什麼要三次握手而不是兩次。原因是為了防止之前傳輸過的請求連線的資料報延時到達伺服器後,伺服器再次建立新的連線而導致的錯誤。
如果我們只使用二次握手
,假設有這麼一種情況,我們先發了乙個syn包,這個包因為某種原因被阻塞到網路中,這時候我們又傳送了乙個syn包,這次收到了對方的ack+syn包,tcp連線已經建立。過了一會兒之前阻塞的syn包傳送到了對方主機,對方主機又返回了乙個ack+syn包,這時候又建立了乙個tcp連線。但我們是只想建立乙個tcp連線的,這時候出現了兩個,浪費了資源。為了解決這種情況,因此就出現了tcp三次握手。
假設我們使用tcp三次握手,就可以避免這個情況,因為即使之前被阻塞的包被傳送到了服務端,服務端返回了ack+syn包,但只要我們不傳送最後的第三次握手也就是ack包,就不會建立連線,也就不會有資源的浪費,這就是tcp連線為什麼是三次的原因。
通過四次揮手來結束tcp連線,也是有其原因的,我的理解是這個樣子的:
第一次客戶端傳送fin包,告訴服務端,我不會再給你傳送資料了並且我想要斷開連線。
第二次服務端傳送ack包,告訴客戶端,這是我這邊剩餘要傳送的資料,等傳送完在關。
第三次服務端傳送fin+ack包,告訴客戶端,我這邊傳送結束,可以中斷連線了。
第四次客戶端傳送ack包,告訴服務端,好的。
兩張**-徹底明白tcp的三次握手與四次揮手
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...