用戶在瀏覽器輸入URL或者跳轉到一個URL後發生了什麼

1、從URL到頁面渲染的整個過程
1)處理用戶輸入
2)開始導航
3)讀取響應
4)查找渲染進程
5)確認導航
6)渲染頁面javascript

 

2、每一步作了哪些事情css

1)處理用戶的輸入html

瀏覽器的UI 線程處理用戶的輸入,判斷是跳轉過來的仍是用戶本身的輸入。java

判斷依據是請求報文中referer這個參數,值是NUll,用戶本身手動輸入瀏覽器

 

2)開始導航緩存

用戶敲了回車以後,監聽用戶行爲的UI線程告訴network線程去獲取網頁;同時本身進入loading狀態。安全

network線程如何獲取網頁資源的呢?服務器

2.1)dns域名解析網絡

2.1.1)什麼是dns域名解析?怎麼進行的域名解析呢?
由於網絡通訊是基於tcp/IP的,tcp/ip是基於IP地址的,因此對於域名是沒法識別的,人們對於超過10位的IP地址記憶起來又有難度,因此就出現了域名;主機上用戶配置了域名對應的子目錄,當訪問對應的域名時,就能夠經過解析訪問到對應子目錄中的文件。tcp


2.1.2)域名解析:

  每一個PC端或者手機端都是一個DNS客戶端。

    瀏覽器將URL中的域名提取出來給DNS客戶端;

    dns客戶端向DNS服務器發起請求報文,報文中包含URL給的主機名;經過一系列的緩存查詢和分佈式DNS集羣查詢;

    dns客戶端收到響應報文,裏邊包含主機名對應的IP地址;

    瀏覽器獲取到IP地址,就能夠向IP地址所在的Http服務器發送http請求了。

 

2.1.3)創建http鏈接

   安全的數據傳輸必須創建tls鏈接,通過三次握手完成該項工做。

 

 

2.1.4)發起http請求

 

3)讀取響應

當請求響應返回的時候,network 線程會依據 Content-Type 及 MIME Type sniffing 判斷響應內容的格式;

常見的有text/html,text/css,text/javascript,image/gif,image/png,等等;

HTML格式文件的處理network線程通知UI線程完成資源獲取,UI線程會尋找渲染進程;

其餘格式的文件都交給下載管理器來作了,惡意站點和敏感字段的檢查也會在該階段完成。

 

4)尋找渲染進程,確認導航

network thread 確信瀏覽器能夠導航到請求網頁,network thread 會通知 UI thread 數據已經準備好,UI thread 會查找到一個 renderer process 進行網頁的渲染。

當 UI 線程發送 URL 請求給 network 線程時,瀏覽器其實已經知道了將要導航到那個站點。UI thread 會並行的預先查找和啓動一個渲染進程,若是一切正常,當 network thread 接收到數據時,渲染進程已經準備就緒了,可是若是遇到重定向,準備好的渲染進程也許就不可用了,這時候就須要重啓一個新的渲染進程。

Browser Process 會給 renderer process 發送 IPC 消息來確認導航,一旦 Browser Process 收到 renderer process 的渲染確認消息,導航過程結束,頁面加載過程開始。

 

5)頁面渲染

經典的渲染過程

相關文章
相關標籤/搜索