在瀏覽器位址列輸入url之後發生了什麼?eg:www.baidu.com
https:由於安全隱患,會使用 hsts 強制客戶端使用 https 訪問頁面。
其它操作:瀏覽器還會進行一些額外的操作,比如安全檢查、訪問限制(之前國產瀏覽器限制 996.icu)。
先查詢瀏覽器快取(即瀏覽器裡的書籤和歷史記錄),如果有就直接推給你
查詢系統快取(即本地hosts檔案),如果hosts檔案中有指定ip就解析這個ip位址
查詢本地dns伺服器。本地dns伺服器會先查詢快取,如果快取中存在就返回ip,如果沒有本地dns就向根dns伺服器發起請求。
根dns伺服器不會儲存網域名稱和ip的對應關係,而是告訴本地dns可以去.com域伺服器上查詢,而且會給.com出域伺服器的位址。
域伺服器上同樣也不會儲存網域名稱和ip的對應關係,而是告訴本地dns可以去網域名稱解析伺服器上查詢,會給出網域名稱解析伺服器的位址。
最後,本地dns想網域名稱解析伺服器發起請求,最終就會得到該網域名稱對應的ip位址。本地dns在獲取到ip位址之後,不光會返回到瀏覽器裡,還會儲存在快取中,下次就可以直接在快取中讀取。
擴充套件:dns劫持
三次握手建立鏈結,即客戶端傳送鏈結請求,服務端收到請求後返回給客戶端,最後客戶端在回傳乙個資料給服務端。三次握手之所以要鏈結三次,就是為了保證客戶端和服務端既能保證自己能正常傳送訊息,又能確保對方能正常收到資訊。
如圖所示:
客戶端傳送乙個帶有syn標誌的資料報給服務端,服務端收到後,回傳乙個帶有syn/ack標誌的資料報以示傳達確認資訊,最後客戶端再回傳乙個帶ack標誌的資料報,代表握手結束,連線成功。
通俗點理解三次握手:
服務端:好的,同意了
客戶端:好嘞
建立tcp連線之後,發起http請求,請求一般分為三部分
請求方法uri協議/版本
請求頭(request header)
請求正文
下面是完整的請求示意圖:
擴充套件:https請求
伺服器端收到請求後的由web伺服器(準確說應該是http伺服器)處理請求,諸如apache、ngnix、iis等。web伺服器解析使用者請求,知道了需要排程哪些資源檔案,再通過相應的這些資源檔案處理使用者請求和引數,並呼叫資料庫資訊,最後將結果通過web伺服器返回給瀏覽器客戶端。
如圖所示:
為了避免伺服器與客戶端雙方的資源占用和損耗,當雙方沒有請求或響應傳遞時,任意一方都可以發起關閉請求。與建立tcp連線的3次握手類似,關閉tcp連線,需要4次握手。
通俗點理解四次握手:
服務端:好的,接收到了,我看看我這邊還有沒有要傳的
服務端:我這邊也沒有了,關閉吧
客戶端:好嘞
對於獲取到的html、css、js、等等資源。
瀏覽器通過解析html,生成dom樹,解析css,生成css規則樹,然後通過dom樹和css規則樹生成渲染樹。渲染樹與dom樹不同,渲染樹中並沒有head、display為none等不必顯示的節點。
在解析css的同時,可以繼續載入解析html,但在解析執行js指令碼時,會停止解析後續html,這就會出現阻塞問題,關於js阻塞相關問題,這裡不過多闡述。
根據渲染樹布局,計算css樣式,即每個節點在頁面中的大小和位置等幾何資訊。
html預設是流式布局的,css和js會打破這種布局,改變dom的外觀樣式以及大小和位置。這時就要提到兩個重要概念:repaint和reflow。
repaint:螢幕的一部分重畫,不影響整體布局,比如某個css的背景色變了,但元素的幾何尺寸和位置不變。
eflow: 意味著元件的幾何尺寸變了,我們需要重新驗證並計算渲染樹。是渲染樹的一部分或全部發生了變化。這就是reflow,或是layout。
有些情況下,比如修改了元素的樣式,瀏覽器並不會立刻 reflow 或 repaint 一次,而是會把這樣的操作積攢一批,然後做一次 reflow,這又叫非同步 reflow 或增量非同步 reflow。
有些情況下,比如 resize 視窗,改變了頁面預設的字型等。對於這些操作,瀏覽器會馬上進行 reflow。
此答案參考文章:
瀏覽器位址列輸入url到頁面顯示
1 瀏覽器通過dns網域名稱解析到ip位址 2 瀏覽器通過tcp協議建立到伺服器的tcp連線 tcp三次握手 3 客戶端 瀏覽器 向web伺服器端傳送http協議包,請求伺服器裡的資源文件 4 伺服器向客戶端傳送http協議應答包 5 客戶端和伺服器斷開連線 tcp四次揮手 客戶端開始解析處理htm...
在瀏覽器位址列輸入url,會發生哪些流程
1 dns解析 瀏覽器向dns伺服器請求解析該url中的網域名稱所對應的ip位址,解析出ip位址後,根據ip位址和預設埠,和伺服器建立tcp連線。2 tcp連線 結合三次握手講解 cp三次握手如圖 這裡寫描述 第一次握手 客戶主動 active open 去connect伺服器,並且傳送syn 假設...
從瀏覽器位址列輸入URL到瀏覽器呈現資料全過程解析
一 輸入裝置 或貼上 輸入 url,按下 enter鍵 或其他按鈕開始請求。二 瀏覽器開始解析 url 關於 url 到相關知識點 什麼是uri,url以及urn,你真的理解了嗎。1 url 是否合法 2 url 中的字元轉換 三 檢查本地快取,根據快取情況決定下一步的動作 1 強快取 cache ...