【筆記:網路】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
- 並非技術或協定標準、而是資訊性內容
- Standard
什麼是 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
- 3
- 於 2022 年的 RFC 9114 發布、成為標準
- 進一步改善性能與安全性
- 基於 QUIC
推薦學習資源
- NotFalse 技術客
HTTP 教學- 易讀、基礎,涵蓋許多方面
- schaepher - 博客园
【RFC】HTTP/1.1 系列(7230 - 7235)- 翻譯為簡中和加上一些理解說明
- 目前只寫到 RFC 7231 的 Response Status Codes,但還是值得把在此之前的東西看過、學起來
- RFC 7230 ~ 7235
- 雖然很硬……,但如果能吸收,直接去讀標準文件最紮實
參考資料
- ChatGPT
- RFC 2616: Hypertext Transfer Protocol – HTTP/1.1
- HTTP/1.1 - 超文本傳輸協定 (Hypertext Transfer Protocol) - NotFalse 技術客
- 【RFC】HTTP/1.1 系列(7230 - 7235) - schaepher - 博客园
- HTTP/1.1 的更新 – Gea-Suan Lin’s BLOG
延伸閱讀
- 如何閱讀 RFC 文件 - HackMD
- HTTP/3 傳輸協議 - QUIC 原理簡介 | by Chester Chu | Medium
- SSL 與 TLS 的比較 – 通訊協定之間的差異 – AWS
後記閒聊
某次面試遇到一位面試官、是技術主管,拿著我的考卷一題一題問我為何這樣作答、延伸再問一些問題、並告訴我哪邊有錯或是可以再設計得更好。那次學到了許多技術知識、也得到一些學習方向的想法,滿喜歡那樣的氛圍、很感謝他。
延伸的問題中,有一題是「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 文件……