目的:消除舊有連線請求的syn訊息對新連線的干擾,同步連線雙方的序列號和確認號並交換tcp 視窗大小資訊。
(1)第一次握手:client將標誌位syn置為1,隨機產生乙個值seq=j,並將該資料報傳送給server,client進入syn_sent狀態,等待server確認。
(2)第二次握手:server收到資料報後由標誌位syn=1知道client請求建立連線,server將標誌位syn和ack都置為1,ack=j+1,隨機產生乙個值seq=k,並將該資料報傳送給client以確認連線請求,server進入syn_rcvd狀態。
(3)第三次握手:client收到確認後,檢查ack是否為j+1,ack是否為1,如果正確則將標誌位ack置為1,ack=k+1,並將該資料報傳送給server,server檢查ack是否為k+1,ack是否為1,如果正確則連線建立成功,client和server進入established狀態,完成三次握手,隨後client與server之間可以開始傳輸資料了。
由於tcp連線時全雙工的,因此,每個方向都必須要單獨進行關閉,這一原則是當一方完成資料傳送任務後,傳送乙個fin來終止這一方向的連線,收到乙個fin只是意味著這一方向上沒有資料流動了,即不會再收到資料了,但是在這個tcp連線上仍然能夠傳送資料,直到這一方向也傳送了fin。首先進行關閉的一方將執行主動關閉,而另一方則執行被動關閉。
(1)第一次揮手:client傳送乙個fin,用來關閉client到server的資料傳送,client進入fin_wait_1狀態。
(2)第二次揮手:server收到fin後,傳送乙個ack給client,確認序號為收到序號+1(與syn相同,乙個fin占用乙個序號),server進入close_wait狀態。
(3)第三次揮手:server傳送乙個fin,用來關閉server到client的資料傳送,server進入last_ack狀態。
(4)第四次揮手:client收到fin後,client進入time_wait狀態,接著傳送乙個ack給server,確認序號為收到序號+1,server進入closed狀態,完成四次揮手。
(1)序號:seq序號,佔32位,用來標識從tcp源端向目的端傳送的位元組流,發起方傳送資料時對此進行標記。
(2)確認序號:ack序號,佔32位,只有ack標誌位為1時,確認序號欄位才有效,ack=seq+1。
(3)標誌位:共6個,即urg、ack、psh、rst、syn、fin等,具體含義如下:
(a)urg:緊急指標(urgent pointer)有效。
(b)ack:確認序號有效。
(c)psh:接收方應該盡快將這個報文交給應用層。
(d)rst:重置連線。
(e)syn:發起乙個新連線。
(f)fin:釋放乙個連線。
(1)序號:seq序號,用來標識從tcp源端向目的端傳送的位元組流,發起方傳送資料時對此進行標記。
(2)確認序號:ack序號,佔32位,只有ack標誌位為1時,確認序號欄位才有效,ack=seq+1。
(3)標誌位:
(a)urg:緊急指標(urgent pointer)有效。 (b)ack:確認序號有效。 (c)psh:接收方應該盡快將這個報文交給應用層。 (d)rst:重置連線。
(e)syn:發起乙個新連線。 (f)fin:釋放乙個連線。
TCP三次握手和四次揮
一 tcp報文格式 在了解三次握手和四次揮手之前,首先要知道tcp報文內部包含了哪些東西。報文主要段的含義 序號 seq 用來標記資料段的順序,確保tcp傳輸有序。ack 確認 確認序號標誌,ack 1表示確認號字段有效,ack 0表示確認序號無效。syn 同步 連線請求序號標誌,用於建立連線。sy...
三次握手和四次揮手 TCP三次握手和四次揮手的理解
相比較於udp傳輸協議,tcp傳輸協議被認為是安全可靠的,這是由於tcp協議的三次握手和四次揮手保證了資料傳輸的安全性。tcp報文格式簡介 要了解tcp協議的三次握手和四次揮手,需要先了解在tcp協議中請求和響應的資料報報文格式。在報文中有幾個值得注意的字段 1 序號 seq序號,佔32位,用來標識...
HTTP協議簡介及TCP三次握手和四次揮手
一 tcp ip協議介紹 tcp ip協議是分層的,從底層至應用層分別為 物理層,鏈路層,網路層,傳輸層和應用層 從應用層至物理層,資料是一層層封裝,封裝的方式一般都是在原有的資料的前面加乙個資料控制頭,資料封裝格式如下 其中,對於tcp傳輸協議,客戶端在與伺服器建立連線前需要經過三次握手,過程如下...