主頁 > 知識庫 > 淺析HTTP3

淺析HTTP3

熱門標簽:外呼系統(tǒng)怎么群發(fā)短信 鶴壁高頻外呼系統(tǒng)多少錢一個月 地圖標注項目幾個月 宿遷怎么辦理400電話 聯(lián)通外呼系統(tǒng)電腦app軟件 400電話辦理費用低 谷歌地圖標注日期 蘇州呼叫中心外呼系統(tǒng)哪家強 400電話申請到底哪家好

簡介

很多小伙伴可能還沉浸在HTTP1.1的世界無法自拔,但是時代的洪流已經(jīng)帶領(lǐng)我們來到了HTTP3的世界了。是的,你在橋上看風景,而橋邊的房子上有人正在看你。

為了不被時代所拋棄,今天給大家講解一下HTTP3的新特性。

HTTP成長介紹

HTTP的全名叫做超文本傳輸​​協(xié)議,是萬維網(wǎng)所基于的應(yīng)用層傳輸協(xié)議。最初的版本是HTTP 0.9,是在80年的后期產(chǎn)生的,后面在1996年升級到了1.0.

但是HTTP1.0滿足不了日益增長的物質(zhì)文化需求和對美好世界的向往。所以在1997年出現(xiàn)了HTTP1.1,隨后到2014年,HTTP1.1都一直都在更新。

然后到了2015年,為了適應(yīng)快速發(fā)送的web應(yīng)用和現(xiàn)代瀏覽器的需求,在Google的SPDY項目基礎(chǔ)上發(fā)展出了新的HTTP2協(xié)議。

又過了4年,在2019年,Google又開發(fā)出了一個新的協(xié)議標準QUIC協(xié)議,它就是HTTP3的基石,其目的是為了提高用戶與網(wǎng)站和API交互的速度和安全性。

不同HTTP協(xié)議解決的問題

不同HTTP協(xié)議解決的問題也是不同的,HTTP1.1有什么問題呢?

1.因為HTTP1.1一個連接中數(shù)據(jù)是順序傳輸?shù)?,所以會有Head-of-line Blocking的問題,如果前面是一個大的數(shù)據(jù)包,則會導(dǎo)致后續(xù)數(shù)據(jù)包的阻塞。

2.HTTP1.1無法對請求頭和cookie進行壓縮,所以傳輸效率會比較低。

3.為了保證緩沖區(qū)不會溢出,HTTP1.1有一個TCP慢啟動的功能,作為擁塞控制措施,協(xié)議反復(fù)探測網(wǎng)絡(luò)以計算可用容量,但是這樣就會導(dǎo)致多次數(shù)據(jù)的傳輸,從而導(dǎo)致消息的延時。

對于HTTP2來說,它使用二進制進行消息傳輸,并且將消息拆分成一個個的stream,在stream中又包含了多個frame,允許資源通過多路復(fù)用使用同一個連接發(fā)送,解決了行頭阻塞的問題,并且還支持數(shù)據(jù)包的優(yōu)先級和服務(wù)器推送。

但是HTTP2的服務(wù)器推送會導(dǎo)致應(yīng)用程序變得復(fù)雜,TCP級別的頭阻塞的問題在數(shù)據(jù)包丟失并且必須重新以正確的順序重新發(fā)送時,仍然可能發(fā)生。

要注意,HTTP/2是HTTP/1.1的擴展,而不是它的替代品。 應(yīng)用程序語義保持不變,具有相同的HTTP方法、狀態(tài)代碼、URI和標頭字段。 所以HTTP/2可以被用在任何使用HTTP/1.1的地方。

HTTP/2在客戶端和服務(wù)器之間使用單個TCP連接,該連接在交互期間保持打開狀態(tài)。

雖然HTTP/2支持并發(fā),但是過多的并發(fā)會導(dǎo)致HTTP/2服務(wù)器接收到大批量的請求,從而導(dǎo)致請求超時。

HTTP3和QUIC

HTTP/3的目標是通過解決HTTP/2的傳輸相關(guān)問題,在所有形式的設(shè)備上提供快速、可靠和安全的Web連接。為此,它使用了一種不同的傳輸層網(wǎng)絡(luò)協(xié)議,稱為QUIC,該協(xié)議最初由Google開發(fā)的。

感慨一下,雖然最近中國在系統(tǒng)的應(yīng)用方面有了一定的進步,但是看看這些底層的協(xié)議,還都是外國人搞出來的。

HTTP/2和HTTP/3的根本區(qū)別在于,HTTP/2底層使用的是TCP協(xié)議,而HTTP/3使用的是QUIC,而QUIC的底層使用的是UDP協(xié)議。

我們看一下HTTP/2和HTTP/3的協(xié)議棧對比:

TCP協(xié)議主要保證服務(wù)的可靠性和有序交付,但是TCP需要同握手來建立連接,這樣做是為了確??蛻舳撕头?wù)器都存在并且他們愿意并且能夠交換數(shù)據(jù)。但是,它也需要一個完整的網(wǎng)絡(luò)往返才能完成,然后才能在連接上完成任何其他操作。 如果客戶端和服務(wù)器端相距比較遠,那么就需要花費較多的時間來進行連接。

我們知道UDP是無連接的,所以它要比TCP簡單很多。它不需要TCP這種建立多次連接的步驟,只需要發(fā)送數(shù)據(jù)包出去就夠了。

所以使用QUIC的優(yōu)點就在于減少了系統(tǒng)的延時,適用于可以容忍一些數(shù)據(jù)丟包的情況,比如在線游戲、廣告競價、在線視頻、實時流等地方。

另外因為UDP支持廣播,所以HTTP3還適用于廣播應(yīng)用中,如精確時間協(xié)議和路由信息協(xié)議等。

