慚愧了,好久以前被面試的時候也有面試官問了我這個問題,可是當時回答的很不滿意,因而回頭看了不少資料,如今也整理一下。linux
大體可總結爲如下幾個步驟:面試
1. DNS解析。chrome
2. TCP連接。瀏覽器
3. 發送HTTP請求。緩存
4. 服務器處理而且返回HTTP請求。服務器
5. 瀏覽器渲染界面。負載均衡
6. 鏈接結束命令行
一 DNS解析調試
簡單點說就是尋找域名對應的IP的這個過程。在這個過程當中經歷了一下幾個環節,瀏覽器緩存=>系統緩存=>路由器緩存=>IPS服務器緩存=>根域名服務器緩存=>頂級域名服務器緩存=>主域名服務器緩存。xml
1. 瀏覽器緩存。在谷歌瀏覽器下搜索chrome://net-internals/#dns,能夠看到dns緩存信息。
2. 系統緩存。系統緩存能夠在命令行中輸入 vi /etc/hosts (linux中),查看,而且設置,固然能夠設置假的,用於本地調試。
DNS能夠返回一個合適的機器的IP給用戶,例如能夠根據每臺機器的負載量,該機器離用戶地理位置的距離等等,這種過程就是DNS負載均衡,又叫作DNS重定向。你們耳熟能詳的CDN(Content Delivery Network)就是利用DNS的重定向技術,DNS服務器會返回一個跟用戶最接近的點的IP地址給用戶,CDN節點的服務器負責響應用戶的請求,提供所需的內容。
二 TCP鏈接
三次握手,確保鏈接可靠性。
三 HTTP相關
當服務器與主機創建了鏈接以後,下面主機便與服務器進行通訊。網頁請求是一個單向請求的過程,便是一個主機向服務器請求數據,服務器返回相應的數據的過程。
瀏覽器根據 URL 內容生成 HTTP 請求,請求中包含請求文件的位置、請求文件的方式等等;
服務器接到請求後,會根據 HTTP 請求中的內容來決定如何獲取相應的 HTML 文件;
服務器將獲得的 HTML 文件發送給瀏覽器;
在瀏覽器尚未徹底接收 HTML 文件時便開始渲染、顯示網頁;
在執行 HTML 中代碼時,根據須要,瀏覽器會繼續請求圖片、CSS、JavsScript等文件,過程同請求 HTML ;