學習http協議的三次握手和四次揮手 筆記

2022-08-27 02:39:12 字數 1369 閱讀 6678

http協議是基於tcp協議的  所以應該說是tcp協議的三次握手和四次揮手

syn:請求建立連線,並在其序列號的字段進行序列號的初始值設定。建立連線,設定為1

fin:用來釋放乙個連線。fin=1表示:此報文段的傳送方的資料已經傳送完畢,並要求釋放運輸連線

序列號seq:佔4個位元組,用來標記資料段的順序,tcp把連線中傳送的所有資料位元組都編上乙個序號,第乙個位元組的編號由本地隨機產生;給位元組編上序號後,就給每乙個報文段指派乙個序號;序列號seq就是這個報文段中的第乙個位元組的資料編號。

三次握手:

客戶端a向伺服器傳送報文段,報文段攜帶syn=1碼和初始序列號seq=x(客戶端隨機生成的), 告訴伺服器我想建立連線

伺服器收到報文,因syn=1知道客戶端a是想建立連線,傳送報文段給客戶端a,報文攜段帶 syn=1,ack=seq(客戶端a傳送的seq)+1,和序列號seq=x(伺服器隨機生成的),告訴客戶端可以建立連線

客戶端a收到伺服器的報文段後驗證ack碼,如果正確向伺服器傳送報文段,攜帶syn=1,ack=seq(伺服器傳送過來的序列號)+1,告訴伺服器建立連線開始、

四次揮手:

客戶端a向伺服器傳送報文段攜帶fin=1和seq=x(客戶端隨機生成的),告訴伺服器資料傳輸完畢請求關閉連線,

伺服器收到報文段因fin=1得知關閉連線請求,傳送客戶端a報文攜帶ack=seq(客戶端a傳送的seq)+1,和序列號seq=x(伺服器隨機生成的),告訴客戶端可以關閉與伺服器的單向連線,(這時候伺服器如果有資料客戶端依然要接收)

客戶端a(進入等待狀態)等待伺服器資料傳送完畢,伺服器資料傳輸完畢,伺服器會向客戶端傳送報文段攜帶ack=seq+1,和序列號seq=x,(這裡的序列號和ack和上一步資料一樣)告訴客戶端伺服器資料傳輸完畢,請請求關閉連線,進入等待狀態等待客戶端確認關閉連線。

客戶端a收到伺服器的關閉連線驗證ack碼,確認後傳送報文段攜帶ack=seq(伺服器傳送過來的序列號)+1和seq=客戶端a第一次傳送請求關閉連線時的seq+1,然後進入等待狀態,等待2msl的時間後關閉連線。

在說四次揮手時最後乙個步驟  客戶端等待2msl時間,是因為 如果伺服器如果沒有收到最後的   客戶端傳送確認伺服器關閉連線的報文段,伺服器會一直向客戶端傳送報文段(關閉伺服器連線請求),這個2msl時間是 報文存在的最大時間。

試想:如果 客戶端傳送確認伺服器關閉連線的報文段丟失,使得伺服器處於等待狀態的伺服器收不到客戶端已傳送的確認伺服器關閉連線的報文段,伺服器因超時重傳報文段,而 客戶端能在2msl時間內收到這個重傳的報文段,接著客戶端重傳一次確認關閉連線,重新啟動2msl計時器,最後a和b都進入到關閉連線狀態,若客戶端不等待一段時間,而是傳送完報文段後立即釋放連線,則無法收到伺服器重傳的報文段,所以不會再傳送一次確認報文段,則伺服器無法正常進入到關閉連線狀態。

Http協議三次握手和四次揮手

tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線 位碼即tcp標誌位,有6種標示 syn synchronous建立聯機 ack acknowledgement 確認 psh push傳送 fin finish結束 rst reset重置 urg urgent緊急...

Http協議三次握手和四次揮手

tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線 位碼即tcp標誌位,有6種標示 syn synchronous建立聯機 ack acknowledgement 確認 psh push傳送 fin finish結束 rst reset重置 urg urgent緊急...

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

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