成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

HTTP 3的前世今生及嘗鮮

網絡 網絡管理
HTTP/3又迎來一個里程碑:近日Cloudflare官方宣其邊緣網絡上已全面提供QUIC和HTTP/3支持。那么HTTP/3可以帶來哪些變化和優勢呢? 對Internet的用戶,并且通過瀏覽器和其他客戶端與站點進行高效交互。

 HTTP/3又迎來一個里程碑:近日Cloudflare官方宣其邊緣網絡上已全面提供QUIC和HTTP/3支持。那么HTTP/3可以帶來哪些變化和優勢呢? 對Internet的用戶,并且通過瀏覽器和其他客戶端與站點進行高效交互。可通過使用最新Chrome Canary瀏覽器以HTTP/3 UDB協議和服務器交互,對于使用命令行客戶端的人,最新版本的curl也提供了對HTTP/3的支持。本文蟲蟲將介紹HTTP/3的發展歷程,以及用戶如何啟用HTTP 3,如何通過瀏覽器Chrome及命令行客戶端curl使用HTTP 3。

[[278897]]

HTTP發展歷程

首先,我們先來介紹下HTTP多年來的發展,以便更好地理解HTTP/3。

HTTP/1.0

HTTP協議源于1996年,在這一年發布了HTTP/1.0規范(0.x版本忽略),該規范定義了我們今天常見的基本HTTP文本規格定義。在HTTP/1.0中定義了客戶端和服務器之間的每個請求/響應交換都要創建一個新的TCP連接,所以在進行每個請求均需大家熟知的"三次握手,四次揮手"的歷程,因此請求難免會產生延遲。比如一個典型的HTTP/TLS過程,圖解如下:

 

HTTP 3的前世今生及嘗鮮

 

而且,為了避免將無法處理的數據包泛洪到網絡中,TCP協議對建立的連接使用使用了一種稱為"慢啟動"的預熱暫緩期用來給TCP堵塞控制算法確定可以傳輸的數據量,而不是在建立連接后盡快發送所有未完成的數據。由于每一個新連接都必須經過這個緩慢的啟動過程,這也成了網絡性能的一個瓶頸。

HTTP/1.1 keep-alive

隨之而來的的HTTP/1.1版本中引入"keep-alive(?;?"連接的方法來解決這些問題。通過?;罴夹g,可以讓客戶端重用TCP連接,而不需要每次都重新建立TCP連接,從而解決初始連接建立和緩慢連接的問題。但這并不能從實質上解決問題,盡管多個請求可以共享同一個連接,但是仍然必須一個接一個地序列化它們,因此客戶端和服務器只能在任何給定時間為每個連接執行一次請求/響應交換。

隨著網絡和Web技術的發展,每個網站所需的資源(CSS,JS腳本,圖片,視頻等)的增加,瀏覽器在獲取和渲染呈現網頁時對并發性的需要越來越迫切。但是,由于HTTP/1.1只允許客戶端每次只能進行一個HTTP請求/響應交換,因此在網絡層上獲得并發性的唯一方法是并行使用多個TCP連接,這樣一來就無法享受?;罴夹g帶來的好處。

HTTP/2 SPDY

又過了十多年后,出現了SPDY,然后是HTTP/2規范。它首先引入了HTTP流的概念。通抽象HTTP實現將不同的HTTP交換并發地復用到同一個TCP連接上,瀏覽器可以更有效地重用TCP連接。

 

HTTP 3的前世今生及嘗鮮

 

HTTP/2解決了單個TCP連接的使用效率低的問題,可以通過同一連接同時傳輸多個請求/響應。但是如果傳輸中發生數據丟包,即使丟失的數據僅涉及單個請求,所有請求和響應也同樣會受到數據包丟失的影響而需要重傳。因為盡管HTTP/2可以在不同的流上隔離不同的HTTP交換,但是底層的TCP并無法對他們進行區別,TCP能看到的只是沒有任何標志的字節流。

TCP的作用是以正確的順序從一個端點到另一端點傳遞整個字節流。當承載某些字節的TCP數據包在網絡路徑上丟失時,它將在流中造成間隙,并且TCP需要在檢測到丟失時通過重新發送受影響的數據包來填充它。這樣即使丟失此后沒有丟失并且屬于完全獨立的HTTP請求,也不能將數據包后的已成功傳輸的數據包傳遞給應用層。因此,最終會導致他們也會產生不必要的延遲。這個問題被稱為TCP head-of-line blocking (TCP隊頭阻塞)。

 

HTTP 3的前世今生及嘗鮮

 

為了解決隊頭阻塞問題,HTTP/2中也引入了多路復用(Multiplexing)技術,將TCP流可以傳輸的數據分為若干消息,每個消息再劃分為最小的二進制幀組成,這樣即使一個請求被阻塞了,也不會影響其他請求,如上圖中第四種情況所示。

HTTP/3 QUIC

當然這些改良TCP的方案都只能部分解決問題,為了徹底從根解決問題。那就需要徹底更換底層的TCP協議,這就是谷歌多年探索的基于UDP的QUIC協議,這也是HTTP/3的基礎。QUIC協議中在傳輸層將數據流作為基本,QUIC流共享相同的QUIC連接,需要額外的握手和慢啟動來創建新的QUIC流,通過底層使用UDP協議以及將QUIC數據包封裝在UDP數據報的頂部,實現QUIC流的獨立交付。因此在大多數情況下,影響一個流的丟包不會影響其他流。

