Http 1.0
發(fā)布年份:1996 非官方標(biāo)準(zhǔn)
-
短鏈接:每一次請(qǐng)求都對(duì)應(yīng)一次TCP的連接與釋放
- 開銷大:每次請(qǐng)求都要TCP的連接與釋放
- 隊(duì)頭阻塞:每次請(qǐng)求都必須等上一次請(qǐng)求獲得響應(yīng)之后,才可以發(fā)送;效率低下
-
緩存:在HTTP1.0中主要使用header里的協(xié)商緩存 last-modified(上次修改時(shí)間),if-modified-since(是否修改),強(qiáng)緩存 Expires(緩存過(guò)期時(shí)間);減少了不必要的網(wǎng)絡(luò)傳輸
Http 1.1
發(fā)布年份:1997 官方標(biāo)準(zhǔn),并長(zhǎng)期使用
- 長(zhǎng)連接:HTTP1.1增加Connection字段,通過(guò)設(shè)置Keep-Alive保持HTTP連接不斷開。避免每次客戶端與服務(wù)器請(qǐng)求都要重復(fù)建立釋放建立TCP連接。提高了網(wǎng)絡(luò)的利用率。
如果客戶端想關(guān)閉HTTP連接,可以在請(qǐng)求頭中攜帶Connection:false來(lái)告知服務(wù)器關(guān)閉請(qǐng)求。
- 管道化(pipelining):HTTP1.1支持請(qǐng)求管道化(pipelining)。TCP連接之后,Http可以像流水線一樣,連續(xù)發(fā)送多次請(qǐng)求,而不必等待上一次請(qǐng)求響應(yīng)之后再發(fā)送
需要注意的是:服務(wù)器必須按照客戶端請(qǐng)求的先后順序依次回送相應(yīng)的結(jié)果,以保證客戶端能夠區(qū)分出每次請(qǐng)求的響應(yīng)內(nèi)容。也就是說(shuō),HTTP管道化可以讓我們把先進(jìn)先出隊(duì)列從客戶端(請(qǐng)求隊(duì)列)遷移到服務(wù)端(響應(yīng)隊(duì)列)。
可見,HTTP1.1還是無(wú)法解決隊(duì)頭阻塞的問(wèn)題。同時(shí)“管道化”技術(shù)存在各種各樣的問(wèn)題,所以很多瀏覽器要么根本不支持它,要么直接默認(rèn)關(guān)閉,并且開啟的條件很苛刻……而且好像實(shí)際也沒有什么用處。
由此可見,管線化并不是真正的并行的傳輸,現(xiàn)階段的瀏覽器廠商采取了另外一種做法,它允許我們打開多個(gè)TCP的會(huì)話。eg.Chrome一般是6個(gè)
- 緩存:加入了一些新的字段如cache-control,支持?jǐn)帱c(diǎn)傳輸
- Host 標(biāo)頭:使得一個(gè)服務(wù)器能夠用來(lái)創(chuàng)建多個(gè)Web站點(diǎn)
Http 2.0
發(fā)布年份:2015 官方標(biāo)準(zhǔn),逐漸普及中
- 頭部壓縮: HTTP2.0會(huì)壓縮(Header)部分;如果同時(shí)多個(gè)請(qǐng)求其頭部一樣或相似,那么協(xié)議會(huì)消除重復(fù)部分。
利用HPAK算法:在客戶端和服務(wù)器同時(shí)維護(hù)一張頭信息表,所有字段都會(huì)存入這個(gè)表,生成一個(gè)索引號(hào),就不用重復(fù)發(fā)送同樣字段了,只發(fā)送索引號(hào),減少數(shù)據(jù)量提高速度
-
二進(jìn)制格式: HTTP/1.0和HTTP/1.1中,報(bào)文都是純文本的格式簡(jiǎn)單易讀;而在2.0中采用了二進(jìn)制的格式,不再可讀;數(shù)據(jù)以數(shù)據(jù)流(stream)的形式以字節(jié)單位發(fā)送,數(shù)據(jù)包可以不按順序發(fā)送
-
多路復(fù)用協(xié)議: 真正的并行的請(qǐng)求能在同一個(gè)鏈接中處理,移除了 HTTP/1.x 中順序和阻塞的約束。
在HTTP2.0中,對(duì)頭阻塞是發(fā)生在TCP層面
- 服務(wù)端推送: 服務(wù)端不再是被動(dòng)地響應(yīng),可以主動(dòng)向客戶端發(fā)送消息、推送額外的資源。
在實(shí)際中應(yīng)用的也比較少
Http 3.0
發(fā)布年份:2022 官方文檔 逐漸普及中文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-685731.html
- QUIC協(xié)議: 而QUIC是基于 UDP 協(xié)議,不需要三次連接進(jìn)行握手,而且也會(huì)縮短 TLS 建立連接的時(shí)間。解決了隊(duì)頭阻塞問(wèn)題。
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-685731.html
參考資料
- https://blog.csdn.net/weixin_45910068/article/details/126290248
- https://xiaolincoding.com/network/2_http/http_interview.html#http-1-1%E3%80%81http-2%E3%80%81http-3-%E6%BC%94%E5%8F%98
- https://zhuanlan.zhihu.com/p/266578819
- https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP
到了這里,關(guān)于Http 1.0 1.1 2.0 3.0 版本差別的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!