超文本傳輸協(xié)議(HTTP)是萬維網(wǎng)上數(shù)據(jù)通信的基礎(chǔ)。多年來,它不斷發(fā)展以滿足現(xiàn)代網(wǎng)絡(luò)應(yīng)用日益增長(zhǎng)的需求。在這篇文章中,我們將探討HTTP/1.1、HTTP/2和HTTP/3之間的區(qū)別,討論每個(gè)版本如何在其前身的基礎(chǔ)上進(jìn)行改進(jìn)以提高網(wǎng)絡(luò)性能和用戶體驗(yàn)。
什么是HTTP?
HTTP(超文本傳輸協(xié)議)是在世界范圍內(nèi)的網(wǎng)絡(luò)上進(jìn)行數(shù)據(jù)通信的方式(不要與互聯(lián)網(wǎng)混淆,兩者是有區(qū)別的)。有3個(gè)主要版本,我們將在這里逐一介紹。
簡(jiǎn)單地說,該協(xié)議定義了瀏覽器如何與服務(wù)器對(duì)話以來回傳遞數(shù)據(jù)。在所有版本的協(xié)議中,瀏覽器會(huì)提出一些要求(”請(qǐng)求”),而服務(wù)器會(huì)發(fā)回?cái)?shù)據(jù)(”響應(yīng)”)。這是一個(gè)簡(jiǎn)單的概念,但隨著時(shí)間的推移,事情變得越來越復(fù)雜,作為網(wǎng)絡(luò)開發(fā)人員,我們必須了解該協(xié)議的后期版本有何不同。
第1節(jié):HTTP/1.1–基礎(chǔ)
HTTP/1.1于1997年推出,是對(duì)最初的HTTP/1.0的修訂,很快成為網(wǎng)絡(luò)的標(biāo)準(zhǔn)協(xié)議。今天開發(fā)者熟悉的許多功能都是在HTTP/1.1中引入的。HTTP/1.1的一些關(guān)鍵改進(jìn)和功能包括:
- 持久連接:與HTTP/1.0不同的是,HTTP/1.1在每個(gè)請(qǐng)求-響應(yīng)周期后都會(huì)關(guān)閉連接,而HTTP/1.1引入了持久連接,允許在一個(gè)連接上發(fā)送多個(gè)請(qǐng)求和響應(yīng),減少延遲并提高性能。
- Pipelining:HTTP/1.1還引入了流水線的概念,它允許在一個(gè)連接上發(fā)送多個(gè)請(qǐng)求,而不需要等待對(duì)前一個(gè)請(qǐng)求的響應(yīng)。這提高了效率,但仍然受到 “線頭阻塞 “問題的困擾,即如果第一個(gè)請(qǐng)求需要太長(zhǎng)時(shí)間才能完成,那么后續(xù)請(qǐng)求的處理就會(huì)被推遲。
- 分塊傳輸編碼:這個(gè)功能允許服務(wù)器以較小的塊來發(fā)送響應(yīng),而不是等待整個(gè)響應(yīng)生成后再發(fā)送給客戶端。這提高了網(wǎng)絡(luò)應(yīng)用的感知性能。
- 緩存控制機(jī)制:HTTP/1.1引入了各種緩存控制頭,以管理客戶端如何緩存和重新驗(yàn)證資源,通過減少冗余數(shù)據(jù)傳輸?shù)男枰獊硖岣呔W(wǎng)絡(luò)性能。
熟悉HTTP協(xié)議的人一般會(huì)對(duì)HTTP 1.1最為熟悉。在文件、資產(chǎn)和數(shù)據(jù)的傳輸方面,它的行為是大多數(shù)網(wǎng)絡(luò)開發(fā)者所期望的那樣。
HTTP 1.1是一個(gè)簡(jiǎn)單的請(qǐng)求和響應(yīng)模型。瀏覽器要求提供一個(gè)文件,而服務(wù)器則對(duì)此作出回應(yīng)。當(dāng)你考慮到一個(gè)普通的網(wǎng)頁可能有幾十種資產(chǎn)(圖片、樣式表、腳本等)時(shí),這就導(dǎo)致了在一個(gè)鏈條上有很多的請(qǐng)求和響應(yīng)。
HTTP/1.1是一個(gè)相當(dāng)簡(jiǎn)單的概念。讓我們看看一個(gè)請(qǐng)求是如何工作的:
- 你導(dǎo)航到一個(gè)網(wǎng)站,在這個(gè)例子中,我們說accreditly.io。你的瀏覽器向服務(wù)器發(fā)送了一個(gè)GET請(qǐng)求:
GET accreditly.io
- 服務(wù)器收到請(qǐng)求和響應(yīng)的文件:
200 OK <html> <head> <title>Accreditly - Web Development Certifications</title> [...]
- 在該文件中,可能有各種資產(chǎn)。像圖片、樣式表(CSS文件)和JavaScript資產(chǎn)(.js文件)。你的瀏覽器讀取文檔,并對(duì)隊(duì)列中的每個(gè)資產(chǎn)重復(fù)步驟1和2。
這是一個(gè)簡(jiǎn)單的流程,很容易理解,但這里有幾個(gè)問題:
- a. 線頭阻塞: 每個(gè)HTTP/1.x連接一次只能處理一個(gè)請(qǐng)求。這種限制常常導(dǎo)致網(wǎng)絡(luò)資源的低效使用,因?yàn)殡S后的請(qǐng)求必須等待前一個(gè)請(qǐng)求的完成。
- b. 缺少優(yōu)先級(jí): HTTP/1.x沒有提供一種對(duì)請(qǐng)求進(jìn)行優(yōu)先排序的方法,這可能導(dǎo)致不太重要的資源阻塞更重要的資源。
- c. 還有其他一些問題,比如發(fā)送的純文本標(biāo)題很大,尤其是在使用cookies時(shí)。
所有這些問題都有很大的性能影響,特別是在現(xiàn)代網(wǎng)絡(luò)上。
第2節(jié):HTTP/2–解決性能問題
2015年發(fā)布的HTTP/2,旨在解決HTTP/1.1的一些性能限制,同時(shí)保持與現(xiàn)有應(yīng)用程序的兼容性。HTTP/2的主要改進(jìn)和特點(diǎn)包括:
- 二進(jìn)制框架層:與基于文本的HTTP/1.1不同,HTTP/2使用二進(jìn)制框架層,允許更有效的解析,減少延遲,并降低數(shù)據(jù)傳輸方面的開銷。
- 復(fù)用:在HTTP/2中,由于新的二進(jìn)制構(gòu)架層,多個(gè)請(qǐng)求和響應(yīng)可以在一個(gè)連接上同時(shí)發(fā)送。這消除了HTTP/1.1中存在的線頭阻塞問題,使網(wǎng)絡(luò)資源得到了更有效的利用。
- 標(biāo)頭壓縮:HTTP/2使用HPACK,一種專門為HTTP頭設(shè)計(jì)的壓縮算法,以減少需要通過網(wǎng)絡(luò)發(fā)送的數(shù)據(jù)量。這減少了延遲,提高了網(wǎng)絡(luò)性能,特別是對(duì)于連接速度較慢的用戶。
- 服務(wù)器推送:該功能允許服務(wù)器在客戶明確要求之前將資源發(fā)送給客戶,可能會(huì)減少加載網(wǎng)頁所需的往返次數(shù)。
- 流優(yōu)先級(jí):HTTP/2允許客戶為不同的請(qǐng)求分配優(yōu)先級(jí),使服務(wù)器能夠更有效地分配資源,更快地提供高優(yōu)先級(jí)的內(nèi)容。
圖片來源:HTTP Archive
與過去相比,現(xiàn)在網(wǎng)頁的平均大小是巨大的。此外,網(wǎng)頁現(xiàn)在加載資產(chǎn)的速度遠(yuǎn)遠(yuǎn)超過了我們連接速度的提高。根據(jù)HTTP檔案,網(wǎng)頁上的圖像的平均尺寸增長(zhǎng)了8000%,圖像的數(shù)量也是如此,這還沒有涉及到JavaScript和其他資產(chǎn)。這是一個(gè)大問題。
那么,HTTP/2有什么幫助?
HTTP/2中引入了許多功能,人們關(guān)注的主要好處是多路復(fù)用。
網(wǎng)絡(luò)開發(fā)者享有的HTTP/2的主要好處之一是能夠復(fù)用資產(chǎn)。雖然協(xié)議本身的作用比這個(gè)簡(jiǎn)單的例子要多得多,但想象一下上面的單個(gè)網(wǎng)頁的例子,在HTTP 1.1中,資產(chǎn)是一次一個(gè)地被加載。有了HTTP/2,瀏覽器和服務(wù)器的溝通就更有效率了,在一個(gè)請(qǐng)求中請(qǐng)求文檔、資產(chǎn)、圖像、樣式表、腳本等,然后在服務(wù)器的一個(gè)響應(yīng)中接收它們。
圖片來源:Accreditly。
瀏覽器和服務(wù)器都需要支持HTTP/2才能進(jìn)行,盡管現(xiàn)在很少有不支持的情況。
HTTP/2依靠相同的底層協(xié)議來運(yùn)行: TCP。這既是積極的一面,也是消極的一面。因?yàn)镠TTP/1.x已經(jīng)使用了TCP,這意味著采用它要容易得多;瀏覽器不需要實(shí)現(xiàn)一個(gè)新的底層協(xié)議,而服務(wù)器可以繼續(xù)像現(xiàn)在這樣運(yùn)行,只需進(jìn)行一些調(diào)整就可以實(shí)現(xiàn)HTTP/2的功能。缺點(diǎn)是,TCP存在一些問題,特別是在高延遲和有損的網(wǎng)絡(luò)中。
第3節(jié):HTTP/3–進(jìn)入QUIC
HTTP/3是該協(xié)議的最新版本,目前正在進(jìn)行標(biāo)準(zhǔn)化和采用。它引入了重大變化,以解決HTTP/2的限制,并進(jìn)一步提高網(wǎng)絡(luò)性能。HTTP/3中最顯著的變化是用新的QUIC協(xié)議取代了傳輸控制協(xié)議(TCP)。QUIC是快速UDP互聯(lián)網(wǎng)連接的縮寫,是一個(gè)傳輸層協(xié)議,旨在提供比TCP更低的延遲和更好的性能。
HTTP/3的主要改進(jìn)和特點(diǎn)包括:
- QUIC協(xié)議:QUIC是一個(gè)比TCP更有效的傳輸層協(xié)議,提供更快的連接建立,內(nèi)置加密和更好的擁堵控制。它還消除了傳輸層的線頭阻塞,進(jìn)一步提高了網(wǎng)絡(luò)性能。
- 基于UDP的傳輸:與使用TCP的HTTP/1.1和HTTP/2不同,HTTP/3使用用戶數(shù)據(jù)報(bào)協(xié)議(UDP)。UDP是一個(gè)無連接協(xié)議,允許更快的數(shù)據(jù)傳輸和更低的延遲。然而,它不能保證可靠的交付,所以QUIC納入了自己的可靠性機(jī)制。
- 連接遷移:QUIC支持連接遷移,允許客戶在網(wǎng)絡(luò)接口之間切換(例如從Wi-Fi到移動(dòng)數(shù)據(jù))而不中斷正在進(jìn)行的連接。這對(duì)于可能經(jīng)常在不同網(wǎng)絡(luò)之間切換的移動(dòng)設(shè)備特別有用。
- 改進(jìn)安全性:QUIC包括基于傳輸層安全(TLS)1.3的內(nèi)置加密,確保客戶端和服務(wù)器之間的安全通信。該協(xié)議還提供額外的安全功能,如防止連接偽造和篡改。
圖片來源:Cloudflare關(guān)于HTTP/3的文章。
HTTP/3和QUIC聽起來不錯(cuò),對(duì)嗎?
嗯,是的,在理論上。問題是,對(duì)于瀏覽器和供應(yīng)商來說,實(shí)現(xiàn)這些功能是一個(gè)很大的任務(wù),更不用說與網(wǎng)絡(luò)基礎(chǔ)設(shè)施的兼容性問題。
許多大型網(wǎng)絡(luò)根本不支持UDP,因此,在UDP之上的新協(xié)議上輸送流量,可能是一個(gè)遙遠(yuǎn)的過程。
也就是說,像Cloudflare這樣的大公司正在為他們的客戶提供HTTP/3的支持,而且Chrome、Edge和Firefox等瀏覽器也有支持。你可能會(huì)注意到Safari不在這個(gè)名單中;蘋果公司在提供對(duì)新功能和協(xié)議的支持方面通常比較晚,而且經(jīng)常實(shí)施他們自己的版本的東西。根據(jù)CanIUse的說法,Safari對(duì)HTTP/3有部分支持,而且只對(duì)一些用戶可用。但請(qǐng)記住,HTTP/3還沒有正式發(fā)布,所以事情可能會(huì)發(fā)生變化。
第4節(jié):比較和采用
雖然HTTP/1.1已經(jīng)為網(wǎng)絡(luò)服務(wù)了很多年,但HTTP/2和HTTP/3提供的性能改進(jìn)是非常大的。HTTP/2和HTTP/3都解決了HTTP/1.1的局限性,并提供了對(duì)現(xiàn)代網(wǎng)絡(luò)應(yīng)用至關(guān)重要的功能,如多路復(fù)用、頭壓縮和改進(jìn)的安全性。
HTTP/2已經(jīng)被廣泛采用,大多數(shù)現(xiàn)代瀏覽器和網(wǎng)絡(luò)服務(wù)器都支持它。另一方面,HTTP/3仍處于采用的早期階段,但隨著協(xié)議的成熟和證明其價(jià)值,支持也在增加。
值得注意的是,HTTP/2和HTTP/3的設(shè)計(jì)是向后兼容HTTP/1.1的,因此網(wǎng)絡(luò)開發(fā)者可以逐步采用這些較新的協(xié)議而不破壞現(xiàn)有的應(yīng)用程序。實(shí)施HTTP/2和HTTP/3通常涉及更新網(wǎng)絡(luò)服務(wù)器和瀏覽器,而應(yīng)用程序代碼基本保持不變。
說到這里,從HTTP 1.1到HTTP/2的轉(zhuǎn)變相對(duì)來說是不痛不癢的,因?yàn)閮烧叨际亲谙嗤幕A(chǔ)技術(shù)和協(xié)議上: TCP。從HTTP/2到HTTP/3需要采用QUIC和UDP,以及對(duì)TLS 1.3的獨(dú)家支持,這是一種用于加密流量的技術(shù),目前還沒有被完全采用。
小結(jié)
HTTP從1.1版本到HTTP/2和HTTP/3的演變表明了為提高網(wǎng)絡(luò)性能和用戶體驗(yàn)所做的持續(xù)努力。每個(gè)版本都引入了新的功能和改進(jìn),以解決其前身的局限性,從而使網(wǎng)絡(luò)更快,更有效,更安全。文章來源:http://www.zghlxwxcb.cn/news/detail-821441.html
作為一個(gè)網(wǎng)絡(luò)開發(fā)者,必須了解這些進(jìn)展,并準(zhǔn)備在新技術(shù)得到更廣泛的支持時(shí)采用它們。通過了解HTTP/1.1、HTTP/2和HTTP/3之間的差異,你將更好地優(yōu)化你的網(wǎng)絡(luò)應(yīng)用,并為你的用戶提供盡可能好的體驗(yàn)。文章來源地址http://www.zghlxwxcb.cn/news/detail-821441.html
到了這里,關(guān)于HTTP/1, HTTP/2和HTTP/3三者之間有何區(qū)別?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!