深刻淺出篇 — 域名 & DNS解析

域名與DNS解析知識問答:

  1. 能經過域名直接訪問到一臺機器嗎 --- 不能夠
  2. 那爲甚麼要用域名 --- IP地址很差記
  3. 那域名訪問怎麼成功的呢 --- 用域名和IP造成對應關係
  4. 什麼是DNS --- 把域名翻譯成IP地址的軟件稱爲域名系統,即DNS
  5. 計算機是不知道域名對應的IP的
  6. 但每一個路由器裏都有一個Ip的域名映射表,若認識這個Ip,路由器就直接返回Ip,計算機就訪問這個Ip

從輸入url至頁面完成渲染的經歷了什麼:

一.DNS解析

  • 首先看瀏覽器緩存
  • 而後看本機host
  • 而後看家裏的路由器
  • 問路由器,若路由器認識這個域名,就返回一個IP,而後計算機訪問這個IP
  • 若路由器不認識,他就問上一層路由器 (如本身家樓的路由器)
  • 問城市這個級別的路由器,即LDNS服務器(本地DNS解析器)
  • 若是LDNS服務器不認識這個域名,繼續向上級DNS服務器查找-即gDNS服務器(全球DNS解析器)
  • 互聯網創建的時候,共建立了13臺總的DNS服務器,找到總的DNS服務器時必定會找到映射的(通常找不到)
  • 找到結果後就會把IP和域名驚醒緩存緩存加到上面的層,(但除了本機host,其不緩存)

二. 創建TCP鏈接-3次握手

  1. 第一次握手,由瀏覽器發起,告訴服務器我要發送請求
  2. 第二次握手,由服務器發起,告訴瀏覽器我準備接收了,你趕忙發吧
  3. 第三次握手,由瀏覽器發送,告訴服務器我立刻就發了,準備接收吧

三. 發送請求

  • 請求報文 , http協議通訊內容

四. 接收響應

  • 響應報文

五. 渲染頁面

  • 碰見HTML標記,瀏覽器調用HTML解析器解析成Token並構建成dom樹
  • 碰見style/link標記,瀏覽器調用css解析器,處理css標記並構建cssom樹
  • 碰見script標記,調用javascript解析,處理script代碼(綁定事件,修改dom樹/cssom樹)
  • 將dom樹和cssom樹合併成一個渲染樹
  • 根據渲染樹來計算佈局,計算每一個節點的幾何信息(佈局)
  • 將各個節點顏色繪製到屏幕上(渲染)
注:
這5個步驟不必定按照順序執行,若是dom樹或cssom樹被修改了,可能會執行屢次佈局和渲染,每每實際頁面中,這些步驟都會執行屢次的
複製代碼

六. 斷開鏈接,TCP四次揮手

  • 第一次揮手,由瀏覽器發起,發送給服務器,我東西發完了(請求報文),你準備關閉吧
  • 第二次揮手,由服務器發起,告訴瀏覽器,我東西接收完了(請求報文 ),我準備關閉了,你也準備吧
  • 第三次揮手, 由服務器發起,告訴瀏覽器,我東西發送完了(響應報文),你準備關閉吧
  • 第四次揮手 ,由瀏覽器發起,告訴服務器,我準備關閉了(響應報文),你也準備吧
相關文章
相關標籤/搜索