一個網頁的造成過程

一個網頁從咱們輸入網址到打開經歷瞭如下步驟。

DNS解析

DNS(域名系統 Domain Name System)由 解析器域名服務器組成, 域名服務器保存着該網絡中全部主機的 域名和對應的 IP地址, 域名有惟一對應的 IP地址,可是 IP地址不必定對應一個域名,咱們就是根據 DNS來上網的。
  • 當用戶輸入一個網址並按下回車鍵時,瀏覽器獲得一個域名。而實際通信過程當中咱們須要一個IP地址。所以咱們須要先把域名轉化成對應的IP地址,這個過程就叫作DNS解析。
過程

簡述css

瀏覽器搜索緩存-->hosts文件和操做系統緩存-->域名解析服務器-->遞歸迭代
YSE-->返回給瀏覽器
NO-->向下找

詳細描述web

  1. 瀏覽器首先搜索自身緩存的DNS記錄。
  2. 若是沒有或記錄已通過期,則搜索hosts文件和操做系統緩存。
  3. 若是沒有或記錄已通過期,則向域名解析服務器發送解析請求。
  4. 若是仍是沒有,則開始遞歸 + 迭代解析。
  5. 獲取域名和對應IP後,一步步向上返回,直到返回給瀏覽器。

發起TCP請求(三次握手)

簡述算法

客戶端(發送鏈接請求)-->服務器端
服務器端(創建鏈接併發送確認報文)-->客戶端
客戶端(發送確認收到確認報文)-->服務器端

詳細描述後端

  1. 客戶端向服務器端發送鏈接請求的報文。
  2. 服務器端收到請求後,贊成創建鏈接,並向客戶端發送確認報文。
  3. 客戶端收到後,再次向服務器端發送報文,確認已經收到確認報文。

創建起TCP鏈接後,開始進行通訊。瀏覽器

創建TCP鏈接後,瀏覽器向服務器發送HTTP請求

  • 如:瀏覽器發出取文件指令GET

負載均衡

當一臺服務器沒法支持大量用戶訪問時,將用戶分攤到兩個或多個服務器上的方法叫 負載均衡
過程

簡述緩存

瀏覽器(發送請求)-->Nginx(創建TCP鏈接,轉發請求)-->web服務器(發送網頁)-->Nginx(傳遞網頁)-->filter鏈(處理)-->瀏覽器

詳細描述服務器

  • 通常,若是咱們的平臺配備了負載均衡的話,前一步DNS解析得到的IP地址應該是咱們Nginx負載均衡服務器的IP地址。因此,咱們的瀏覽器將咱們的請求發送到了Nginx負載均衡服務器上。
  • Nginx根據咱們設定的分配算法和規則,選擇一臺後端的真實Web服務器,與之創建TCP鏈接、並轉發咱們瀏覽器發出去的網頁請求。
  • Web服務器收到請求,產生響應,並將網頁發送給Nginx負載均衡服務器。
  • Nginx負載均衡服務器將網頁傳遞給filter鏈處理,以後發回給咱們的瀏覽器。

服務器響應HTTP請求,將請求的資源發送給瀏覽器。

瀏覽器釋放TCP鏈接(四次揮手)

瀏覽器(發送釋放鏈接報文)-->服務器
服務器(發送確認報文併發送完數據)-->瀏覽器
服務器(發送釋放鏈接請求)-->瀏覽器
瀏覽器(發出確認)-->服務器
等待一段時間後,瀏覽器釋放TCP鏈接
  • 瀏覽器向服務器發送釋放鏈接報文。
  • 服務器收到後,發出確認報文,而後將服務器上未傳送完的數據發送完。
  • 服務器數據傳輸完成後,向瀏覽器發送釋放鏈接請求。
  • 瀏覽器收到後,發出確認,而後等待一段時間,釋放TCP鏈接。

瀏覽器渲染

瀏覽器接收到服務器服務器返回的 HTML頁面代碼,在解析和渲染這個頁面時,裏面的 JSCSS圖片等靜態資源,也是一個個 HTTP請求,都須要通過上面的步驟。
  • 瀏覽器根據頁面內容,生成DOM Tree
  • 根據css內容,生成CSS Rule Tree(規則樹)
  • 調用JS執行引擎執JS代碼。
  • 根據DOM TreeCSS Rule Tree生成 Render Tree(呈現樹)
  • 根據根據Render Tree渲染網頁。

文章參考自https://www.jianshu.com/p/0c8c7cecf946https://www.jianshu.com/p/cc1d185a7842網絡

相關文章
相關標籤/搜索