syn表示建立連線,
fin表示關閉連線,
ack表示響應,
psh表示有
data資料傳輸,
rst表示連線重置
作用:
1、確認雙方的接受能力、傳送能力是否正常。
2、指定自己的初始化序列號,為後面的可靠傳送做準備。
3、如果是 https 協議的話,三次握手這個過程,還會進行數字證書的驗證以及加密金鑰的生成到。
流程:
剛開始客戶端處於 closed 的狀態,服務端處於 listen 狀態
第二次握手:伺服器收到客戶端的 syn 報文之後,會以自己的 syn 報文作為應答,並且也是指定了自己的初始化序列號 isn(s),同時會把客戶端的 isn + 1 作為 ack 的值,表示自己已經收到了客戶端的 syn,此時伺服器處於 syn_revd 的狀態。
第三次握手:客戶端收到 syn 報文之後,會傳送乙個 ack 報文,當然,也是一樣把伺服器的 isn + 1 作為 ack 的值,表示已經收到了服務端的 syn 報文,此時客戶端處於 establised 狀態。
伺服器收到 ack 報文之後,也處於 establised 狀態,此時,雙方以建立起了鏈結。
具體細節:
1 . (isn)是固定的嗎:
三次握手的乙個重要功能是客戶端和服務端交換isn(initial sequence number), 以便讓對方知道接下來接收資料的時候如何按序列號組裝資料。
如果isn是固定的,攻擊者很容易猜出後續的確認號,因此 isn 是動態生成的。
2 . 什麼是半連線佇列:
伺服器第一次收到客戶端的 syn 之後,就會處於 syn_rcvd 狀態,此時雙方還沒有完全建立其連線,伺服器會把此種狀態下請求連線放在乙個佇列裡,我們把這種佇列稱之為半連線佇列。當然還有乙個全連線佇列,就是已經完成三次握手,建立起連線的就會放在全連線佇列中。如果佇列滿了就有可能會出現丟包現象。
3 . 三次握手過程中可以攜帶資料嗎:
第一次、第二次握手不可以攜帶資料,而第三次握手是可以攜帶資料的。
假如第一次握手可以攜帶資料的話,如果有人要惡意攻擊伺服器,那他每次都在第一次握手中的 syn 報文中放入大量的資料,因為攻擊者根本就不理伺服器的接收、傳送能力是否正常.
第三次的話,此時客戶端已經處於 established 狀態,也就是說,對於客戶端來說,他已經建立起連線了,並且也已經知道伺服器的接收、傳送能力是正常的了,所以能攜帶資料頁沒啥毛病。
流程:
剛開始雙方都處於 establised 狀態,假如是客戶端先發起關閉請求
第一次揮手:客戶端傳送乙個 fin 報文,報文中會指定乙個序列號。此時客戶端處於closed_wait1狀態。
第二次握手:服務端收到 fin 之後,會傳送 ack 報文,且把客戶端的序列號值 + 1 作為 ack 報文的序列號值,表明已經收到客戶端的報文了,此時服務端處於 close_wait2狀態
第三次揮手:如果服務端也想斷開連線了,和客戶端的第一次揮手一樣,發給 fin 報文,且指定乙個序列號。此時服務端處於 last_ack 的狀態。
第四次揮手:客戶端收到 fin 之後,一樣傳送乙個 ack 報文作為應答,且把服務端的序列號值 + 1 作為自己 ack 報文的序列號值,此時客戶端處於 time_wait 狀態。需要過一陣子以確保服務端收到自己的 ack 報文之後才會進入 closed 狀態
服務端收到 ack 報文之後,就處於關閉連線了,處於 closed 狀態。
特別需要注意的就是time_wait這個狀態了,這個是面試的高頻考點,就是要理解,為什麼客戶端傳送 ack 之後不直接關閉,而是要等一陣子才關閉。這其中的原因就是,要確保伺服器是否已經收到了我們的 ack 報文,如果沒有收到的話,伺服器會重新發 fin 報文給客戶端,客戶端再次收到 fin 報文之後,就知道之前的 ack 報文丟失了,然後再次傳送 ack 報文。
至於 time_wait 持續的時間至少是乙個報文的來回時間。一般會設定乙個計時,如果過了這個計時沒有再次收到 fin 報文,則代表對方成功就是 ack 報文,此時處於 closed 狀態。
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...