瀏覽器從輸入url到顯示html頁面經歷了什麼

2021-10-24 07:09:57 字數 1443 閱讀 6558

在瀏覽器輸入url之後,瀏覽器首先會判斷在位址列中輸入的資訊到底是url還是關鍵字

如果是關鍵字,那麼瀏覽器會使用預設的搜尋引擎搜尋關鍵字,這和直接訪問url的請求、響應過程一致,

如果是url,那麼瀏覽器則會準備開始進行下一步:判斷時候訪問dns

dns(網域名稱伺服器),瀏覽器在之前url的基礎上判斷,該位址是否含有網域名稱

如果有,則訪問網域名稱伺服器,網域名稱伺服器中存放了各個網域名稱對應的ip位址,瀏覽器在發出帶有網域名稱的請求後會收到帶有ip的響應,在拿到ip位址之後,瀏覽器傳送請求報文

瀏覽器把位址資訊封裝成請求報文包括請求行、請求頭、請求體(簡單理解相當於xmlhttprequest裡面的open()/setheader()/send()方法分別設定了請求行、頭、體),接下來請求報文將經由傳輸層

瀏覽器傳送的請求報文由應用層到達了傳輸層,將埠、標誌資料等封裝到報文上然後交由網路層,網路層再次封裝並新增資料,最後資料鏈路層新增mac資訊等完成封裝、準備傳輸

!:這部分由於了解的不多,僅作參考

封裝完畢的資料通過『網線』傳輸,其中路由器扮演了重要的角色,路由器中的路由表幫助請求能準確的找到服務端,如果乙個路由器在路由表中找不到和請求報文中ip位址相同的內容,則讓報文通行至上一層路由器,上一層以此類推,這樣就找到了對應的ip位址,接收方接收請求報文,並沿著資料鏈路層–網路層–傳輸層–應用層的順序將報文的其他資訊撥開,準確的把資訊傳送給對應ip、埠的服務端

服務端接受到請求後返回響應,把對應的html頁面通過http、ftp等指定好了的協議封裝,接下來和傳送請求報文類似,設定響應行、響應頭、響應體並將其封裝、傳輸給傳送請求的瀏覽器

瀏覽器收到響應報文後進行解析,解析方式遵守指定的規則(http、ftp等),這樣瀏覽器就得到了乙個html頁面,接下來進行渲染、顯示

瀏覽器得到html檔案後,瀏覽器在主線程先對html進行解析,在html解析過程中,如果遇到script標籤,則先解釋js**,因為如果跳過js直接解釋html的話,後續js對dom樹的操作會導致dom樹變化,不利於提高效率,在解釋完html檔案後,瀏覽器就生成了dom樹,然後瀏覽器開始解析樣式,生成樣式表,有了節點元素和樣式,瀏覽器就會生成layout樹,隨後確定繪畫順序,最終在主線程完成layer樹,這時,合成器執行緒會拿著layer樹和繪製順序表分圖層》圖塊,將圖塊交給柵格執行緒柵格化,柵格化之後,合成器執行緒會拿到處理好的圖塊資訊並交由gpu渲染、最後顯示在螢幕上

主線程主要負責dom樹、style表、layout樹、layer樹、繪製順序表的生成,但是它也負責js的執行,因此動畫在繪製每幀動畫的時候,可能會發生js和動畫繪製搶占資源的情況從而造成卡頓,因此不提倡過多的讓頁面重構、重繪,這些會占用主線程資源

從輸入url到瀏覽器載入過程

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

從輸入 URL 到瀏覽器渲染完成

首先,判斷是不是https的,如果是,則https其實是http ssl tls 兩部分組成,也就是在http上又加了一層處理加密資訊的模組。服務端和客戶端的資訊傳輸都會通過tls進行加密,所以傳輸的資料都是加密後的資料。進行三次握手,建立tcp連線。第一次握手 建立連線。客戶端傳送連線請求報文段,...

從URL輸入瀏覽器到頁面顯示全過程

第一步 網域名稱解析,將網域名稱解析成對應ip。按先後順序檢視 1.瀏覽器快取。2.本機的host檔案。linux etc hosts 3.路由器快取。4.本地dns伺服器,遞迴查詢對應ip。本地網域名稱伺服器就以dns客戶的身份,向其他根網域名稱伺服器繼續發出查詢請求報文,而不是讓該主機自己進行下...