?
一、HTTP1.0
HTTP
協(xié)議的第二個版本,第一個在通訊中指定版本號的HTTP協(xié)議版本
HTTP 1.0
?瀏覽器與服務器只保持短暫的連接,每次請求都需要與服務器建立一個TCP
連接
服務器完成請求處理后立即斷開TCP
連接,服務器不跟蹤每個客戶也不記錄過去的請求
簡單來講,每次與服務器交互,都需要新開一個連接
例如,解析html
文件,當發(fā)現(xiàn)文件中存在資源文件的時候,這時候又創(chuàng)建單獨的鏈接
最終導致,一個html
文件的訪問包含了多次的請求和響應,每次請求都需要創(chuàng)建連接、關(guān)系連接
這種形式明顯造成了性能上的缺陷
如果需要建立長連接,需要設(shè)置一個非標準的Connection字段?Connection: keep-alive
二、HTTP1.1
在HTTP1.1
中,默認支持長連接(Connection: keep-alive
),即在一個TCP連接上可以傳送多個HTTP
請求和響應,減少了建立和關(guān)閉連接的消耗和延遲
建立一次連接,多次請求均由這個連接完成
這樣,在加載html
文件的時候,文件中多個請求和響應就可以在一個連接中傳輸
同時,HTTP 1.1
還允許客戶端不用等待上一次請求結(jié)果返回,就可以發(fā)出下一次請求,但服務器端必須按照接收到客戶端請求的先后順序依次回送響應結(jié)果,以保證客戶端能夠區(qū)分出每次請求的響應內(nèi)容,這樣也顯著地減少了整個下載過程所需要的時間
同時,HTTP1.1
在HTTP1.0
的基礎(chǔ)上,增加更多的請求頭和響應頭來完善的功能,如下:
- 引入了更多的緩存控制策略,如If-Unmodified-Since, If-Match, If-None-Match等緩存頭來控制緩存策略
- 引入range,允許值請求資源某個部分
- 引入host,實現(xiàn)了在一臺WEB服務器上可以在同一個IP地址和端口號上使用不同的主機名來創(chuàng)建多個虛擬WEB站點
并且還添加了其他的請求方法:put
、delete
、options
...
三、HTTP2.0
而HTTP2.0
在相比之前版本,性能上有很大的提升,如添加了一個特性:
- 多路復用
- 二進制分幀
- 首部壓縮
- 服務器推送
多路復用
HTTP/2
?復用TCP
連接,在一個連接里,客戶端和瀏覽器都可以同時發(fā)送多個請求或回應,而且不用按照順序一一對應,這樣就避免了”隊頭堵塞”
二進制分幀
幀是HTTP2
通信中最小單位信息
HTTP/2
?采用二進制格式傳輸數(shù)據(jù),而非?HTTP 1.x
的文本格式,解析起來更高效
將請求和響應數(shù)據(jù)分割為更小的幀,并且它們采用二進制編碼
HTTP2
中,同域名下所有通信都在單個連接上完成,該連接可以承載任意數(shù)量的雙向數(shù)據(jù)流
每個數(shù)據(jù)流都以消息的形式發(fā)送,而消息又由一個或多個幀組成。多個幀之間可以亂序發(fā)送,根據(jù)幀首部的流標識可以重新組裝,這也是多路復用同時發(fā)送數(shù)據(jù)的實現(xiàn)條件
首部壓縮
HTTP/2
在客戶端和服務器端使用“首部表”來跟蹤和存儲之前發(fā)送的鍵值對,對于相同的數(shù)據(jù),不再通過每次請求和響應發(fā)送
首部表在HTTP/2
的連接存續(xù)期內(nèi)始終存在,由客戶端和服務器共同漸進地更新
服務器推送
HTTP2
引入服務器推送,允許服務端推送資源給客戶端
服務器會順便把一些客戶端需要的資源一起推送到客戶端,如在響應一個頁面請求中,就可以隨同頁面的其它資源
免得客戶端再次創(chuàng)建連接發(fā)送請求到服務器端獲取
這種方式非常合適加載靜態(tài)資源
四、總結(jié)
HTTP1.0:
- 瀏覽器與服務器只保持短暫的連接,瀏覽器的每次請求都需要與服務器建立一個TCP連接
HTTP1.1:
- 引入了持久連接,即TCP連接默認不關(guān)閉,可以被多個請求復用
- 在同一個TCP連接里面,客戶端可以同時發(fā)送多個請求
- 雖然允許復用TCP連接,但是同一個TCP連接里面,所有的數(shù)據(jù)通信是按次序進行的,服務器只有處理完一個請求,才會接著處理下一個請求。如果前面的處理特別慢,后面就會有許多請求排隊等著
- 新增了一些請求方法
- 新增了一些請求頭和響應頭
HTTP2.0:文章來源:http://www.zghlxwxcb.cn/news/detail-844244.html
- 采用二進制格式而非文本格式
- 完全多路復用,而非有序并阻塞的、只需一個連接即可實現(xiàn)并行
- 使用報頭壓縮,降低開銷
- 服務器推送
參考文獻
- https://zh.wikipedia.org/wiki/%E8%B6%85%E6%96%87%E6%9C%AC%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE#HTTP/1.0
- https://www.jianshu.com/p/52d86558ca57
- https://segmentfault.com/a/1190000016496448
- https://zhuanlan.zhihu.com/p/26559480
如果對您有所幫助,歡迎您點個關(guān)注,我會定時更新技術(shù)文檔,大家一起討論學習,一起進步。
?文章來源地址http://www.zghlxwxcb.cn/news/detail-844244.html
到了這里,關(guān)于說說 HTTP1.0/1.1/2.0 的區(qū)別?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!