878 字
4 分鐘
【網路】HTTP 1.1 協議與它的 RFC 標準文件

  記錄一下自己從 RFC 2616 文件出發探索、學到了什麼。

什麼是 RFC 文件?#

  • 由 IETF(網際網路工程任務組,Internet Engineering Task Force)發布的文檔,包含許多與網際網路相關的資訊,也包含通訊協定的標準
  • 每篇 RFC 文件都有編號
  • 官方網站是 RFC Editor,可在此查看每篇 RFC 文件
    • 有個非官方的網站 IETF Datatracker,整理了文件以及更多相關資訊,介面也比較漂亮一點
  • status
    • Standard
      • 正式標準的發展階段。
      • 依序有「Proposed Standard」、「Draft Standard」、「Internet Standard」,越趨完善
    • Experimental
      • 仍於實驗階段
    • Informational
      • 並非技術或協定標準、而是資訊性內容

什麼是 HTTP?#

  • HTTP 的全名是「HyperText Transfer Protocol」
  • 這是一種網路通訊協定(protocal)
    • 在網路七層模型(OSI)中,屬於第七層「應用層(Application Layer)」
  • HTTP 是網路瀏覽器中最常使用的基礎通訊協定
    • 補充:HTTPS 是 HTTP 加上 SSL/TLS 加密,是目前要求較高安全性時主流使用的通訊協定
    • 補充:其他常見的通訊協定還有 FTP、WebSocket 等等

HTTP 的版本#

  • 1.1
    • HTTP 中目前最主流、基礎的版本,網站伺服器、網頁瀏覽器都支持
    • 1999 年成為正式標準
    • RFC 標準文件
    • 2014 年,RFC 7230 ~ 7235 取代了 RFC 2616
      • 拆分為多篇,做更詳細的說明
      • 也有一些更新
    • 2022 年,RFC 9110 ~ 9112 取代了 RFC 7230 ~ 7235
  • 2
    • 於 2015 年的 RFC 7540 發布、成為標準
    • 改善性能,比如引進 HPACK 壓縮 Header 的容量、加快傳輸速度
    • 2022 年,RFC 9113 取代了 RFC 7540
  • 3
    • 於 2022 年的 RFC 9114 發布、成為標準
    • 進一步改善性能與安全性
    • 基於 QUIC

推薦學習資源#

參考資料#

延伸閱讀#

後記閒聊#

  某次面試遇到一位面試官、是技術主管,拿著我的考卷一題一題問我為何這樣作答、延伸再問一些問題、並告訴我哪邊有錯或是可以再設計得更好。那次學到了許多技術知識、也得到一些學習方向的想法,滿喜歡那樣的氛圍、很感謝他。
  延伸的問題中,有一題是「Request Header 中有什麼?」,我當時沒能答出「通訊協定(HTTP)」這個重點。之後我又寄了一封 email 感謝他、並再向他請教這個問題,他還回信給我、分享了這個連結:RFC 2616: Hypertext Transfer Protocol — HTTP/1.1,指向「Request」章節那頁。
  感到非常感激,於是決定趁著這份心情、把這些探索整理成筆記。

2025/01/24 更新#

  在研究 Tomcat 時,在 Specifications - Apache Tomcat - Apache Software Foundation 發現竟然 2022 年還有更新版的 RFC 文件……