蜜蜂采集器2308版本對HTTP/2和HTTP/3的功能支持
蜜蜂采集器的使用教程 - 對HTTP/2和HTTP/3的功能支持
HTTP的發(fā)展歷史
HTTP(超文本傳輸協(xié)議)是萬維網(wǎng)(World Wide Web)的基礎(chǔ)協(xié)議。自 Tim Berners-Lee 博士和他的團隊在 1989-1991 年間創(chuàng)造出它以來,HTTP 已經(jīng)發(fā)生了太多的變化,在保持協(xié)議簡單性的同時,不斷擴展其靈活性。如今,HTTP 已經(jīng)從一個只在實驗室之間交換文件的早期協(xié)議進化到了可以傳輸圖片,高分辨率視頻和 3D 效果的現(xiàn)代復(fù)雜互聯(lián)網(wǎng)協(xié)議。
最早版本是1991年發(fā)布的0.9版。最初版本的 HTTP 協(xié)議并沒有版本號,后來它的版本號被定位在 0.9 以區(qū)分后來的版本。HTTP/0.9 極其簡單:請求由單行指令構(gòu)成,以唯一可用方法 GET 開頭,其后跟目標(biāo)資源的路徑(一旦連接到服務(wù)器,協(xié)議、服務(wù)器、端口號這些都不是必須的)。響應(yīng)也極其簡單:只包含響應(yīng)文檔本身。跟后來的版本不同,HTTP/0.9 的響應(yīng)內(nèi)容并不包含 HTTP 頭。這意味著只有 HTML 文件可以傳送,無法傳輸其他類型的文件。也沒有狀態(tài)碼或錯誤代碼。一旦出現(xiàn)問題,一個特殊的包含問題描述信息的 HTML 文件將被發(fā)回,供人們查看。
HTTP/1.0 在 HTTP/0.9 的基礎(chǔ)上增加了很多新特性。例如:請求和響應(yīng)消息都包含了版本號;請求方法不再僅限于 GET;引入了狀態(tài)碼和錯誤代碼;引入了 HTTP 頭部;支持多種類型文件傳輸?shù)鹊取?/p>
HTTP/1.1 消除了大量歧義內(nèi)容并引入了多項改進:連接可以復(fù)用,節(jié)省了多次打開 TCP 連接加載網(wǎng)頁文檔資源的時間;增加管線化技術(shù),允許在第一個應(yīng)答被完全發(fā)送之前就發(fā)送第二個請求,以降低通信延遲;支持響應(yīng)分塊;引入額外的緩存控制機制;引入內(nèi)容協(xié)商機制,包括語言、編碼、類型等,并允許客戶端和服務(wù)器之間約定以最合適的內(nèi)容進行交換;憑借 Host 標(biāo)頭,能夠使不同域名配置在同一個 IP 地址的服務(wù)器上。
HTTP/2 是 HTTP 協(xié)議的第二個版本,于 2015 年 5 月正式標(biāo)準(zhǔn)化。它是 HTTP/1.1 的升級版,旨在提高性能和安全性。HTTP/2 的主要特點是:
多路復(fù)用:HTTP/2 可以在一個連接上同時傳輸多個請求和響應(yīng),而不需要按照順序一個一個地發(fā)送。
二進制分幀:HTTP/2 將所有傳輸?shù)男畔⒎指顬楦〉南⒑蛶⒉捎枚M制格式對它們進行編碼。
首部壓縮:HTTP/2 使用 HPACK 算法對首部進行壓縮,減少了首部的大小,從而降低了網(wǎng)絡(luò)延遲。
服務(wù)器推送:HTTP/2 允許服務(wù)器在客戶端請求之前將響應(yīng)推送到客戶端緩存中。
這里,不得不提到SPDY。SPDY是一種開放的網(wǎng)絡(luò)傳輸協(xié)議,由Google開發(fā),用來傳送網(wǎng)頁內(nèi)容。它是基于傳輸控制協(xié)議(TCP)的應(yīng)用層協(xié)議。SPDY也就是HTTP/2的前身。Google最早是在Chromium中提出的SPDY協(xié)議。SPDY并不是一個標(biāo)準(zhǔn)協(xié)議,但SPDY的開發(fā)組推動SPDY成為正式標(biāo)準(zhǔn),而成為了互聯(lián)網(wǎng)草案。后來SPDY未能單獨成為正式標(biāo)準(zhǔn),而http2即基于SPDY/3草案進行一些修改之后發(fā)布了http2的draft-00。
HTTP/3 是 HTTP 的下一個主要版本,它與 HTTP 早期版本具有相同的語義,但在傳輸層部分使用 QUIC 而不是 TCP。到 2022 年 10 月,26% 的網(wǎng)站正在使用 HTTP/3。
HTTP/3是基于QUIC協(xié)議的,QUIC是一個通用的傳輸層網(wǎng)絡(luò)協(xié)議,最初由Google的Jim Roskind設(shè)計,2012年實現(xiàn)并部署,2013年隨著實驗范圍的擴大而公開發(fā)布,并向IETF提交。雖然長期處于互聯(lián)網(wǎng)草案階段,但在從Chrome瀏覽器到Google服務(wù)器的內(nèi)部部署中得到了廣泛的使用。QUIC是基于UDP協(xié)議的,而UDP是不可靠傳輸協(xié)議,但QUIC通過自己的可靠性機制來保證數(shù)據(jù)傳輸?shù)目煽啃浴?/p>
簡單來說。在HTTP/1.x階段,單個網(wǎng)頁頁面中大量的HTTP請求需要逐個請求,或多個連接下的逐個請求。HTTP/2主要解決多路復(fù)用,從而加快網(wǎng)絡(luò)請求與相應(yīng),目前,Nginx等已經(jīng)支持HTTP/2。隨著移動互聯(lián)網(wǎng)的普及,HTTP/3主要解決蜂窩網(wǎng)絡(luò)以及WIFI的穩(wěn)定性問題,QUIC即以UDP替代TCP,避免頻繁的TCP連接握手,從而加快網(wǎng)絡(luò)訪問。
2308版本對HTTP/2和HTTP/3的功能支持
2308版本中,我們增加了對HTTP/2和HTTP/3的功能支持。目前,HTTP/2已經(jīng)較為成熟,很多HTTP服務(wù)器都支持了HTTP/2。但HTTP/3目前還未完全普及,本軟件對其支持也不是很穩(wěn)定,如果指定HTTP/3協(xié)議,可能存在程序崩潰的情況。
設(shè)置HTTP協(xié)議版本。不設(shè)置的情況下,系統(tǒng)優(yōu)先使用HTTP/2;如果服務(wù)器不支持HTTP/2,則會嘗試HTTP/1.1。支持以下HTTP協(xié)議版本選項:
系統(tǒng)自動選擇:系統(tǒng)自動選擇合適的HTTP協(xié)議版本。
HTTP/1.0。
HTTP/1.1。
HTTP/2。
https://
的請求使用HTTP/2,http://
的請求使用HTTP/1.1。HTTP/2,不使用HTTP/1.1 Upgrade。
HTTP/3。如果不支持,則自動切換到HTTP/2 或 HTTP/1。僅針對
https://
請求。HTTP/3。不自動切換到HTTP/2 或 HTTP/1。僅針對https://請求。

效果如下:

參考:?HTTP 的發(fā)展 - HTTP | MDN Web 開發(fā)技術(shù)