HTTP
| 中文名 | 超文本傳輸協議 |
|---|---|
| 外文名 | HTTP |
| 工作層 | 應用層 |
| 基礎 | 架構於TCP之上(HTTP/3基於QUIC) |
| 適用瀏覽器 | Firefox、Google Chrome等 |
| 作用 | 規定WWW服務器與瀏覽器之間信息傳遞規範 |
萬維網(WWW)發源於歐洲日內瓦的歐洲核子研究組織(CERN)。1990年,HTTP成為WWW的支撐協議,當時由其創始人蒂姆·伯納斯‑李提出[1]。隨後,萬維網聯盟(W3C)成立,並聯合互聯網工程任務組(IETF)進一步完善和發布HTTP標準[2]。
HTTP是一種協議規範,記錄於文檔中,為實際通信程序提供標準。服務器端實現有 httpd、nginx 等,客戶端實現主要是Web瀏覽器,例如 Firefox、Google Chrome 等[3]。
HTTP自誕生以來經歷了多個版本的演進。
HTTP的初始版本(後稱0.9)於1991年發布。請求僅由一行`GET`方法加資源路徑組成,響應只包含HTML文件本身,無HTTP標頭和狀態碼[4]。
HTTP/1.0於1996年作為RFC 1945正式發布[4]。相比0.9版本,它引入了版本信息、狀態碼行、HTTP標頭以及`Content-Type`支持,使得協議可擴展並能傳輸多種文檔類型。但每個請求仍需新建TCP連接。
HTTP/1.1於1997年發布(RFC 2068,後由RFC 2616取代,現為RFC 7230系列)[5][6]。主要改進包括持久連接、新增PUT/PATCH/OPTIONS/DELETE等方法、擴展狀態碼、斷點續傳、支持TLS以及引入Host請求頭以支持同一IP上的多域名服務。
HTTP/2於2015年發布(RFC 7540,現為RFC 9113互聯網標準)[7][8]。它採用二進制分幀層,取代了之前的純文本格式,顯著提高了頁面加載性能。
HTTP/3基於QUIC協議(RFC 9114)[9],於2022年正式成為標準。它使用UDP傳輸,減少了連接建立時延,並已獲得大多數主流瀏覽器支持[3]。
HTTP採用請求/響應模型。客戶端向服務器發送請求,包含請求方法、URL、協議版本及請求頭等;服務器處理後返迴響應,包含協議版本、狀態碼(如200)、原因短語、響應首部字段及實體主體[6]。
HTTP請求和響應消息的首部以ASCII文本形式給出,消息內容則具有類似MIME的格式。請求報文由請求行、請求首部字段和內容實體構成;響應報文由狀態行、響應首部字段和實體主體構成[6]。
HTTP狀態碼指示請求結果,分為五類[10]:
- 1xx(信息性):請求已接收,繼續處理。
- 2xx(成功):請求已成功被服務器接收、理解並處理。
- 3xx(重定向):需進一步操作以完成請求。
- 4xx(客戶端錯誤):請求包含語法錯誤或無法完成。
- 5xx(服務器錯誤):服務器在處理請求時發生錯誤。
- ↑ Tim Berners‑Lee's original proposal
- ↑ 引用錯誤:無效的
<ref>標籤,未定義名稱為w3c的參考文獻內容文字。 - ↑ 3.0 3.1 MDN Web Docs - HTTP Overview
- ↑ 4.0 4.1 RFC 1945 - Hypertext Transfer Protocol -- HTTP/1.0(見附錄中對早期版本的說明)
- ↑ RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1
- ↑ 6.0 6.1 6.2 RFC 7230 - HTTP/1.1 Message Syntax and Routing
- ↑ RFC 7540 - Hypertext Transfer Protocol Version 2 (HTTP/2)
- ↑ RFC 9113 - HTTP/2
- ↑ RFC 9114 - HTTP/3
- ↑ RFC 7231 - HTTP/1.1 Semantics and Content