一 瀏覽器渲染流程:
tcp 建立連線:tcp三次握手
傳送http請求
伺服器處理並響應報文
瀏覽器解析並渲染頁面
斷開連線:tcp 結束連線
二 http之tcp三次握手與四次揮手詳解:
三次握手(three-way handshake),是指建立乙個 tcp 連線時,需要客戶端和伺服器總共傳送3個包。
第一次握手([syn], seq = x):客戶端傳送乙個syn標記的包,seq初始序列號x,傳送完成後客戶端進入syn_send狀態。
第二次握手([syn,ack], seq = y, ack = x + 1):伺服器返回確認包(ack)應答,同時還要傳送乙個syn包回去。ack = x + 1,表示確認收到(客戶端發來的seq值 + 1),seq = y, 表示讓客戶端確認是否能收到。傳送完成後服務端進入syn_rcvd狀態。
第三次握手([ack], ack = y + 1):客戶端再次傳送確認包(ack),ack = y + 1, 表示確認收到伺服器的包(服務端發來的seq值 + 1)。客戶端傳送完畢後,進入established狀態,服務端接收到這個包,也進入established狀態, tcp握手結束。
tcp連線的斷開需要傳送四個包,所以稱為四次揮手。
第一次揮手([fin], seq = x):客戶端傳送乙個fin標記的包,告訴伺服器需要關閉連線,表示自己不用傳送資料了,但是還可以接收資料。傳送完成後,客戶端進入fin_wait_1狀態。
第二次揮手 ([ack], ack = x + 1):服務端傳送乙個ack的確認包,告訴客戶端接收到關閉的請求,但是還沒有準備好。傳送完成後,服務端進入close_wait狀態,客戶端收到這個包後,進入fin_wait_2,等待伺服器關閉連線。
第三次揮手 ([fin], seq = y):服務端準備好關閉連線時,傳送fin標記的包,告訴客戶端準備關閉了。傳送完成後,服務端進入last_ack狀態,等待客戶端確認。
第四次揮手 ([ack], ack = y + 1):客戶端接收到服務端的關閉請求,再傳送ack標記的確認包,進入time_wait狀態,等待服務端可能請求重傳的ack包。服務端接收到ack包後,關閉連線,進入closed狀態。客戶端在等待固定時間(兩個最大段生命週期)後,沒有接收到服務的ack包,認為伺服器已關閉連線,自己也關閉連線,進入closed狀態。
三 http三次握手與四次揮手動態圖:
序號(sequence number):seq序號,佔32位,用來標識從tcp源端向目的端傳送的位元組流,傳送自己的資料。
確認號(acknowledgement number):ack序號,佔32位,只有ack標誌位為1時,確認序號欄位才有效,ack=seq+1。(傳送接收到的對方的資料)
標誌位(flags):共6個,即urg、ack、psh、rst、syn、fin等。具體含義如下:
三 http中get與post區別:get與post理解
get引數通過url傳遞,post放在request body中;所以get比post更不安全,因為引數直接暴露在url上,所以不能用來傳遞敏感資訊。
get請求只能進行url編碼,而post支援多種編碼方式。且get傳遞引數長度是有限制的,而post沒有。對引數的資料型別,get只接受ascii字元,而post沒有限制。
get請求引數會被完整保留在瀏覽器歷史記錄裡,而post中的引數不會被保留。
重要區別:get產生乙個tcp資料報;post產生兩個tcp資料報。
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 ip協議中,tcp協議提供可靠的連線服務,採用三次握手建立乙個連線。第一次握手 建立連線時,客戶端傳送syn包 syn 1 到伺服器,並進入syn send狀態,等待伺服器確認 第二次握手 伺服器收到syn包,必須確認客戶的syn ack j 1 同時自己也傳送乙個syn包 syn k 即...