另外HTTP3還可以用在物聯(lián)網(wǎng)、大數(shù)據(jù)和VR等方面。

既然HTTP3使用的是QUIC協(xié)議,那么QUIC到底是什么呢?

通常來說QUIC是一種通用傳輸協(xié)議,與TCP非常相似。為什么要打造一套新的協(xié)議呢?這是因為現(xiàn)有的TCP協(xié)議擴展起來非常困難,因為已經(jīng)有太多太多的設(shè)備使用了各種不同的TCP協(xié)議的版本,如果想直接在現(xiàn)有的TCP協(xié)議上進行擴展非常困難,因為需要給這么多臺設(shè)備進行升級幾乎是不可能完成的任務(wù)。

所以QUIC在選擇在UDP協(xié)議之上進行構(gòu)建。QUIC使用UDP,主要是因為希望能讓HTTP/3更容易部署,因為它已經(jīng)被互聯(lián)網(wǎng)上的所有設(shè)備所知并已實現(xiàn).

QUIC實際上就是在UDP基礎(chǔ)上重寫了TCP的功能,但是又比TCP更加智能,更高效的實現(xiàn)了TCP的核心功能。

接下來我們看下QUIC具體有哪些特征。

TLS1.3

TLS主要用來保證客戶端和服務(wù)器端在數(shù)據(jù)傳輸過程的數(shù)據(jù)安全性,可以對明文數(shù)據(jù)進行加密傳輸。TLS1.3是TLS協(xié)議的最新版本,在舊的版本如TLS1.2中,客戶端和服務(wù)器端的握手至少需要兩次網(wǎng)絡(luò)往返,但是在TLS1.3中,將其減少到只有一次往返。

雖然在HTTP/2中是支持無加密傳輸模式,但是默認情況下所有的現(xiàn)代瀏覽器都不支持這種模式,所以HTTP/2必須配合HTTPS一起使用。長遠看來HTTPS肯定是未來的趨勢,所以在QUIC中,直接就使用了TLS 1.3協(xié)議。QUIC本身就封裝了TLS1.3。

這樣做的好處就是QUIC沒辦法運行明文,所以更加的安全。并且QUIC內(nèi)置了加密協(xié)議,將傳輸和加密握手合二為一,節(jié)省了往返。

因為QUIC是全程加密的,所以對于某些ISP和中間網(wǎng)絡(luò)來說,無法再對網(wǎng)絡(luò)數(shù)據(jù)進行分析和統(tǒng)計,所以可能會限制它的使用。并且因為QUIC是單獨對每個數(shù)據(jù)包進行加密的,在高并發(fā)的情況下,可能會造成性能問題。

解決HoL阻塞

傳統(tǒng)的HTTP1.1和HTTP2底層協(xié)議是TCP,雖然HTTP2在應(yīng)用層可以將不同文件的數(shù)據(jù)拆分成一個個的stream放在同一個連接中進行傳輸。但是對于TCP本身來說,它并不知道這些stream屬于不同的文件,它會將其當成同一個文件。所以如果發(fā)送數(shù)據(jù)丟包的情況,TCP會重新發(fā)送所有的文件包。從而導(dǎo)致HOL阻塞的問題。

而QUIC更加細粒度一點,它可以在每個流的基礎(chǔ)上執(zhí)行丟包檢測和恢復(fù)邏輯。從而只會重發(fā)失敗的流,而不是整個文件。

連接的遷移

在TCP中,如果我想要建立客戶端和服務(wù)器端的連接,需要知道這4個元素:客戶端IP地址 + 客戶端端口 + 服務(wù)器IP地址 + 服務(wù)器端口。

如果這4個元素中有一個發(fā)送了變化,則需要重新建立TCP連接。并且需要根據(jù)應(yīng)用程序級協(xié)議,重新啟動進程中的操作。

比如你正在下載一個大的文件,但是網(wǎng)絡(luò)地址突然發(fā)生了變化,則可能需要重新請求該文件。

為了解決這個問題,QUIC引入了一個名為連接標識符(CID)的概念 。 每個連接都在上述4個元素中額外分配一個編號,用于標記客戶端和服務(wù)器端的唯一連接。

因為這個CID是由QUIC定義的,所以不會隨著網(wǎng)絡(luò)遷移的變化而變化。從而不需要新的握手,這種情況被稱為連接遷移 。

總結(jié)

好了,今天的HTTP/3和QUIC就介紹到這里,雖然我們沒有涉及到底層的更多細節(jié),但是相信大家應(yīng)該都聽得明白了,再總結(jié)一下,QUIC實際上行就是在UDP協(xié)議之上,再造了一個更加高級有效的TCP協(xié)議。

到此這篇關(guān)于淺析HTTP3的文章就介紹到這了,更多相關(guān)HTTP3內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 解析Android框架之OkHttp3源碼
  • SpringBoot 配置 okhttp3的操作
  • spring集成okhttp3的步驟詳解

標簽:雙鴨山 莆田 丹東 鄂爾多斯 襄陽 遵義 哈爾濱 錫林郭勒盟

巨人網(wǎng)絡(luò)通訊聲明:本文標題《淺析HTTP3》,本文關(guān)鍵詞  淺析,HTTP3,淺析,HTTP3,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《淺析HTTP3》相關(guān)的同類信息!
  • 本頁收集關(guān)于淺析HTTP3的相關(guān)信息資訊供網(wǎng)民參考!
  • 企业400电话

    智能AI客服机器人
    15000

    在线订购

    合计11份范本:公司章程+合伙协议+出资协议+合作协议+股权转让协议+增资扩股协议+股权激励+股东会决议+董事会决议

    推薦文章