與TCP相比,使用UDP可以提供更大的靈活性,并且可以使QUIC實現完全存在于用戶空間中。協議實現的更新不再依賴于操作系統更新。借助QUIC,可以將HTTP級別的流簡單地映射為QUIC流的頭,從而繼承HTTP/2的所有好處,而不會產生隊頭阻塞問題。

 

HTTP 3的前世今生及嘗鮮

 

QUIC還結合了典型的3次TCP握手和TLS 1.3的握手。這樣默認情況就可以提供加密和身份驗證,并且加速連接的建立。就算HTTP會話中的初始請求需要新的QUIC連接,在數據開始流動之前所引起的等待時間也較低。

 

HTTP 3的前世今生及嘗鮮

 

HTTP/3的使用

HTTP/3和QUIC給我們帶來開天辟地的變化,可以從根本上解決HTTP標準許久以來的許多問題和缺陷。那么我們如何立刻使用它帶來的福利呢?

quiche框架

為了支持推廣HTTP/3 Cloudflare使用Rust開發并開源一個HTTP/3和QUI的應用框架,而且還給該應用使用一個非??刹偷拿謖uiche(乳蛋餅)和logo,估計以借此吸引人們盡快品嘗HTTP/3制成的美食。

HTTP 3的前世今生及嘗鮮

quiche的源碼托管在github上(github:/cloudflare/quiche),在clone源碼后,可以通過cargo編譯(注意需要rust 1.38及更新的版本,BoringSSL及其windows版本NASM):

  1. cargo build -examples 

quiche也提供了以docker為基礎的實驗環境包括http3-client, http3-server, 客戶端和服務器端,使用方法如下:

docker編譯:

  1. docker build -t cloudflare-quiche . 

進行HTTP/3請求

  1. docker run -it cloudflare-quiche http3-client Url 

網站啟用

目前Cloudflare的選擇性開部分放客戶如已經可以通過簡單手動設置啟用HTTP/3功能,方法是在Cloudflare儀表板,手動在"網絡"選項卡開啟開關:

HTTP 3的前世今生及嘗鮮

客戶端使用

目前知名瀏覽器谷歌Chrome和Firefox都已經實驗性提供對HTTP/3的支持。Chrome在Canary,Firefox將在Nightly正式正式提供支持。

 

HTTP 3的前世今生及嘗鮮

 

Chrome瀏覽器:首先需要下載并安裝最新的Canary版本。然后,通過設置以下命令行參數啟動Chrome Canary:

  1. "--enable-quic"" --quic-version = h3-23" 

然后就可以支持HTTP/3,可以通過Chrome開發人員工具中的"網絡"標簽頁來檢查使用的協議版本:

 

HTTP 3的前世今生及嘗鮮

 

注意到協議類型為"http2+quic/99",這就是表示Http3。

使用curl

curl最新版7.66,也添加了對HTTP/3的實驗性支持。我們可以下載編譯試用,在此前蟲蟲文章中對此介紹過。

要使用HTTP/3需要使用新添加的 "--http3"標志來進行請求:

  1. curl -I URL --http3 

 

HTTP 3的前世今生及嘗鮮

 

 

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2013-04-25 13:27:11

unity3D手機游戲引擎

2011-08-23 09:52:31

CSS

2015-11-18 14:14:11

OPNFVNFV

2014-07-30 10:55:27

2025-02-12 11:25:39

2014-07-21 12:57:25

諾基亞微軟裁員

2019-06-04 09:00:07

Jenkins X開源開發人員

2014-07-15 10:31:07

asyncawait

2016-12-29 18:21:01

2021-06-17 07:08:19

Tapablewebpack JavaScript

2016-12-29 13:34:04

阿爾法狗圍棋計算機

2012-05-18 16:54:21

FedoraFedora 17

2013-05-23 16:23:42

Windows Azu微軟公有云

2016-11-03 13:33:31

2016-11-08 19:19:06

2021-04-15 07:01:28

區塊鏈分布式DLT

2011-05-13 09:43:27

產品經理PM

2015-06-11 11:10:09

對象存儲云存儲

2019-08-05 10:08:25

軟件操作系統程序員

2013-11-14 16:03:23

Android設計Android Des
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 福利在线看 | 精品三区| 黄在线免费观看 | 亚洲一区二区三区久久 | 亚洲狠狠丁香婷婷综合久久久 | 午夜成人免费电影 | 日韩国产一区二区三区 | 黄色骚片| 性高湖久久久久久久久3小时 | 91av在线不卡 | 国产欧美精品一区 | 欧美极品在线播放 | 超碰在线免费 | 狠狠干天天干 | a级大片免费观看 | 91资源在线 | 国产精品激情小视频 | 午夜ww | 男女国产网站 | 一级毛片在线播放 | 亚洲精品免费在线观看 | 一区二区三区中文字幕 | 一本色道久久综合亚洲精品高清 | 国产精品一区在线观看你懂的 | 亚洲激情一区二区三区 | 久久天天躁狠狠躁夜夜躁2014 | 91久久精品国产免费一区 | 精品一区二区三区免费视频 | 免费黄色片在线观看 | 日韩一区二区三区在线观看 | 四季久久免费一区二区三区四区 | 久久一| 欧美网址在线观看 | 亚洲精品在线91 | 欧美乱码精品一区二区三区 | 亚洲成人蜜桃 | 一二区成人影院电影网 | 作爱视频免费观看 | 国产精品色综合 | 久久精品一级 | 中文字幕一区二区三区在线观看 |