摘要:允許應(yīng)用層協(xié)商應(yīng)該在安全連接上采用哪個(gè)協(xié)議,以避免額外且獨(dú)立于應(yīng)用層協(xié)議的往返協(xié)商通信。因此應(yīng)用層協(xié)議協(xié)商是在握手階段進(jìn)行的。通過(guò)應(yīng)用層協(xié)議協(xié)商機(jī)制,可以保證服務(wù)器與瀏覽器的兼容。
隨著網(wǎng)絡(luò)傳輸數(shù)據(jù)量的劇增,網(wǎng)絡(luò)數(shù)據(jù)的傳輸優(yōu)化已經(jīng)變得刻不容緩。而 CDN 支持 HTTP/2 可以在很大程度緩解數(shù)據(jù)量大帶來(lái)的傳輸壓力。
HTTP/2 針對(duì)每個(gè)服務(wù)器只使用一個(gè)連接,省去了多次建立連接的時(shí)間,提升了網(wǎng)站的訪(fǎng)問(wèn)速度。還通過(guò)壓縮頭部數(shù)據(jù),提升了網(wǎng)站的緩存利用率和加載速度。同時(shí) HTTP/2 減少了 TLS 的性能損失,可以讓更多的應(yīng)用使用 TLS,進(jìn)一步保證了用戶(hù)的數(shù)據(jù)安全。
△ HTTP/1.1、HTTP/2 傳輸性能對(duì)比
到目前為止,絕大部分瀏覽器已經(jīng)支持 HTTP/2 協(xié)議了,但是還有部分瀏覽器存在不支持 HTTP/2 的問(wèn)題,那在瀏覽器不支持 HTTP/2 的情況下,用戶(hù)訪(fǎng)問(wèn)網(wǎng)站時(shí)會(huì)不會(huì)受到影響?
這里面就涉及 HTTP/2 的應(yīng)用層協(xié)議協(xié)商機(jī)制,今天我就跟大家聊聊它。
什么是應(yīng)用層協(xié)議協(xié)商應(yīng)用層協(xié)議協(xié)商(Application-Layer Protocol Negotiation,簡(jiǎn)稱(chēng) ALPN)是一個(gè)進(jìn)行應(yīng)用層協(xié)議協(xié)商的傳輸層安全協(xié)議(TLS)擴(kuò)展。ALPN 允許應(yīng)用層協(xié)商應(yīng)該在安全連接上采用哪個(gè)協(xié)議,以避免額外且獨(dú)立于應(yīng)用層協(xié)議的往返協(xié)商通信。
應(yīng)用層協(xié)議協(xié)商的作用應(yīng)用層協(xié)議協(xié)商機(jī)制的作用簡(jiǎn)單來(lái)說(shuō),如果瀏覽器本身不支持 HTTP/2, TLS 握手過(guò)程中 ALPN 擴(kuò)展中就不會(huì)帶 h2,CDN 服務(wù)端也不會(huì)選擇 HTTP/2 作為后續(xù)協(xié)議。而是會(huì)和瀏覽器進(jìn)行協(xié)商,選擇 HTTP/2 或者 HTTP 1.1 。
不同情況下的協(xié)商結(jié)果 服務(wù)端與瀏覽器如何進(jìn)行協(xié)商那么服務(wù)端和瀏覽器是怎么通過(guò)應(yīng)用層協(xié)商協(xié)議進(jìn)行協(xié)商的呢?
這里就要講一下 HTTP/2 協(xié)議的另一個(gè)特點(diǎn)。雖然 HTTP/2 本身并沒(méi)有要求它必須基于 HTTPS(TLS)部署,但是目前幾乎所有的 HTTP/2 和 HTTPS 都是捆綁在一起的,并且當(dāng)前的主流瀏覽器,都只支持基于 HTTPS(TLS) 部署的 HTTP/2。
因此 HTTP/2 應(yīng)用層協(xié)議協(xié)商是在 TLS 握手階段進(jìn)行的。當(dāng)瀏覽器在建立 TLS 連接時(shí),通過(guò) ALPN 擴(kuò)展列出了瀏覽器支持的各種應(yīng)用層協(xié)議。這其中,HTTP/2 協(xié)議的標(biāo)識(shí)為 “h2”。圖2為瀏覽器 Client Hello 階段 ALPN 拓展列出了瀏覽器支持的三種協(xié)議。
△圖3
圖3 為服務(wù)端 Server Hello 階段響應(yīng)瀏覽器的協(xié)議,并判斷使用 HTTP/2 傳輸協(xié)議的結(jié)果。以又拍云 CDN 服務(wù)端為例,又拍云 CDN 服務(wù)端是默認(rèn)支持了 HTTP/2 協(xié)議的,在 Server Hello 中通過(guò) ALPN 擴(kuò)展的展示結(jié)果中列出了 h2。如果瀏覽器不支持 HTTP/2 協(xié)議,那么 CDN 服務(wù)端就會(huì)從瀏覽器的 ALPN 列表中選定一個(gè)瀏覽器可以支持的協(xié)議并進(jìn)行返回,比如 HTTP/1.1 協(xié)議。
又拍云 CDN 服務(wù)端同時(shí)支持 HTTP/1.1。在這種情況下,即使瀏覽器不支持 HTTP/2,雙方也可以協(xié)商出可用的 HTTP 傳輸協(xié)議,保證了瀏覽器的兼容性問(wèn)題。
綜上所述,在瀏覽器不支持 HTTP/2 的情況下,用戶(hù)訪(fǎng)問(wèn)網(wǎng)站時(shí)不會(huì)受到影響。通過(guò)應(yīng)用層協(xié)議協(xié)商機(jī)制,可以保證服務(wù)器與瀏覽器的兼容。
目前又拍云 CDN 服務(wù)已全平臺(tái)支持 HTTP/2,并且默認(rèn)開(kāi)啟。只要使用又拍云 HTTPS 加速服務(wù)的域名,就可免費(fèi)享受 HTTP/2 服務(wù),無(wú)需做任何特殊配置。
另外 HTTP/2 協(xié)議對(duì) TLS 有著嚴(yán)格的限制,只能使用 TLSv1.2+ 以上的版本。而又拍云 HTTPS 已經(jīng)支持 TLSv1.0、TLSv1.1、TLSv1.2 的協(xié)議了,可以完全兼容 HTTP/2 協(xié)議。所以,老鐵們大可放心使用又拍云的 HTTPS 服務(wù) ,同時(shí)享受免費(fèi)的 HTTP/2 。
參考內(nèi)容來(lái)源:
Jerry Qu的博客
維基百科-HTTP2
推薦閱讀:一文讀懂 HTTP/2 特性文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/33783.html
摘要:允許應(yīng)用層協(xié)商應(yīng)該在安全連接上采用哪個(gè)協(xié)議,以避免額外且獨(dú)立于應(yīng)用層協(xié)議的往返協(xié)商通信。因此應(yīng)用層協(xié)議協(xié)商是在握手階段進(jìn)行的。通過(guò)應(yīng)用層協(xié)議協(xié)商機(jī)制,可以保證服務(wù)器與瀏覽器的兼容。 隨著網(wǎng)絡(luò)傳輸數(shù)據(jù)量的劇增,網(wǎng)絡(luò)數(shù)據(jù)的傳輸優(yōu)化已經(jīng)變得刻不容緩。而 CDN 支持 HTTP/2 可以在很大程度緩解數(shù)據(jù)量大帶來(lái)的傳輸壓力。 HTTP/2 針對(duì)每個(gè)服務(wù)器只使用一個(gè)連接,省去了多次建立連接的時(shí)間...
摘要:內(nèi)容主要有四個(gè)方面趨勢(shì)基礎(chǔ)實(shí)踐調(diào)試。一趨勢(shì)這一章節(jié)主要介紹近幾年和未來(lái)的趨勢(shì),包括兩大瀏覽器和對(duì)的態(tài)度,以及淘寶天貓和阿里云的實(shí)踐情況。完整性是指為了避免網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)被非法篡改,使用算法來(lái)保證消息的完整性。 摘要: 本文邀請(qǐng)阿里云CDN HTTPS技術(shù)專(zhuān)家金九,分享Tengine的一些HTTPS實(shí)踐經(jīng)驗(yàn)。內(nèi)容主要有四個(gè)方面:HTTPS趨勢(shì)、HTTPS基礎(chǔ)、HTTPS實(shí)踐、HTTPS...
閱讀 847·2023-04-25 19:43
閱讀 4112·2021-11-30 14:52
閱讀 3929·2021-11-30 14:52
閱讀 4027·2021-11-29 11:00
閱讀 3921·2021-11-29 11:00
閱讀 4038·2021-11-29 11:00
閱讀 3756·2021-11-29 11:00
閱讀 6604·2021-11-29 11:00