一次完整tcp連線包含三個階段:請求連線、傳送資料、關閉連線。
客戶端client在與服務端server建立連線時,首先會傳送乙個建立連線的請求,如果存在這樣的情況,客戶端client傳送的請求報文因為網路原因在某個節點滯留了一段時間,但是請求連線的報文並沒有丟失,最後到該連線被釋放後才到達服務端server。服務端server會以為這是客戶端新的請求連線,於是會向客戶端傳送同意建立連線的報文,並建立連線。如果不用三次握手來建立連線,這時候server就與client建立了連線,等待client傳送資料,但是這個client連線請求是失效的請求,client不會向server傳送資料,server還在等待client傳送資料,這樣就會造成server的資源被白白的浪費掉。三次握手就是為了避免這種情況的發生,如果client不再次向server發出確認連線報文,server就不用建立連線,從而不會浪費server的資源。
第一次握手:建立連線時,客戶端傳送syn包(syn=j)到伺服器,並進入syn_sent狀態,等待伺服器確認;syn:同步序列編號(synchronize sequence numbers)。
第二次握手:伺服器收到syn包,必須確認客戶的syn(ack=j+1),同時自己也傳送乙個syn包(syn=k),即syn+ack包,此時伺服器進入syn_recv狀態;
第三次握手:客戶端收到伺服器的syn+ack包,向伺服器傳送確認包ack(ack=k+1),此包傳送完畢,客戶端和伺服器進入established(tcp連線成功)狀態,完成三次握手。
四次揮手,別名連線終止協議。其性質為終止協議。
由於tcp連線是全雙工的,因此每個方向都必須單獨進行關閉。這原則是當一方完成它的資料傳送任務後就能傳送乙個fin來終止這個方向的連線。收到乙個 fin只意味著這一方向上沒有資料流動,乙個tcp連線在收到乙個fin後仍能傳送資料。首先進行關閉的一方將執行主動關閉,而另一方執行被動關閉。
第一次揮手:tcp客戶端傳送乙個fin,用來關閉客戶到伺服器的資料傳送。(此時客戶端關閉,不再傳送資料,可以接收資料)
第二次揮手:伺服器收到這個fin,它發回乙個ack,確認序號為收到的序號加1。和syn一樣,乙個fin將占用乙個序號。(此時服務端收到客戶端關閉資訊,仍然可以向客戶端傳送資料)
第三次揮手:伺服器關閉客戶端的連線,傳送乙個fin給客戶端。(服務端關閉,不再傳送資料)
第四次揮手:客戶端發回ack報文確認,並將確認序號設定為收到序號加1。(客戶端收到服務端關閉資訊)
三次握手:
a:「喂,能聽到我講話嗎?」
b:「能聽到你講話。你能聽到我講話嗎?」
a:「能聽到你講話。」
連線建立,傳送資料。
四次揮手:
a:「喂,我的話講完了,我不說話了。」
b:「好的,收到。我還沒說完,你聽我繼續說......」
b:「我也說完了,我也不說了。」
a:「好的,收到。」
關閉連線。
TCP三次握手與四次揮手協議
tcp 在不可靠的網路通道傳進行可靠的訊息傳輸 1 tcp首部資訊 2 三次握手 syn synchronrous 同步訊息序列,發起乙個新的連線 tcp三次握手過程中,攜帶syn 同步序號 seq 訊息序號 rwd 視窗大小 1 urg 緊急指標 urgent pointer 有效。2 ack 確...
TCP協議三次握手與四次揮手
其實該過程就像一次打 前去拜訪 1 客戶端 喂?伺服器麼,我今天要去拜訪你。syn 1 seq x 2 伺服器 哦,好的,我去門口接你。syn 1 ack 1 seq y ack x 1 3 客戶端 我到了,你真客氣,我要進來了。ack 1 seq x 1 ack y 1 客戶端主動開啟,伺服器被動...
TCP協議,三次握手與四次揮手
tcp報文格式 每行簡介 1.源埠和目的埠各佔2個位元組,即16位。2.32位序號,佔4個位元組,tcp連線中傳送的位元組流中每個位元組都按順序編號。例如,一段報文的序號字段值是 301 而攜帶的資料共有100欄位,顯然下乙個報文段 如果還有的話 的資料序號應該從401開始。3.32位確認序號。是期...