首頁  >  文章  >  web前端  >  從輸入 URL 到頁面載入完成的過程是什麼樣的

從輸入 URL 到頁面載入完成的過程是什麼樣的

一个新手
一个新手原創
2017-10-06 10:40:271220瀏覽

從輸入URL 到頁面載入完成的過程中都發生了什麼

過程描述

  1. 瀏覽器尋找網域名稱對應的IP 位址;

  2. 瀏覽器根據IP 位址與伺服器建立socket 連線;

  3. #瀏覽器與伺服器通訊:瀏覽器要求,伺服器處理請求;

  4. 瀏覽器與伺服器斷開連線。

根據網域名稱尋找IP位址

概念解析
  1. #IP位址:IP協定為網際網路上的每一個網路和每一台主機分配的一個邏輯位址。 IP位址如同門牌號碼,透過 IP位址才能決定一台主機位置。伺服器本質也是一台主機,想要存取某個伺服器,必須先知道它的IP位址;

  2. #網域(HOST):IP 位址由四個數字組成,中間用點號連接,在使用過程中難記憶且易輸入錯誤,所以用我們熟悉的字母和數字組合來代替純數字的IP 地址,比如我們只會記住 www.baidu.com(百度域名) 而不是220.181. 112.244(百度的其中一個IP 位址);

  3. DNS:每個網域都對應一個或多個提供相同服務伺服器的IP位址,只有知道伺服器IP位址才能建立連接,所以需要透過DNS 把網域解析成一個IP 位址。

知道了上面的概念,大概就知道了想要取得伺服器的門牌號碼,需要先將網域轉換成IP位址。轉換流程如下(以查詢 www.baidu.com 的IP位址為例,其中2、3、4步驟皆在上一步驟未查詢成功的情況下進行):

找出流程
  1. #瀏覽器搜尋自己的DNS 快取(維護一張網域名稱與IP 位址的對應表);

  2. 搜尋作業系統中的DNS 快取(維護一張網域名稱與IP 位址的對應表);

  3. 搜尋作業系統的hosts 檔案( Windows 環境下,維護一個網域名稱與IP 位址的對應表);

  4. 作業系統將網域名稱傳送至LDNS(本地區域名稱伺服器,如果你在學校接取互聯網,則LDNS伺服器就在學校,如果透過電信接取互聯網,則LDNS伺服器就在你當地的電信那裡。 LDNS向RootNameServer(根域名伺服器,其雖然沒有每個域名的具體信息,但存儲了負責每個域,如com、net、org等的解析的頂級域名伺服器的地址)發起請求,此處,Root Name Server 傳回com 網域的頂級網域名稱伺服器的位址;

    1. LDNS 向com 網域的頂級網域名稱伺服器發起請求,傳回baidu.com 網域伺服器位址;

    2. #LDNS 向baidu.com 網域名稱伺服器發起請求,得到www.baidu.com 的IP 位址;

    3. LDNS 將得到的IP 位址傳回給作業系統,同時自己也將IP 位址快取起來;

  5. #作業系統將IP 位址傳回給瀏覽器,同時自己也將IP 位址快取起來;

  6. 至此,瀏覽器已經得到了網域名稱對應的IP 位址。

  7. 補充說明

網域名稱與URL是兩個概念:網域名稱是一台或一組伺服器的名稱,用來決定伺服器在Internet上的位置;URL 是統一資源定位符,用來確定某一個文件的具體位置,例如,zhihu.com是知乎的域名,根據這個域名可以找到知乎的伺服器,zhihu.com/people/CompileYouth是URL,可以根據這個URL定位我的知乎主頁;
  1. IP 位址與網域名稱不是一一對應的關係:可以把多個提供相同服務的伺服器IP設定為同一個域名,但在同一時刻一個域名只能解析出一個IP位址;同時,一個IP 位址可以綁定多個域名,數量不限;

  2. 建立連線:三次握手

    知道了伺服器的IP 位址,下面便開始與伺服器建立連線了。
通俗地講,通訊連線的建立需要經歷以下三個過程:

主機向伺服器發送一個建立連線的請求(您好,我想認識您);

  1. 伺服器接到請求後發送同意連接的訊號(好的,很高興認識您);

  2. 主機接到同意連接的訊號後,再次向伺服器發送了確認訊號(我也很高興認識您),自此,主機與伺服器兩者建立了連線。

  3. 補充說明:TCP 協議:三次握手的過程採用TCP 協議,其可以保證訊息傳輸的可靠性,三次握手過程中,若一方收不到確認訊號,協議會要求重新發送訊號。

    資料傳輸

    當伺服器與主機建立了連線之後,下面主機便與伺服器進行通訊。網頁請求是一個單向請求的過程,即是一個主機向伺服器請求數據,伺服器傳回相應的數據的過程。

    1. 瀏覽器根據URL 內容產生HTTP 請求,請求中包含請求檔案的位置、請求檔案的方式等等;

    2. 伺服器接到請求後,會根據HTTP 請求中的內容來決定如何取得對應的HTML 檔案;

    3. #伺服器將得到的HTML 檔案傳送給瀏覽器;

    4. 在瀏覽器還沒有完全接收HTML 檔案時便開始渲染、顯示網頁;

    5. 在執行HTML 中程式碼時,根據需要,瀏覽器會繼續要求圖片、CSS、JavsScript等文件,過程同請求HTML ;

    斷開連線:四次揮手

    1. ##主機向伺服器發送一個斷開連線的請求(不早了,我該走了);

    2. 伺服器接到請求後發送確認收到請求的訊號(知道了);

    3. #伺服器向主機發送斷開通知(我也該走了);

    4. 主機接到斷開通知後斷開連接並反饋一個確認信號(嗯,好的),伺服器收到確認訊號後斷開連接;

    #補充說明
    #為什麼伺服器在接到斷開請求時不立即同意斷開:當伺服器收到斷開連線的請求時,可能仍有資料未傳送完畢,所以伺服器先發送確認訊號,等所有資料發送完畢後再同意斷開。

    第四次握手後,主機發送確認訊號後並沒有立即斷開連接,而是等待了2 個報文傳送週期,原因是:如果第四次握手的確認訊息遺失,伺服器將會重新發送第三次握手的斷開連接的訊號,而伺服器發覺丟包與重新發送的斷開連接到達主機的時間正好為2 個報文傳輸週期。

    這篇文章大致的描述了輸入url到頁面加載完成的整個過程,我個人感覺描述還不錯,所以就想放到自己的博客來,供自己和大家分享和學習。

    原文位址:從輸入 URL 到頁面載入完成的過程中都發生了什麼

以上是從輸入 URL 到頁面載入完成的過程是什麼樣的的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn