曾經在一家公司面試的時候,面試官管問了我一個問題:「在瀏覽器地址欄敲下www.xx.com 這段時間發生了什麼?」面試
當聽到這個問題的時候,我腦殼就蒙了,雖然知道就是請求與響應,可是要說個1234出來還真不行,最後只說了就是請求與響應什麼的,萬幸的是面試經過了。後端
雖然面試經過了,可是問題仍是要解決的,我翻了點資料最後總結以下:瀏覽器
當輸入域名並敲擊回車的時候。緩存
1.瀏覽器開始搜索自身的DNS緩存。服務器
2.若是瀏覽器沒有緩存,或者緩存已經失效,搜索操做系統自身的緩存。操作系統
3.若是操做系統自身的緩存失效,讀取本地的HOST文件。圖片
4.瀏覽器發起DNS的系統調用,發起一個域名解析請求,通常是運營商的DNS服務器。資源
5.寬帶運營商的DNS服務器會查找自身的緩存路由
6.運營商的服務器發起一個迭代的DNS請求,它首先會找根域的DNS IP地址,而後返回com域IP地址,而後運營商服務器向com域服務器發起請求,返回xx.com域的IP地址,而後再次發起請求(這裏通常指的是域名註冊商,像萬網之類的),找到結果將地址發給運營商的服務器。運營商服務器把結果返回給操做系統內核,並將域名緩存起來,操做系統內核將結果返回給瀏覽器,瀏覽器獲取到了xx.com的IP地址。文檔
7.瀏覽器獲取到域名對應的IP地址後,發起HTTP「三次握手」。瀏覽器用隨機端口想IP地址服務器發起TCP鏈接請求。通過層層的路由以及網卡、防火牆,最終到達WEB服務端。
8.TCP/IP鏈接創建起來之後,瀏覽器向服務器發生HTTP請求。
9.服務器端收到這個請求,根據路徑參數通過後端的一些處理以後,吧結果返回給瀏覽器。
10.瀏覽器獲取結果(JS/CSS/圖片資源,都要結果上面的步驟進行HTTP請求),開始下載HTML文檔 > HTML解析 > 加載DOM樹 > 生成Render樹 > 逐級解析DOM樹從根標籤開始(通常指HTML表籤/元素),最終將渲染後的頁面展現給用戶。