瀏覽器工作原理與實踐(二)

2022-05-01 16:45:15 字數 2847 閱讀 8640

tcp協議如何保證頁面能被完整送達瀏覽器?

在衡量web頁面效能的時候有乙個重要的指標叫「fp」,是指從頁面載入到首屏繪製的時長,這個指標影響了使用者的跳出率,更快的頁面影響意味著更多的pv、更高的參與度以及更高的轉化率。

影響fp的乙個重要因素是網路載入速度。

優化web頁面的載入速度,你需要對網路有充分的了解,而理解網路的關鍵是要對網路協議有深刻的認識,不管你是使用http還是使用websocket,它們都是基於tcp/ip的,如果你對這些原理有足夠的了解,也就清楚如何去優化web效能,或者能更輕鬆地定位 web 問題。

在網路中,乙個檔案 通常會被拆分成很多資料報來進行傳輸,而資料報在傳輸過程中又有很大概率丟失或者出錯。

那麼如何保證頁面檔案能被完整的送達瀏覽器呢?

乙個資料報的「旅程」

下面我將分別從「資料報如何送達主機」「主句如何將資料報轉交給應用」和「資料報是如何被完整的送達應用程式」三個角度來描述資料的傳輸過程。

網際網路,實際上是一套理念和協議組成的體系架構。其中,協議是一套眾所周知的規則和標準,如果各方都同意使用,那麼它們之間的通訊將變得毫無障礙

網際網路中的資料都是通過資料報來傳輸的。如果傳送的資料很大,那麼該資料就會被拆分成很多小資料報來傳輸

ip: 把資料報送達目的主機:

為了方便,簡單把網路分為三層,如圖一

一起看一下乙個資料報從主機a到主機b的旅程,

上層將含有「極客時間」的資料報交給網路層

網路層再將 ip 頭附加到資料報上,組成新的ip 資料報,並交給底層

底層通過物理網路將資料報給主機b

資料報被傳到主機b的網路層,在這裡主機b拆開資料報的ip頭資訊,並將拆開的資料部分交給上層

最終,含有「極客時間」資訊的資料報就到達了主機b的上層了

2.udp:把資料報送達應用程式

ip是非常底層的協議,只負責把資料報傳送到對方電腦,但是對方電腦並不知道資料報交給哪個程式,是交給瀏覽器還是交給王者榮耀?因此,需要基於ip之上開發能和應用打交道的協議,最常見的是「使用者資料報協議」,簡稱

udp. 

udp中乙個最重要的資訊是埠號,通過埠號udp就能把指定的資料報傳送給指定的程式了。

所以 ip 通過 ip 位址資訊把資料報傳送給指定的電腦,而 udp 通過埠號把資料報分發給正確的程式。和ip頭一樣,埠號會被裝進 udp 頭裡面,udp頭再和原始資料報合併組成除了目的埠還有源埠號等資訊

如圖:在網路層和和上層之間增加了傳輸層

再看一下資料報從主機a旅行到主機b的路線:

上層將含有「極客時間」的資料報交給傳輸層

傳輸層會在資料報前面附加上 udp 頭,組成新的 udp 資料報,再將新的 udp 資料報交給網路層

網路層再將 ip 頭附加到資料報上,組成新的 ip 資料報,並交給底層

資料報被傳輸到主機b的網路層,在這主機b拆開ip資料報,並將拆開的資料部分交給傳輸層

在傳輸層,資料報中的udp頭會被拆開,根據udp提供的埠號,把資料交給上層的應用程式

最終將含有「極客時間」資訊的資料報就旅行到了主機b上層應用程式這裡

注:在使用udp傳送資料時,有各種因素導致資料報出錯,雖然udp可以校驗資料是否正確,但是對於錯誤的資料報,udp並不觸發重發機制,只是丟棄當前的包,而且也無法知道是否到達目的地。

3.tcp:將資料完整地送達應用程式

對於瀏覽器請求或者郵件這類要求資料傳輸可靠性的應用,使用udp會存在兩個問題

基於這兩個問題引入了tcp

tcp(傳輸控制協議)是一種面向連線的、可靠的、基於位元組流的傳輸層通訊協議,

相對udp,tcp有以下兩個特點

和udp頭一樣,tcp頭除了包含目標埠和本機埠號外,還提供了用於排序的序列號,以便接收端通過序列號來重排資料報

通過上圖可以看出tcp單個資料報的傳輸流程個udp流程差不多,不同在於 tcp的頭資訊保證了一塊大的資料傳輸的完整性

看一下完整的tcp 連線過程,通過這個過程你可以明白tcp是如何保證重傳機制和資料報的排序功能

從上圖可以看出,乙個完整的tcp連線的生命週期包括「建立連線」「傳輸資料」和「斷開連線」三個階段

首先,建立連線階段。這個階段是通過「三次握手」來建立客戶端和服務端之間的連線。tcp提供面向連線的通訊傳輸。面向連線是指在通訊開始之前先做好兩端之間的準備工作。所謂三次握手,是指乙個建立tcp連線時,客戶端和伺服器總共要傳送三個資料報以確認連線的建立

其次,傳輸資料階段,在該階段,接收端需要對每個資料報進行確認操作,也就是接收端在接受到資料報之後需要傳送確認資料報給傳送端。所以當傳送端傳送了乙個資料報之後,在規定時間內沒有接收到接收端反饋的確認訊息,則判斷資料報丟失,並觸發傳送端的重發機制。同樣,乙個大的檔案在傳輸過程中會被拆分成很多小的資料報,這些資料報到達接收端後,接收端會按照tcp頭中的序號為其排序,從而保證完整的資料

最後,斷開連線階段。資料傳輸完畢後就要終止連線,這幾最後乙個階段「四次揮手」來保證雙方都能斷開連線

tcp為了保證資料傳輸的準確性,犧牲了傳輸速度

在 pdflux 中開啟

在 pdflux 中開啟

無資料

瀏覽器工作原理

首先對上篇blog 進行乙個補充 以我做的 基於執行緒池和資料庫連線池的web 伺服器 為例,說說http 通訊的流程,大體分為三個階段 a 連線 伺服器通過乙個serversocket 類物件對8000 埠進行監聽,監聽到之後建立 連線,開啟乙個socket 虛擬檔案。b 請求 建立與建立sock...

瀏覽器工作原理

介紹 渲染引擎又叫排版引擎或者瀏覽器核心 主流的渲染引擎有 解析html構造dom樹 document object model,文件物件模型 dom是w3c組織推薦的處理可擴充套件置標語言的標準程式設計介面。構建渲染數,渲染數並不等同於dom數,因為像head標籤或者display none這樣的...

瀏覽器工作原理

輸入網域名稱,瀏覽器做簡單的篩選判斷 預設為http協議,https的話需要手動輸入 dns查詢,獲取ip位址 先查自己記憶體裡的dns cache 再查本地硬碟裡的host檔案 查詢dns服務 建立tcp ip連線 傳送http請求 伺服器處理 瀏覽器收到返回,解析展示 我們在瀏覽器輸入 其實就是...