很多初學網路或者前端的初學者大多會有這樣一個疑問:從輸入URL到頁面載入完成到底發生了什麼?
總的來說,這個過程分為下面幾個步驟:
1.DNS解析
2.與伺服器建立連線
3.伺服器處理並返回http報文
4.瀏覽器解析渲染頁面
過程
DNS解析
DNS解析的過程就是尋找哪臺機器上有你需要資源的過程。當你在瀏覽器中輸入一個地址時,例如www.baidu.com,其實不是百度網站真正意義上的地址。網際網路上每一臺計算機的唯一標識是它的IP地址,但是IP地址並不方便記憶。使用者更喜歡用方便記憶的網址去尋找網際網路上的其它計算機,也就是上面提到的百度的網址。所以DNS解析實際上充當了一個翻譯的角色,實現了網址到IP地址的轉換。
而DNS解析通常會經過以下這幾個過程:
1.瀏覽器快取 – 瀏覽器快取DNS記錄一段時間
2.系統快取 – 從Hosts檔案查詢是否有該域名和對應IP
3.路由器快取 – 一般路由器也會快取域名資訊
4.ISP DNS快取 – 到電信的DNS查詢快取
5.都沒有找到,則向根域名伺服器查詢域名對應IP,根域名伺服器把請求轉發到下一級查詢IP
www.baidu.com查詢順序是:
根域名伺服器(.)-> .com -> .baidu.com -> www.baidu.com
建立連線
知道了伺服器的IP地址後,就可以與伺服器建立連線。
建立連線需要三個過程(三次握手):
1.主機向伺服器傳送一個建立連線的請求
2.伺服器接到請求後傳送同意連線的訊號
3.主機接到同意連線的訊號後,再次向伺服器傳送了確認訊號
伺服器處理請求
1.瀏覽器根據 URL 內容生成 HTTP 請求,請求中包含請求檔案的位置、請求檔案的方式等等
2.伺服器接到請求後,會根據 HTTP 請求中的內容來決定如何獲取相應的 HTML 檔案
3.伺服器將得到的 HTML 檔案傳送給瀏覽器
瀏覽器解析渲染頁面
在執行 HTML 中程式碼時,根據需要,瀏覽器會繼續請求圖片、CSS、JavsScript等檔案,過程同請求 HTML 。
結語
以上就是我對輸入URL到頁面載入的過程的一個簡單理解。如有不對或有更好的理解,可以留言評論,不勝感激。