輸入URL展現過程

1、 輸入URL,回車

  1. 敲擊某個鍵時,鍵盤內的處理器會先對鍵矩陣進行分析,而後將數據發送到計算機
  2. 計算機接收到來自鍵盤的信號,由鍵盤控制器(一種集成電路)進行處理,發送給操做系統
  3. 操做系統會分析,這些數據是否爲系統命令,若不是,則將數據傳給應用程序。
  4. 應用程序會分析這些數據是否爲命令,若是不是命令,則會將數據做爲內容接受,不然忽略

2、瀏覽器解析URL

  1. 瀏覽器會對URL進行檢查,是否合法,若是不合法會將輸入內容傳給默認的搜索引擎
  2. 針對當前URL檢查是否存在本地緩存,若是有緩存就直接跳過請求階段,從緩存中去取資源

瀏覽器再獲得URL後,調用Socket,使用TCP協議,HTTP請求會被封裝,加入本地端口,目標端口等信息 IP地址是在IP協議中被封裝的。但光有IP地址是不夠的,由於設備是能夠移動的,IP地址並不與設備綁定。因此還有一個MAC要被封裝,每一個網卡的MAC地址都是固定且惟一的css

3、DNS解析

DNS其實是一個域名與IP對應的數據庫,DNS解析主要是爲了獲取到域名對應的IP,用於下一步的鏈接創建html

DNS的解析會按照如下順序嘗試獲取IP,任意一步找到直接返回IP:chrome

1. 查詢瀏覽器緩存,瀏覽器會對最近訪問的地址的DNS進行緩存,例如chrome對每一個域名會默認緩存60s
2. 檢查系統緩存,也就是hosts文件中配置的域名與IP的對應關係
3. 獲取路由器的DNS緩存
4. 查詢ISP服務商DNS緩存,即本地服務器緩存
5. 最後手段:遞歸查詢,以 根域名服務器 --> 頂級域名服務器 --> 極限域名服務器 的順序搜索對應域名的IP
複製代碼

經過Socket API發送數據,能夠選擇TCP或UDP協議數據庫

1. Socket(套接字)是計算機之間進行通訊的一種約定或一種方式
2. 在應用層和傳輸層之間的一個抽象層
3. 它把TCP/IP層複雜的操做抽象爲幾個簡單的接口
4. 供應用層調用已實現進程在網絡中通訊
複製代碼

3、創建鏈接;

根據上一步獲取到的IP地址定位到目標主機,開始於其創建TCP鏈接,也就是三次握手創建鏈接:瀏覽器

  1. 第1次握手:客戶端向服務器端發送請求(SYN=1)等待服務器確認;
  2. 第2次握手:服務器收到請求並確認,回覆一個指令(SYN=1,ACK=1);
  3. 第3次握手:客戶端收到服務器的回覆指令並返回確認(ACK=1)。

4、服務器如何處理數據並返回數據

用上一步創建的鏈接發送http request請求命令和請求頭信息緩存

服務器收到信息都會返回應答頭信息bash

5、關閉TCP鏈接,

  • http1.1已經支持keep-alive
  • 根據Connection請求頭,若是是keep-alive服務器就保持住tcp鏈接
  • response傳輸完後主動關閉tcp鏈接。
  • 固然如今瀏覽器都是http1.1都默認是keep-alive的,在瀏覽器tab關閉時,tcp鏈接關閉。

6、檢查狀態碼

若是response的狀態碼出現3XX(跳轉),未受權(401),錯誤(4XX和5XX)會有不一樣的處理。服務器

7、準備呈現

若是response status 爲304(內容未更改)瀏覽器則會從原本緩存加載內容進行呈現網絡

8、 瀏覽器如何處理服務器的響應

經過MIME類型,瀏覽器知道要用頁面渲染引擎來處理HTML文件,整個渲染過程都由瀏覽器來處理,主要分爲如下步驟:tcp

  1. 解析資源文件(html)的源代碼,構建出一個DOM樹
  2. 解析CSS,造成css對象模型CSSOM,其中非法的css會直接被忽略掉
  3. 利用DOM和CSSOM構建一個渲染樹
  4. 根據渲染樹直接把頁面繪製到瀏覽器窗口中

根據網絡模型來的過程

應用層

HTTP、DNS

傳輸層

TCP/UDP

三網絡層

IP

鏈路層

相關文章
相關標籤/搜索