HTTP3協議基於Google的 QUIC 協議,由互聯網工程任務組(IETF)來制定。目錄仍是草案,已經進行到第33版。chrome
HTTP3 是基於 QUIC 協議的 http。傳輸層是UDP+QUIC,應用層還是HTTP,即request/respose, request裏也還是method, url, headers, body等等,從應用層的角度來看,你的代碼無需修改就能夠遷移到新的協議版本上來。shell
檢查網站是否支持http3協議:瀏覽器
https://http3check.net/?host=...緩存
curl
工具從7.67之後的版本增長對http3的實驗性支持。安全
curl --http3 https://nghttp2.org:8443/
檢查瀏覽器是否支持http3協議:服務器
今年10月,Facebook 號稱超 75% 的流量已使用 QUIC 和 HTTP/3協議。app
與http2同樣,http3也採用加密的二進制協議,不一新的是http3是基出UDP協議的。curl
關於爲何http3會採用UDP協議,帶來了哪些好處,能夠參考http3詳解。 cURL的做者 Daniel Stenberg 對此有很詳細的說明。包括協議僵化、TCP隊關阻塞、減小延遲、安全等都有說明,且有中文譯文,值得一看。工具
一些相關規範草案:
當有人在瀏覽器中輸入您網站的地址時,幕後發生了不少事情……
0-RTT 零往返時間恢復, 最先是TLS 1.3 提出和一種恢復鏈接的機制。即恢復連接時直接使用以前已經交換地的密鑰加密應用數據,而無需再經歷單獨的創建 TCP 鏈接和 TLS 交換密鑰的客戶端服務器以前的數據往返。
0-RTT容許在無需任何往返的狀況下恢復會話。
這裏給一個總結...
TLS 1.2(及更低版本)
TLS 1.3
具備0-RTT的TLS 1.3
從理論上講,0-RTT由於使用之前的密鑰,確實能夠對網站來進行重放攻擊。所以,在實施時須要一直保持謹慎,通常僅容許GET請求與0-RTT一塊兒使用。因爲GET請求永遠不要修改服務器上的任何內容,只能返回結果,這意味着網站風險更小。
打開 https://http3.is/ 網站:
普通青年看到的是這樣的一個畫面:
文藝青年用Mac對chrome加參數打開:
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --enable-quic --quic-version=h3-29
則看到了這樣的畫面:
mp4
同時在開發者工具欄會看到h3-29協議:
若是第一連接時沒有顯示動畫,觀察一下服務器的響應頭,能夠看到:
alt-svc: h3-29=":443";ma=86400,h3-27=":443";ma=86400
這實際是在告訴客戶端能夠升級到h3協議上。這時再刷新頁面,chrome會切換到h3協議上去。這樣就實現了新舊協議的過渡升級。