国产精品视频二区不卡_精品爆乳一区二区三区无码AV_久久精品国产屋_国产成人精品综合在线观看

最新QUIC和HTTP/3傳輸協(xié)議技術(shù)能為我們帶來哪些改變
作者:admin | 時間:2020-11-18 20:18:35

Nginx官方今年推出了一個nginx-quic以支持全新的QUIC+HTTP/3傳輸協(xié)議。

http3.png

HTTP/3的前世今生

在當(dāng)下技術(shù)飛速發(fā)展,高頻迭代的今天,超文本傳輸協(xié)議HTTP是過去的二十多年來保持穩(wěn)定的少數(shù)技術(shù)之一。

HTTP/1.1標(biāo)準(zhǔn)于1999年發(fā)布,是現(xiàn)在Web應(yīng)用程序和API中無所不在的傳輸協(xié)議。盡管其傳輸?shù)膽?yīng)用程序和服務(wù)都發(fā)生了巨大變化,但該協(xié)議在21年以來基本保持未變。

為什么這么說呢?

不是有HTTP/2么?

HTTP/2標(biāo)準(zhǔn)于2015年出版,并且目前已經(jīng)有45%的網(wǎng)站已經(jīng)采納使用了HTTP/2。但這只是一方面,一個端點(diǎn), "最后一英里"的一頭。在另一頭現(xiàn)代公共Internet上HTTP的使用則有很大不同。現(xiàn)代Internet基礎(chǔ)結(jié)構(gòu)的現(xiàn)實(shí)情況是HTTP/2很少實(shí)現(xiàn)端到端兩頭都部署。在公共Internet上最明顯體現(xiàn)的問題是網(wǎng)絡(luò)延遲非常高,并且一個HTTP請求的問題可能會導(dǎo)致后續(xù)請求被延遲。在應(yīng)用程序運(yùn)行時環(huán)境(例如,公共云或私有數(shù)據(jù)中心)內(nèi)部,延遲低,網(wǎng)絡(luò)可靠性非常高,并且直接檢查HTTP/1.1的基于文本的傳輸流的能力比效率更高。

HTTP/2的二進(jìn)制傳輸流。

HTTP/2極大地改善了瀏覽器和移動設(shè)備上的用戶體驗(yàn),因?yàn)樗浅_m合客戶端和運(yùn)行時基礎(chǔ)結(jié)構(gòu)的邊緣之間的環(huán)境。它通常被代理到使用HTTP/1.1的運(yùn)行時環(huán)境中。

邊緣節(jié)點(diǎn)很可能是CDN(代理)供應(yīng)商,或處理進(jìn)入運(yùn)行時環(huán)境的流量的反向代理負(fù)載平衡器。

為什么要提出另一個新協(xié)議HTTP/3?

HTTP/2的主要創(chuàng)新是用TCP作為低級傳輸?shù)膯蝹€連接上復(fù)用多個HTTP請求。

不幸的是,TCP具有固有的局限性,限制了網(wǎng)站和應(yīng)用程序的性能以及用戶體驗(yàn)。在TCP標(biāo)準(zhǔn)最初發(fā)表于1981年,一直以來非常安全并且好用,是無可替代的通用的傳輸協(xié)議。

但是,當(dāng)在同一連接上多路復(fù)用多個獨(dú)立請求時,它們會受到該連接可靠性的約束。如果僅一個請求的數(shù)據(jù)包丟失,則所有多路復(fù)用請求都會延遲,直到首先檢測到丟失的數(shù)據(jù)包,然后重新傳輸。

QUIC,UDP和TSL 1.3

QUIC使用UDP作為在客戶端和服務(wù)器之間移動數(shù)據(jù)包的低級傳輸機(jī)制,實(shí)現(xiàn)了發(fā)出HTTP請求的可靠連接。最重要的是QUIC還將TLS層作為內(nèi)置成分進(jìn)行了統(tǒng)一集成(TLS 1.3),通過緩存和復(fù)用,極大的提高其效率,而非HTTP/1.1和HTTP/2那樣作為附加層。

TLS1.3,服務(wù)器和客戶端進(jìn)行首次握手會話之后,就可以緩存會話密鑰。在新請求時,就可以直接使用緩存的建立會話,而不需要會話握手,實(shí)現(xiàn)0-RTT。

HTTP3和客戶端支持

QUIC的目標(biāo)是為HTTP/3提供高性能,高可靠性,高安全性的傳輸協(xié)議(盡管QUIC也適用于非HTTP流量)。從語義上講,HTTP/3本身與HTTP/2非常相似。客戶端(Web瀏覽器)如何知道要使用哪個HTTP版本?

HTTP/2的引入首先引起了版本控制問題,HTTP/2通過使用TLS握手來檢測客戶端和服務(wù)器是否能夠通過HTTP/2進(jìn)行通信來解決該問題。這樣,客戶端甚至在建立連接之前就知道如何與服務(wù)器對話。但是,QUIC使用UDP代替TCP作為基礎(chǔ)傳輸協(xié)議提出了一個新的挑戰(zhàn):客戶端如何知道最初要請求哪種連接類型(TCP或UDP)?

解決方案是讓客戶端為初始HTTP請求建立TCP連接。支持HTTP/3的服務(wù)器的響應(yīng)頭中會包括Alt-Svc標(biāo)頭,用于指定偵聽HTTP/3流量的UDP端口。此外,瀏覽器還會記憶哪些站點(diǎn)支持QUIC,避免一直使用Alt-Svc方法。

nginx-quic預(yù)覽版

nginx-quic是NGINX的官方QUIC和HTTP/3實(shí)現(xiàn)的初始版本,即http_v3_module。這是一項(xiàng)技術(shù)預(yù)覽,是實(shí)驗(yàn)性的版本,不適用于生產(chǎn)環(huán)境。nginx-quic基于QUIC草案的子集實(shí)施的。

經(jīng)過幾個月的設(shè)計和開發(fā),http_v3_module已準(zhǔn)備好進(jìn)行互操作性測試。

請注意,NGINX開源主線開發(fā)分支(也不包括NGINX Plus的任何發(fā)行版)中暫不提供http_v3_module。h目前還位于nginx-quic的專用開發(fā)分支。另外,nginx-quic的QUIC + HTTP/3實(shí)現(xiàn)是全新的,與Cloudflare quiche項(xiàng)目實(shí)現(xiàn)的補(bǔ)丁程序也無關(guān)。

啟用QUIC+HTTP/3非常簡單,配置如下:

server {

listen 443 ssl; # HTTP/1.1的TCP監(jiān)聽端口

listen 443 http3 reuseport; # QUIC+HTTP/3的UDP監(jiān)聽

ssl_protocols TLSv1.3; # QUIC 必須使用TLS 1.3

ssl_certificate ssl/www.petmainland.com.crt;

ssl_certificate_key ssl/www.petmainland.com.key;

add_header Alt-Svc 'quic=":443"'; # 必須添加的Alt-Svc響應(yīng)頭

add_header QUIC-Status $quic; # 必須添加的QUIC狀態(tài)頭

}


資訊內(nèi)容

誠信為本,卓越品質(zhì),做行業(yè)領(lǐng)跑者