從輸入一個url到加載頁面發生了什麼?

  慚愧了,好久以前被面試的時候也有面試官問了我這個問題,可是當時回答的很不滿意,因而回頭看了不少資料,如今也整理一下。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負載均衡

  DNS能夠返回一個合適的機器的IP給用戶,例如能夠根據每臺機器的負載量,該機器離用戶地理位置的距離等等,這種過程就是DNS負載均衡,又叫作DNS重定向。你們耳熟能詳的CDN(Content Delivery Network)就是利用DNS的重定向技術,DNS服務器會返回一個跟用戶最接近的點的IP地址給用戶,CDN節點的服務器負責響應用戶的請求,提供所需的內容。

二 TCP鏈接

  三次握手,確保鏈接可靠性。

三 HTTP相關

  當服務器與主機創建了鏈接以後,下面主機便與服務器進行通訊。網頁請求是一個單向請求的過程,便是一個主機向服務器請求數據,服務器返回相應的數據的過程。

  1. 瀏覽器根據 URL 內容生成 HTTP 請求,請求中包含請求文件的位置、請求文件的方式等等;

  2. 服務器接到請求後,會根據 HTTP 請求中的內容來決定如何獲取相應的 HTML 文件;

  3. 服務器將獲得的 HTML 文件發送給瀏覽器;

  4. 在瀏覽器尚未徹底接收 HTML 文件時便開始渲染、顯示網頁;

  5. 在執行 HTML 中代碼時,根據須要,瀏覽器會繼續請求圖片、CSS、JavsScript等文件,過程同請求 HTML ;

相關文章
相關標籤/搜索