計算機網絡【6】—— 從瀏覽器輸入URL到顯示頁面發生了什麼

當在瀏覽器地址欄輸入網址,如:www.baidu.com後瀏覽器是怎麼把最終的頁面呈現出來的呢?這個過程能夠大體分爲兩個部分:網絡通訊和頁面渲染。瀏覽器

1、網絡通訊

    互聯網內各網絡設備間的通訊都遵循TCP/IP協議,利用TCP/IP協議族進行網絡通訊時,會經過分層順序與對方進行通訊。分層由高到低分別爲:應用層、傳輸層、網絡層、數據鏈路層。發送端從應用層往下走,接收端從數據鏈路層網上走。如圖所示:緩存

 

1. 在瀏覽器中輸入url

    用戶輸入url,例如http://www.baidu.com。其中http爲協議,www.baidu.com爲網絡地址,及指出須要的資源在那臺計算機上。通常網絡地址能夠爲域名或IP地址,此處爲域名。使用域名是爲了方便記憶,可是爲了讓計算機理解這個地址還須要把它解析爲IP地址。安全

2.應用層DNS解析域名

   客戶端先檢查本地是否有對應的IP地址,若找到則返回響應的IP地址。若沒找到則請求上級DNS服務器,直至找到或到根節點。服務器

3.應用層客戶端發送HTTP請求

HTTP請求包括請求報頭和請求主體兩個部分,其中請求報頭包含了相當重要的信息,包括請求的方法(GET / POST)、目標url、遵循的協議(http / https / ftp…),返回的信息是否須要緩存,以及客戶端是否發送cookie等。cookie

4.傳輸層TCP傳輸報文

   位於傳輸層的TCP協議爲傳輸報文提供可靠的字節流服務。它爲了方便傳輸,將大塊的數據分割成以報文段爲單位的數據包進行管理,併爲它們編號,方便服務器接收時能準確地還原報文信息。TCP協議經過「三次握手」等方法保證傳輸的安全可靠。網絡

  「三次握手」的過程是,發送端先發送一個帶有SYN(synchronize)標誌的數據包給接收端,在必定的延遲時間內等待接收的回覆。接收端收到數據包後,傳回一個帶有SYN/ACK標誌的數據包以示傳達確認信息。接收方收到後再發送一個帶有ACK標誌的數據包給接收端以示握手成功。在這個過程當中,若是發送端在規定延遲時間內沒有收到回覆則默認接收方沒有收到請求,而再次發送,直到收到回覆爲止。佈局

TCP 

5.網絡層IP協議查詢MAC地址

   IP協議的做用是把TCP分割好的各類數據包傳送給接收方。而要保證確實能傳到接收方還須要接收方的MAC地址,也就是物理地址。IP地址和MAC地址是一一對應的關係,一個網絡設備的IP地址能夠更換,可是MAC地址通常是固定不變的。ARP協議能夠將IP地址解析成對應的MAC地址。當通訊的雙方不在同一個局域網時,須要屢次中轉才能到達最終的目標,在中轉的過程當中須要經過下一個中轉站的MAC地址來搜索下一個中轉目標。url

6.數據到達數據鏈路層

   在找到對方的MAC地址後,就將數據發送到數據鏈路層傳輸。這時,客戶端發送請求的階段結束3d

7.服務器接收數據

   接收端的服務器在鏈路層接收到數據包,再層層向上直到應用層。這過程當中包括在運輸層經過TCP協議講分段的數據包從新組成原來的HTTP請求報文。blog

8.服務器響應請求

   服務接收到客戶端發送的HTTP請求後,查找客戶端請求的資源,並返回響應報文,響應報文中包括一個重要的信息——狀態碼。狀態碼由三位數字組成,其中比較常見的是200 OK表示請求成功。301表示永久重定向,即請求的資源已經永久轉移到新的位置。在返回301狀態碼的同時,響應報文也會附帶重定向的url,客戶端接收到後將http請求的url作相應的改變再從新發送。404 not found 表示客戶端請求的資源找不到。

9. 服務器返回相應文件

   請求成功後,服務器會返回相應的HTML文件。接下來就到了頁面的渲染階段了。

2、頁面渲染

   現代瀏覽器渲染頁面的過程是這樣的:jiexiHTML以構建DOM樹 –> 構建渲染樹 –> 佈局渲染樹 –> 繪製渲染樹。

   DOM樹是由HTML文件中的標籤排列組成,渲染樹是在DOM樹中加入CSS或HTML中的style樣式而造成。渲染樹只包含須要顯示在頁面中的DOM元素,像<head>元素或display屬性值爲none的元素都不在渲染樹中。

   在瀏覽器還沒接收到完整的HTML文件時,它就開始渲染頁面了,在遇到外部鏈入的腳本標籤或樣式標籤或圖片時,會再次發送HTTP請求重複上述的步驟。在收到CSS文件後會對已經渲染的頁面從新渲染,加入它們應有的樣式,圖片文件加載完馬上顯示在相應位置。在這一過程當中可能會觸發頁面的重繪或重排。

相關文章
相關標籤/搜索