一個網頁從咱們輸入網址到打開經歷瞭如下步驟。
DNS
解析DNS
(域名系統 Domain Name System)由解析器
和域名服務器
組成,域名服務器
保存着該網絡中全部主機的域名
和對應的IP地址
,域名
有惟一對應的IP地址
,可是IP地址
不必定對應一個域名,咱們就是根據DNS
來上網的。
網址
並按下回車鍵時,瀏覽器獲得一個域名
。而實際通信過程當中咱們須要一個IP地址
。所以咱們須要先把域名
轉化成對應的IP地址
,這個過程就叫作DNS
解析。簡述css
瀏覽器搜索緩存-->hosts文件和操做系統緩存-->域名解析服務器-->遞歸迭代
YSE-->返回給瀏覽器
NO-->向下找
詳細描述web
DNS
記錄。hosts
文件和操做系統緩存。IP
後,一步步向上返回,直到返回給瀏覽器。TCP
請求(三次握手)簡述算法
客戶端(發送鏈接請求)-->服務器端
服務器端(創建鏈接併發送確認報文)-->客戶端
客戶端(發送確認收到確認報文)-->服務器端
詳細描述後端
創建起TCP
鏈接後,開始進行通訊。瀏覽器
TCP
鏈接後,瀏覽器向服務器發送HTTP
請求GET
。
當一臺服務器沒法支持大量用戶訪問時,將用戶分攤到兩個或多個服務器上的方法叫
負載均衡
。
簡述緩存
瀏覽器(發送請求)-->Nginx(創建TCP鏈接,轉發請求)-->web服務器(發送網頁)-->Nginx(傳遞網頁)-->filter鏈(處理)-->瀏覽器
詳細描述服務器
負載均衡
的話,前一步DNS
解析得到的IP
地址應該是咱們Nginx
負載均衡服務器的IP地址。因此,咱們的瀏覽器將咱們的請求發送到了Nginx
負載均衡服務器上。Nginx
根據咱們設定的分配算法和規則,選擇一臺後端的真實Web服務器,與之創建TCP
鏈接、並轉發咱們瀏覽器發出去的網頁請求。Web
服務器收到請求,產生響應,並將網頁發送給Nginx
負載均衡服務器。Nginx
負載均衡服務器將網頁傳遞給filter鏈處理,以後發回給咱們的瀏覽器。TCP
鏈接(四次揮手)瀏覽器(發送釋放鏈接報文)-->服務器
服務器(發送確認報文併發送完數據)-->瀏覽器
服務器(發送釋放鏈接請求)-->瀏覽器
瀏覽器(發出確認)-->服務器
等待一段時間後,瀏覽器釋放TCP鏈接
TCP
鏈接。瀏覽器接收到服務器服務器返回的HTML
頁面代碼,在解析和渲染這個頁面時,裏面的JS
、CSS
、圖片
等靜態資源,也是一個個HTTP
請求,都須要通過上面的步驟。
DOM Tree
。css
內容,生成CSS Rule Tree(規則樹)
。JS執行引擎執
行JS
代碼。DOM Tree
和 CSS Rule Tree
生成 Render Tree(呈現樹)
。Render Tree
渲染網頁。文章參考自https://www.jianshu.com/p/0c8c7cecf946
和https://www.jianshu.com/p/cc1d185a7842
網絡