從輸入URL到看到頁面發生的全過程

2021-10-03 23:02:47 字數 1732 閱讀 2904

瀏覽器首先查詢當前url是否有快取,有的話,再查詢是否過期,沒過期則讀快取.過期了則訪問web伺服器.

1.客戶端傳送乙個syn包:即帶有 syn=1,seq=x 的資料報到伺服器端口,並進入syn_sent狀態,等待伺服器確認;(第一次握手,由瀏覽器發起,告訴伺服器我要傳送請求了)

2.伺服器收到syn包,必須確認客戶的syn,同時發回乙個帶 syn=1, ack=x+1, seq=y 的響應包以示傳達確認資訊,即syn+ack包,此時伺服器進入syn_recv狀態;(第二次握手,由伺服器發起,告訴瀏覽器我準備接受了,你趕緊傳送吧)

3.客戶端收到伺服器的syn+ack包,向伺服器傳送確認包ack,即回傳乙個帶 ack=y+1, seq=z 的資料報,代表「握手結束」(第三次握手,由瀏覽器傳送,告訴伺服器,我馬上就發了,準備接受吧)

「三次握手」的目的是「為了防止已失效的連線請求報文段突然又傳送到了服務端,因而產生錯誤」。

完整的http請求包含請求起始行、請求頭部、請求主體三部分。

伺服器在收到瀏覽器傳送的http請求之後,會將收到的http報文封裝成http的request物件,並通過不同的web伺服器進行處理,處理完的結果以http的response物件返回,主要包括狀態碼,響應頭,響應報文三個部分。

1.解析html,構建dom樹

2.解析css,生成css規則樹

3.合併dom樹和css規則,生成render樹

4.布局render樹(layout/reflow),負責各元素尺寸、位置的計算

5. 繪製render樹(paint),繪製頁面畫素資訊

6.瀏覽器會將各層的資訊傳送給gpu,gpu會將各層合成(composite),顯示在螢幕上

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狀態,完成四次揮手。(第四次揮手:由瀏覽器發起,告訴伺服器,我響應報文接受完了,我準備關閉了,你也準備吧)

使用者從輸入URL到看到網頁發生了什麼?

一 在瀏覽器位址列輸入url 二 瀏覽器檢視快取 1 如果資源未快取,發起新請求 如果已快取,檢驗是否處於有效期,資源處於有效期內直接提供給客戶端,否則與伺服器進行驗證。2 檢驗有效期通常有兩個http頭進行控制expires和cache control 1 http1.0提供expires,值為乙...

從輸入URL到頁面載入,發生了什麼

整理之前的筆記時,發現之前的掌握的東西尚差的太遠,就仔細查詢了這個問題。總體來說,可以分為一下幾個部分 1.dns解析 2.tcp連線 3.傳送http請求 4.伺服器處理請求並返回http報文 5.瀏覽器解析渲染頁面 6.連線結束 dns解析是將網域名稱轉換成ip的過程,從使用者在瀏覽器位址列輸入...

從輸入URL到頁面載入發生了什麼

最近在進行前端面試方面的一些準備,看了網上許多相關的文章,發現有乙個問題始終繞不開 在瀏覽器中輸入url到整個頁面顯示在使用者面前時這個過程中到底發生了什麼。仔細思考這個問題,發現確實很深,這個過程涉及到的東西很多。這個問題的回答真的能夠很好的考驗乙個web工程師的水平,於是我自問自答一番。總體來說...