瀏覽器輸入URL按下enter發生了什麼

2021-09-10 05:50:54 字數 2103 閱讀 2283

輸入url並按下enter;

瀏覽器查詢當前url是否存在快取,並比較快取是否過期;

dns解析url對應的ip;

根據ip建立tcp連線(三次握手);

http發起請求;

伺服器處理請求,瀏覽器接收http響應;

渲染頁面,構建dom樹;

關閉tcp連線(四次揮手);

url由三部分組成:協議//網域名稱:埠號(預設80埠省略)除此之外url還包含一些路徑、查詢和其他片段;

如預設埠80,https預設埠443(擴充套件:同源策略,跨域問題);

http快取有多種規則,根據是否向伺服器發起請求,分為強制快取和對比快取(暫定);

強制快取:判斷http首部字段:cache-control , expires

expires : 是乙個絕對時間,即伺服器時間,瀏覽器檢查當前時間,若還未到失效時間就直接使用快取檔案。該方法存在乙個問題:伺服器時間可能與客戶端時間不一致。因此該欄位已經很少使用;

對比快取:通過http的last-modified,etag欄位進行判斷

last-modified : 是第一次請求資源時,伺服器返回的字段,表示最後一次更新的時間,下一次瀏覽器請求資源時就傳送if-modified-since欄位。伺服器用本地的last-modified時間與if-modified-since時間比較,若不一致則認為快取已過期並返回新資源給瀏覽器;若一致則傳送304狀態碼,讓瀏覽器繼續使用快取;

etag : 資源的實體標識(雜湊字串),當資源內容更新時,etag會改變。伺服器會判斷etag是否是否變化,若變化則返回新資源,否則返回304;

網域名稱只是與ip位址的乙個對映。網域名稱解析的過程就是將網域名稱還原為ip位址的過程。

若沒找到則會查詢本地dns解析,若查詢到則返回;

若還是沒找到就會查詢本地dns伺服器,若查詢到則返回;

最後迭代查詢,按照根域伺服器 -> 頂級域.cn -> 第二層域,hb.cn -> 子域,www.hb.cn的順序找到ip位址

再通過第一步的dns網域名稱解析夠獲得了伺服器的ip位址,在獲取到ip位址後,就開始建立第一次連線,這是由tcp協議完成的,主要通過三次握手進行連線

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

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

狀態碼:

1xx:指示資訊——表示資訊已接收,繼續處理

2xx:成功——表示請求已被成功接收、理解接受;

3xx:重定向——要完成請求必須進行進一步的操作;

4xx:客戶端錯誤——請求有語法錯誤或請求無法實現;

5xx:伺服器端錯誤——伺服器未能實現合法的請求;

響應頭主要由cache-control、connection、data、pragma等組成;

響應體是伺服器返回給瀏覽器的資訊,主要由html,js,css,檔案組成;

(1) 瀏覽器將響應的內容進行解析渲染呈現給使用者。整個過程設計兩個方面:解析和渲染。在渲染頁面之前,需要構建dom樹和cssom樹;

(2)在瀏覽器還未接收到完整的html檔案時,他就開始渲染頁面了,在遇到外部鏈入的指令碼標籤或樣式標籤或,瀏覽器會再次傳送http請求重複上述的步驟,在收到css檔案後會對已經渲染的頁面重新渲染,加入應有的樣式,檔案載入完會立即顯示在相應的位置。在這一過程中可能會觸發頁面的重繪(repaint)或重排(reflow);

(3) 所以說重排的成本比重繪的成本高得多,dom樹的每個節點都會有reflow方法,乙個節點的reflow很可能會導致子節點,甚至是父節點,同胞節點的reflow;

(4)下面這些動作很大可能會是成本比較高的

由於tcp連線是全雙工的,因此每個方向都需要單獨進行關閉,原則是當一方完成資料傳送任務後,就能夠傳送乙個fin來終止這個方向的連線,收到乙個fin只意味著這一方向上沒有資料流動,乙個tcp連線在收到乙個fin時仍能夠傳送資料,首先執行關閉的一方將執行主動關閉,而另一方將執行被動關閉;

瀏覽器輸入URL按回車背後的經歷

當我們在瀏覽器的位址列輸入 www.cnblogs.com 然後回車,回車到看到頁面到底發生了什麼呢?網域名稱解析 發起tcp的3次握手 建立tcp連線後發起http請求 伺服器響應http請求,瀏覽器得到html 瀏覽器解析html 並請求html 中的資源 如js css 等 瀏覽器對頁面進行渲...

瀏覽器輸入URL回車後

當我們想瀏覽某乙個網頁時,一般都會輸入對應的url,這個其實就是請求對應資源的過程。那麼這個過程實質上經歷了什麼呢?查詢ip 客戶端根據網域名稱查詢對應的ip 相互通訊 客戶端與資源伺服器通訊 斷開連線 客戶端與資源伺服器斷開連線 1.查詢ip 系統將網域名稱傳送至 ldns 本地網域名稱伺服器 查...

在瀏覽器輸入URL之後

2 tcp連線 3 http請求與響應 4 螢幕繪製 將好記的網域名稱 baidu taobao bilibili等 解析成ip,服務由dns伺服器完成,然後再此ip位址的主機上將乙個子目錄與網域名稱繫結 檢查瀏覽器快取中是否有輸入的網域名稱檢查本地系統快取 從hosts檔案查詢是否有該網域名稱和對...