HTTP三次握手四次揮手

2022-07-08 23:42:13 字數 2029 閱讀 8694

在tcp/ip協議中,tcp協議提供可靠的連線服務,採用三次握手建立乙個連線。

第一次握手:建立連線時,客戶端傳送syn包(syn=1)到伺服器,並進入syn_send狀態,等待伺服器確認;

第二次握手:伺服器收到syn包,必須確認客戶的syn(ack=j+1),同時自己也傳送乙個syn包(syn=k),即syn+ack包,此時伺服器進入syn_recv狀態;

第三次握手:客戶端收到伺服器的syn_ack包,向伺服器傳送確認包ack(ack=k+1),此包傳送完畢,客戶端和伺服器進入established狀態,完成三次握手,客戶端與伺服器開始傳送資料。

四次揮手:

tcp協議是一種面向連線的、可靠的、基於位元組流的運輸層通訊協議。tcp是全雙工 模式,這就意味著,當主機1發出fin報文段時,只是表示主機1已經沒有資料要傳送了,主機1告訴主機2, 它的資料已經全部傳送完畢了;但是,這個時候主機1還是可以接受來自主機2的資料;當主機2返回ack報文 段時,表示它已經知道主機1沒有資料傳送了,但是主機2還是可以傳送資料到主機1的;當主機2也傳送了fin 報文段時,這個時候就表示主機2也沒有資料要傳送了,就會告訴主機1,我也沒有資料要傳送了,之後彼此 就會愉快的中斷這次tcp連線。如果要正確的理解四次揮手的原理,就需要了解四次揮手過程中的狀態變化。

ack : tcp協議規定,只有ack=1時有效,也規定連線建立後所有傳送的報文的ack必須為1。

fin (finis)即完,終結的意思, 用來釋放乙個連線。當 fin = 1 時,表明此報文段的傳送方的資料已經傳送完畢,並要求釋放連線。

傳送序列號:sequence number

確認序列號:acknowledgment number

fin_wait_1:表示等待對方的fin報文。當socket在established狀態時,它想主動關閉連線,向對方傳送了fin報文,此時該socket進入到fin_wait_1 狀態

fin_wait_2:也表示等待對方的fin報文。fin_wait_2狀態下的socket,表示半連線,也即有一方要求close連線,但另外還告訴對方,我暫時還有點資料需要傳送給你,稍後再關閉連線。

close_wait: 這種狀態的含義其實是表示在等待關閉。你回覆乙個ack給對方,並進入close_wait狀態。接下來就是檢視你是否還有資料要傳送給對方,如果沒有,就可以close這個socket,並傳送fin給對方,即關閉連線。

closing:表示主機1給主機2傳送fin後,並沒有收到主機2回應的ack,而收到了主機2傳送的fin。表示雙方同時close乙個socket,出現同時傳送fin現象。

last_ack: 傳送fin報文後,等待對方的ack報文,當收到ack報文後,進入到closed狀態。

time_wait: 表示收到了對方的fin報文,並傳送出了ack確認,等2msl後即可回到closed可用狀態了。如果fin_wait_1狀態下,收到了對方同時帶fin標誌和ack標誌的報文時,可以直接進入到time_wait狀態。

簡約圖如下:

第一次揮手:主機1向主機2,傳送fin報文段,表示關閉資料傳送,並主機1進入fin_wait_1狀態,表示沒有資料要傳輸了

第二次揮手:主機2收到fin報文段後進入close_wait狀態(被動關閉),然後傳送ack確認,表示同意你關閉請求了,主機到主機的資料鏈路關閉,主機進入fin_wait_2狀態

第三次揮手:主機2等待主機1傳送完資料,傳送fin到主機1請求關閉,主機2進入last_ack狀態

第四次揮手:主機1收到主機2傳送的fin後,回覆ack確認到主機2,主機1進入time_wait狀態。主機2收到主機1的ack後就關閉連線了,狀態為closed。主機1等待2msl,仍然沒有收到主機2的回覆,說明主機2已經正常關閉了,主機1關閉連線。

http三次握手 HTTP三次握手,四次揮手。

三次握手 首先解析伺服器dns,找到ip,然後開始建立連線 1.第一次握手 建立連線,客戶端a傳送syn 1 隨機產生seq client isn的資料報到伺服器b,等待伺服器確認。2.第二次握手 伺服器b收到請求後確認聯機 可以接受資料 發起第二次握手請求,ack a的seq 1 syn 1,隨機...

http三次握手,四次揮手

本文經過借鑑書籍資料 他人部落格總結出的知識點,歡迎提問 序列號seq 佔4個位元組,用來標記資料段的順序,tcp把連線中傳送的所有資料位元組都編上乙個序號,第乙個位元組的編號由本地隨機產生 給位元組編上序號後,就給每乙個報文段指派乙個序號 序列號seq就是這個報文段中的第乙個位元組的資料編號。確認...

HTTP三次握手四次揮手

一 瀏覽器渲染流程 tcp 建立連線 tcp三次握手 傳送http請求 伺服器處理並響應報文 瀏覽器解析並渲染頁面 斷開連線 tcp 結束連線 二 http之tcp三次握手與四次揮手詳解 三次握手 three way handshake 是指建立乙個 tcp 連線時,需要客戶端和伺服器總共傳送3個包...