《HTTP權威指南》筆記

簡介

2020年春節假期被被新型冠狀病毒阻止了,呆在家裏太無聊了。就讀書充實自己吧!這份筆記後續還會不斷補充完整,畢竟一本書不是一天就能看完的。原文鏈接

HTTP中資源的定義方式

  1. URI(Uniform Resource Identifier): 統一資源標識符
  2. URL(Uniform Resource Locator): 統一資源定位符
  3. URN(Uniform Resource Name): 用特定命名空間的名字標識資源

三者關係型如下:

URI是一類更通用的資源標識符,URL是它的一個子集。URI是一個通用概念,由兩個主要的子集URL和URN構成,URL是通過描述資源的位置來標識資源的,URN是通過名字來識別資源的,與它們所處位置無關。

HTTP網絡協議棧

瀏覽器從遠程服務器獲取資源的大致流程

報文

報文分爲請求報文和響應報文,HTTP報文包含三個部分

  1. 起始行:
  2. 在請求報文中用來說明要做些什麼
  3. 在響應報文中說明出現了什麼情況
  4. 首部字段:
  5. 在響應報文中用來說明需要的MIME類型
  6. 在響應報文中說明了返回文檔的MIME類型
  7. 主體
  8. 在請求報文中說明要傳遞的請求參數
  9. 咋響應報文中說明服務器返回內容

TCP/IP

HTTP 是個應用層協議。HTTP無序操作網絡通信的具體細節,它把互聯網的細節都交給了通用、可靠的因特網傳輸協議TCP/IP,TCP/IP 提供了:

  1. 無差錯的數據傳輸
  2. 按序傳輸(數據總是按照發送的順序到達)
  3. 未分段的數據流(可以在任意時刻一任意尺寸將數據發送出去)

URL的三個組成部分

https://www.haicheng.website/passages/about-centos-firewall/

  • https: 協議
  • www.haicheng.website: 主機(端口爲80)
  • passages/about-centos-firewall/ : 資源路徑

HTTP狀態碼

版本號

在比較HTTP版本時,每個數字都必須進行單獨比較,以便確定那個版本更高,比如:HTTP/2.22就比HTTP/3的版本要高,因爲22大於3

HTTPS和HTTP在網絡協議棧上的位置

HTTP就是"HTTP over TCP over IP"這個"協議棧"中的最頂層,其安全版本的HTTPS就是在HTTP和TCP之間插入了一個密碼加密層。

TCP是如何傳輸數據的

  1. HTTP以流的形式將報文數據的內容通過一條打開的TCP連接按序傳輸
  2. TCP收到數據流之後,將其砍成段
  3. 將數據段封裝在IP分組中
  4. 通過因特網傳輸

TCP是如何保證連接的正確性

通過4個值確保TCP建立正確的連接

  1. 源IP
  2. 源端口
  3. 目的IP
  4. 目的端口

有關TCP的性能考慮

  • 影響HTTP時延的幾個因素:

    • DNS
    • TCP建立連接和建立連接之後服務器返回的應答
    • 服務器對業務的處理
    • 服務器回送HTTP響應
  • 影響TCP時延的幾個因素:(後面細看)

    • TCP連接建立握手
    • TCP慢啓動擁塞控制
    • 數據聚集的Nagle算法
    • 用於捎帶確認的TCP延時確認算法
    • TIME_WAIT時延和端口耗盡

操作和優化連接的HTTP技術

什麼是串行事務時延?

在一個網頁中包含3個圖片,瀏覽器需要發起四次HTTP事務完成頁面加載;每個事務都需要一條新的連接,那麼連接時延和慢啓動時延就會疊加起來

在這裏插入圖片描述

解決串行事務時延 的技術:

  1. 並行連接:通過多條TCP連接發起並行HTTP請求
  2. 持久連接:重用TCP連接,以消除連接及關閉時延
  3. 管道化連接:通過共享的TCP連接發起併發的HTTP請求
  4. 複用連接:交替傳送請求和響應報文

Web服務器會提供哪些服務?

  1. 建立連接
  • 如果客戶端已經打開了一條到服務器的持久連接,可以使用那條連接來發送它的請求。否則客戶端需要打開一條新的到服務器的連接;當客戶端與服務器建立連接之後,服務器判斷另一端是哪個客戶端並解析出IP地址並做好監視連接上的數據傳輸。(此處會用到客戶端識別技術)
  1. 接收連接
    • 完成請求報文讀取
    • 連接的輸入/輸出處理結構:
      • 單線程Web服務器
      • 多進程及多線程Web服務器
      • 複用I/O的服務器
      • 複用的多線程Web服務器
        在這裏插入圖片描述
  2. 處理請求
  3. 訪問資源
    • 資源映射
  4. 構建響應
    • 若Web服務器識別出了資源,就執行請求中描述的動作,並返回響應報文
    • 重定向用於以下情況:
      • 永久刪除的資源 狀態碼:301
      • 臨時刪除的資源 狀態碼:33或307
      • URL增強 狀態碼:33或307
      • 負載均衡 狀態碼:33或307
      • 服務器關聯 狀態碼:33或307
      • 規範目錄請求
  5. 發送響應
    • 對於持久連接:正確計算Content-Length,併發送響應
    • 對於非持久連接:服務器端發送響應後,關閉連接
  6. 記錄事務處理過程
    • 記錄請求日誌
      在這裏插入圖片描述
發佈了47 篇原創文章 · 獲贊 11 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章