tcp是主機對主層的面向連線的傳輸控制協議,提供可靠的連線服務,採用三次握手確認乙個連線,四次揮手則是斷開乙個連線。
其中位碼即tcp標誌位,有六種表示:
syn(synchronous建立連線)
ack(acknowledgement 表示響應、確認)
psh(push表示有data資料傳輸)
fin(finish關閉連線)
rst(reset表示連線重置)
urg(urgent緊急指標字段值有效)
三次握手:
第一次握手:客戶端傳送syn包(syn=x)到伺服器,並進入syn_send狀態,等待伺服器確認;
第二次握手:伺服器收到syn包,必須確認客戶的syn(ack=x+1),同時自己也發乙個syn包(syn=y),即syn+ack包,此時伺服器進入syn_recv狀態;
第三次握手:客戶端收到伺服器的syn+ack包,向伺服器傳送確認包ack(ack=y+1),此包傳送完畢,客戶端和伺服器進入establish狀態,完成三次握手。
握手過程中傳送的包不包含資料,三次握手完畢後,客戶端與伺服器才正式開始傳送資料。理想狀態下,tcp連線一旦建立,在通訊雙方中任何一方主動關閉連線之前,tcp連線都將被一直保持下去。
確認號:其數值等於傳送方的傳送序號+1(即接收方期望接收的下乙個序號)。
四次揮手:
第一次揮手:主動關閉方傳送乙個fin,用來關閉主動方到被動關閉方的資料傳送,也就是主動關閉方告訴被動關閉方:我已經不會再給你發資料了(當然,在fin包之前傳送出去的資料,如果沒有收到對應的ack確認報文,主動關閉方依然會重發這些資料),但是,此時主動關閉方還可以接受資料。
第二次揮手:被動關閉方收到fin包後,傳送乙個ack給對方,確認序號為收到序號+1(與syn相同,乙個fin占用乙個序號)。
第三次揮手:被動關閉方傳送乙個fin,用來關閉被動關閉方到主動關閉方的資料傳送,也就是告訴主動關閉方,我的資料也傳送完了,不會再給你發資料了。
第四次揮手:主動關閉方收到fin後,傳送乙個ack給被動關閉方,確認序號為收到序號+1,至此,完成四次揮手。
tcp是什麼?
transmission control protocol 傳輸控制協議,是一種面向連線的、可靠的、基於位元組流的傳輸層協議,
通俗的來講,tcp就是乙個雙方通訊的乙個規範標準。
為什麼要進行tcp三次握手?
第一,為了確認雙方的接受與傳送能力是否正常,
第二,指定自己的初始化序列號,為後面的可靠傳輸做準備,
第三,如果是http協議的話,三次握手這個過程,還會進行數字證書的驗證及加密金鑰的生成。
tcp的出現正是彌補了udp不可靠傳輸的缺點,但是tcp的誕生,也必然增加了連線的複雜性。
tcp 四次揮手 TCP的三次握手和四次揮手
三次握手 第一次握手 客戶端傳送syn包 syn x 到伺服器,並進入syn send狀態,等待伺服器確認 第二次握手 伺服器收到syn包,必須確認客戶的syn ack x 1 同時自己也傳送乙個syn包 syn y 即syn ack包,此時伺服器進入syn recv狀態 第三次握手 客戶端收到伺服...
TCP三次握手和四次揮手
一 tcp三次握手 three way handshake 1 tcp三次握手的作用 三次握手的目的是連線伺服器指定埠,建立tcp連線,並同步連線雙方的序列號和確認號並交換 tcp 視窗大小資訊。在socket程式設計中,客戶端執行connect 時,將觸發三次握手。2 tcp三次握手過程 第一步 ...
TCP三次握手和四次揮手
三次握手 四次揮手 需四次揮手原因 由於tcp的半關閉特性,tcp連線時雙全工 即資料在兩個方向上能同時傳遞 因此,每個方向必須單獨的進行關閉。這個原則就是 當一方完成它的資料傳送任務後就能傳送乙個fin來終止這個方向上的連線。當一端收到乙個fin後,它必須通知應用層另一端已經終止了那個方向的資料傳...