1. 程式人生 > >URL訪問過程

URL訪問過程

  • DNS 域名解析
  • 計算機無法識別域名,計算機與計算機之間要想進行通訊,必須通過ip地址用來定位該計算機所在的位置
  • 在瀏覽器中,輸入的ip地址或者域名,預設給你加了一個80埠號(對方的伺服器監聽的就是80埠)
  • 158.12.25.652 域名就是為了好記
  • 為了好記,所以我們的全球資訊網提供了 一個 域名這樣的概念
  • 當你輸入了 ip 地址後,瀏覽器會自動去 找DNS域名解析伺服器,
  • 建立 TCP 連線(Socket):三次握手,確保這個一定是一個有效的請求和響應,這個三次握手在業界相信大多數人都不陌生,雖然它是提高了傳輸的有效性,但是這個導致的直接問題就是整個傳輸過程是很耗時的,也就是說每次http請求都會經歷三次握手這個過程,消耗的時間也是不言而喻,並且傳統的http協議規定一次請求只能請求一個檔案,所以一些頂級網站千方百計的採取一些減少http請求的策略,大多數就是採取一次http請求能夠請求多個檔案這樣的實現,欣喜的是,http2.0已經支援能夠一次http能夠請求多個檔案,這個還是值得期待全部推行開來的,只不過肯定需要過上一段時間,慢慢去等待推行吧。
  • 將使用者輸入的地址封裝成 HTTP Request 請求報文 傳送到伺服器
  • 瀏覽器將使用者輸入的 URL 地址根據HTTP協議 封裝成了 http 請求報文(請求頭+請求行+請求體)
  • 該報文說白了也就是字串而已,最終也要被轉成了二進位制資料再發送到伺服器
  • 後臺伺服器接收到使用者HTTP Request 請求報文
  • 後臺伺服器接收到 客戶端傳送給自己的資料(二進位制資料)
    • 首先把二進位制資料按照編碼解析成字元,(人類可以識別的)
    • 解析成字元之後,再按照 HTTP 協議規範中定義的格式解析出來
  • 後臺伺服器處理使用者請求資訊

  • 當得到使用者請求報文之後,根據請求報文中的 get、port或者 URL、或者URL中的查詢字串或者 請求體中的資料
  • 根據使用者的特定的請求資料做特定的處理
  • 後臺伺服器將相應結果封裝到 HTTP Response 響應報文中 傳送給客戶端
  • 當我們解析和處理完使用者請求報文訊息之後
  • 伺服器開始將具體的 要傳送給客戶端的資料 根據 HTTP 協議規範 封裝成 HTTP協議響應報文
  • 響應頭、響應欄位、響應體
  • 該資料說白了也是具有特定格式的字串而已,最終這個字串也要轉換成二進位制資料傳送到客戶端
  • 傳送到客戶端也是通過 Socket(ip地址、埠號) 傳送到了該客戶單
  • 使用者瀏覽器接收到響應後開始渲染html、css,解析和執行 JavaScript 程式碼
  • 當客戶端解析到 伺服器傳送過來的 二進位制資料
  • 客戶端瀏覽器也會將 二進位制資料 根據編碼型別解析成 字串
  • 然後根據 HTTP 協議,解析伺服器傳送過來的 響應報文
  • 然後根據響應報文中的報文內容(報文頭、報文體)做具體的解析
  • 當瀏覽器在解析的過程中遇到 一些靜態資源時,會再次重複上面的步驟