• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      QUIC協(xié)議研究

      2017-08-16 09:33:33陳振波武漢郵電科學(xué)研究院湖北武漢430074
      電子測試 2017年14期
      關(guān)鍵詞:重傳服務(wù)端數(shù)據(jù)包

      陳振波(武漢郵電科學(xué)研究院,湖北武漢,430074)

      QUIC協(xié)議研究

      陳振波
      (武漢郵電科學(xué)研究院,湖北武漢,430074)

      為了解決當(dāng)前TCP傳輸存在的兩個主要問題:(1)建立連接、斷開連接的耗時傳輸機(jī)制;(2)前序包阻塞(Head-of-line blocking, HOL)問題,本文介紹一種基于UDP作為底層傳輸?shù)娜聟f(xié)議(Quick UDP Internet Connections,QUIC),通過采用UDP為傳輸層協(xié)議,避免建立連接、斷開連接的耗時問題和前序包阻塞問題,并且通過一種巧妙的機(jī)制保證可靠性傳輸,克服UDP傳輸存在的問題。

      TCP;前序包阻塞;UDP;QUIC

      0 引言

      建立在TCP基礎(chǔ)之上的HTTP是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議,誕生之初,主要就是為了將超文本標(biāo)記語言(HTML)文檔從Web服務(wù)器傳送到客戶端的瀏覽器。但是到了Web 2.0時代,HTML頁面變得越來越復(fù)雜,不僅僅單純的是一些簡單的文字和圖片,同時有了層疊樣式表(Cascading Style Sheets,CSS),JavaScript(一種直譯式腳本語言)來豐富頁面展示,隨著Ajax(一種創(chuàng)建交互式網(wǎng)頁應(yīng)用的網(wǎng)頁開發(fā)技術(shù),英文全稱:Asynchronous JavaScript And XML)的出現(xiàn),客戶端又多了一種向服務(wù)器端獲取數(shù)據(jù)的方法,這些其實都是基于HTTP協(xié)議的。同樣到了移動互聯(lián)網(wǎng)時代,頁面可以在手機(jī)端瀏覽器里顯示,但是和電腦端相比,手機(jī)端的網(wǎng)絡(luò)情況更加復(fù)雜,經(jīng)常涉及到蜂窩網(wǎng)絡(luò)與無線局域網(wǎng)之間的切換,因此需要對HTTP進(jìn)行深入理解并不斷優(yōu)化。SPDY(發(fā)音如英語:speedy)及QUIC就是在這樣的背景下相繼出現(xiàn),接下來先分別介紹HTTP及SPDY的發(fā)展、QUIC的特點(diǎn),然后進(jìn)行對比分析。

      1 HTTP及SPDY

      1.1 HTTP 1.X

      HTTP/0.9是一個過時的協(xié)議,它只接受GET一種請求方法,沒有在網(wǎng)絡(luò)傳輸中指定版本號,且不支持請求頭。由于該版本不支持POST方法,因此客戶端無法向服務(wù)器傳遞太多信息。

      隨后提出的HTTP/1.0是第一個指定版本號的HTTP協(xié)議版本,早期只是使用在一些較為簡單的網(wǎng)頁和網(wǎng)絡(luò)請求上,而今主要是在代理服務(wù)器中使用。

      HTTP/1.1在1999年開始廣泛應(yīng)用于現(xiàn)在的各大瀏覽器網(wǎng)絡(luò)請求中,同時也是當(dāng)前使用最為廣泛的HTTP協(xié)議。HTTP/1.1與HTTP/1.0的主要區(qū)別為:

      (1)緩存處理。在HTTP/1.0中主要使用header里的If-Modified-Since, Expires作為緩存判斷的標(biāo)準(zhǔn),HTTP/1.1則引入了更多的緩存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供選擇的緩存頭來控制緩存策略。

      (2)帶寬優(yōu)化及網(wǎng)絡(luò)連接的使用。HTTP/1.0中,存在一些浪費(fèi)帶寬的現(xiàn)象,例如客戶端只是需要某個對象的一部分,而服務(wù)器卻將整個對象傳過來了,并且不支持?jǐn)帱c(diǎn)續(xù)傳功能,HTTP/1.1則在請求頭引入了range頭域,它允許只請求資源的某個部分,即返回碼是206(Partial Content),這樣就方便了開發(fā)者自由的選擇以便于充分利用帶寬和連接。

      (3)錯誤通知的管理。在HTTP/1.1中新增了24個錯誤狀態(tài)響應(yīng)碼,如409(Conflict)表示請求的資源與資源的當(dāng)前狀態(tài)發(fā)生沖突;410(Gone)表示服務(wù)器上的某個資源被永久性的刪除。

      (4)Host頭處理。在HTTP/1.0中認(rèn)為每臺服務(wù)器都綁定一個唯一的IP地址,因此請求消息中的URL并沒有傳遞主機(jī)名(hostname)。但隨著虛擬主機(jī)技術(shù)的發(fā)展,在一臺物理服務(wù)器上可以存在多個虛擬主機(jī)(Multi-homed Web Servers),并且它們共享一個IP地址。HTTP/1.1的請求消息和響應(yīng)消息都應(yīng)支持Host頭域,且請求消息中如果沒有Host頭域會報告一個錯誤(400 Bad Request)。

      (5)長連接。HTTP/1.1支持長連接(Persistent Connection)和請求的流水線(Pipelining)處理,在一個TCP連接上可以傳送多個HTTP請求和響應(yīng),減少了建立和關(guān)閉連接的消耗和延遲,在HTTP/1.1中默認(rèn)開啟Connection: keep-alive,一定程度上彌補(bǔ)了HTTP/1.0每次請求都要創(chuàng)建連接的缺點(diǎn)。

      盡管HTTP/1.1相比于HTTP/1.0有了很大的優(yōu)化,但仍存在不少問題。

      (1)需要很多TCP連接來實現(xiàn)并發(fā)請求與響應(yīng),且在傳輸數(shù)據(jù)時每次都需要重新建立連接,這增加了大量的延遲時間并可能引起網(wǎng)絡(luò)擁塞和高數(shù)據(jù)包丟失,導(dǎo)致更差的網(wǎng)絡(luò)性能。

      (2)在傳輸數(shù)據(jù)時,所有傳輸?shù)膬?nèi)容都是明文,客戶端和服務(wù)器端都無法驗證對方的身份,這在一定程度上無法保證數(shù)據(jù)的安全性。

      (3)頭部信息(header)里攜帶的內(nèi)容過大,在一定程度上增加了傳輸?shù)某杀?,并且每次請求header基本不怎么變化,尤其在移動端環(huán)境下容易增加用戶流量。

      (4)雖然HTTP/1.1支持了keep-alive,來彌補(bǔ)多次創(chuàng)建連接產(chǎn)生的延遲,但是keep-alive使用多了同樣會給服務(wù)端帶來大量的性能壓力。

      (5)HTTP請求嚴(yán)格由客戶端發(fā)起,在網(wǎng)頁加載很多嵌入對象時會嚴(yán)重影響性能,因為服務(wù)器只能在客戶端發(fā)出請求后才能傳輸數(shù)據(jù)。

      1.2 SPDY與HTTP/2

      SPDY是一種基于TCP的開放網(wǎng)絡(luò)傳輸應(yīng)用層協(xié)議,由Google開發(fā),用來發(fā)送網(wǎng)頁內(nèi)容。設(shè)計SPDY的目的在于降低網(wǎng)頁的加載時間,與HTTP/1.1相比,它在以下幾方面作了改進(jìn)。

      (1)降低延遲。針對HTTP高延遲的問題,SPDY采取了多路復(fù)用(multiplexing)。多路復(fù)用通過多個請求流共享一個TCP連接的方式,同時服務(wù)端也可通過一個連接發(fā)出多個應(yīng)答流,提高了服務(wù)端性能。多路復(fù)用技術(shù)可以減少網(wǎng)絡(luò)擁塞、降低延遲,同時提高了帶寬的利用率。

      (2)請求優(yōu)先級。多路復(fù)用帶來一個新的問題是,在連接共享的基礎(chǔ)之上有可能會導(dǎo)致關(guān)鍵請求被阻塞。SPDY允許給每個請求設(shè)置優(yōu)先級,這樣重要的請求就會優(yōu)先得到響應(yīng)。比如瀏覽器加載首頁,首頁的html內(nèi)容應(yīng)該優(yōu)先展示,之后才是各種靜態(tài)資源文件,腳本文件等加載,這樣可以保證用戶能第一時間看到網(wǎng)頁內(nèi)容。

      (3)header壓縮。HTTP 1.x的header很多時候都是重復(fù)多余的。選擇合適的壓縮算法可以減小包的大小和數(shù)量,降低延遲。

      (4)基于HTTPS的加密協(xié)議傳輸,大大提高了傳輸數(shù)據(jù)的可靠性。SPDY中廣泛應(yīng)用了安全傳輸層協(xié)議(Transport Layer Security,TLS)加密,傳輸內(nèi)容也均以gzip或DEFLATE格式壓縮。

      (5)服務(wù)端推送。采用了SPDY的網(wǎng)頁,在客戶端發(fā)出一個資源請求時,服務(wù)端會把相關(guān)的資源主動推送到客戶端而避免等待客戶端再發(fā)出請求后響應(yīng)。這可以減少頁面加載時間。

      需要說明的是,SPDY并不用于替換HTTP,它只是修改了HTTP的請求與應(yīng)答在網(wǎng)絡(luò)上傳輸?shù)姆绞?;這意味著只需增加一個SPDY傳輸層,現(xiàn)有的所有服務(wù)端應(yīng)用均不用做任何修改。當(dāng)使用SPDY的方式傳輸時,HTTP請求會被處理、標(biāo)記簡化和壓縮。比如,每一個SPDY端點(diǎn)會持續(xù)跟蹤每一個在之前的請求中已經(jīng)發(fā)送的HTTP報文頭部,從而避免重復(fù)發(fā)送還未改變的頭部。而還未發(fā)送的報文的數(shù)據(jù)部分將在被壓縮后被發(fā)送。SPDY的構(gòu)成如圖1所示。

      圖1 SPDY構(gòu)成圖

      2015年推出的HTTP/2大部分基于SPDY實現(xiàn),主要區(qū)別為:

      (1)HTTP/2支持明文 HTTP 傳輸,而 SPDY 強(qiáng)制使用HTTPS。

      (2)HTTP/2消息頭(header)的壓縮算法采用 HPACK,而非SPDY 采用的 DEFLATE。

      由于HTTP/2推出時間不長,相較于HTTP/1.1應(yīng)用范圍還不廣,但是未來肯定會逐漸取代HTTP/1.1。

      2 QUIC

      2.1 HTTP/2的局限性

      除了QUIC是基于UDP實現(xiàn),前面幾種協(xié)議都是基于TCP。TCP因其面向連接、可靠傳輸?shù)忍攸c(diǎn)而被廣泛采用,但在如今帶寬越來越大的網(wǎng)絡(luò)環(huán)境下,TCP的局限性也制約了HTTP/2的性能,主要表現(xiàn)為以下兩點(diǎn)。

      (1)數(shù)據(jù)傳輸前TCP先要進(jìn)行“三次握手”,建立連接后才開始傳輸應(yīng)用數(shù)據(jù),這無疑增加了網(wǎng)絡(luò)延時;在采用TLS協(xié)議時需要交換密鑰,這又增加了一次往返時延(Round-Trip Time,RTT)。

      (2)HOL(Head-of-line)blocking,前序包阻塞。TCP保證有序傳輸,所以當(dāng)一個數(shù)據(jù)包丟失時,其他所有的包都要等它重傳整理后才會交給應(yīng)用層,對于多路復(fù)用共享一個TCP連接的SPDY和HTTP/2來說,這無疑影響更大。

      2.2 QUIC的特點(diǎn)

      QUIC最主要的目標(biāo)是減小網(wǎng)絡(luò)傳輸延遲,所以選擇了UDP作為傳輸層協(xié)議,它的主要優(yōu)點(diǎn)有:

      (1)QUIC協(xié)議在創(chuàng)建連接握手時,只需要1到2個數(shù)據(jù)包即可。參考TCP+TLS協(xié)議的傳輸方式,QUIC設(shè)計了類似DTLS(Datagram Transport Layer Security,數(shù)據(jù)報傳輸安全層)的傳輸模型。這個模型大大簡化了建立連接的過程,使得創(chuàng)建連接握手時只需1到2個數(shù)據(jù)包。對于無線網(wǎng)絡(luò)來說,客戶端和服務(wù)器之間的延時通常在100ms以上。傳統(tǒng)TCP+TLS協(xié)議的傳輸方式,在創(chuàng)建連接時的4個數(shù)據(jù)包和QUIC協(xié)議的1個數(shù)據(jù)包相比,連接創(chuàng)建上就會多耗時300ms以上。圖2、圖3分別為TCP+TLS、QUIC的握手示意圖。

      (2)避免前序包阻塞。SPDY和HTTP/2支持將頁面的多個數(shù)據(jù)(如音頻、圖片等)通過一個TCP連接進(jìn)行傳輸。該特性能夠加快頁面組件的傳輸速度,但是對于TCP協(xié)議來說,這會遇到前序包阻塞的問題。因此,即使邏輯上一個TCP連接上并行的在進(jìn)行多路數(shù)據(jù)傳輸,其他毫無關(guān)聯(lián)的數(shù)據(jù)也會因此阻塞。由于UDP協(xié)議沒有嚴(yán)格的順序,當(dāng)一個數(shù)據(jù)包遇到問題需要重傳時,只會影響該數(shù)據(jù)包對應(yīng)的資源,其他獨(dú)立的資源(如其他CSS、JavaScript文件)不會受到影響。QUIC協(xié)議直接通過底層使用UDP協(xié)議天然的避免了該問題。

      圖2 TCP+TLS握手示意圖

      圖3 QUIC握手示意圖

      (3)QUIC協(xié)議有一個非常獨(dú)特的特性,稱為向前糾錯(Forward Error Correction,F(xiàn)EC),每個數(shù)據(jù)包除了它本身的內(nèi)容之外,還包括了部分其他數(shù)據(jù)包的數(shù)據(jù),因此少量的丟包可以通過其他包的冗余數(shù)據(jù)直接組裝而無需重傳。向前糾錯犧牲了每個數(shù)據(jù)包可以發(fā)送數(shù)據(jù)的上限,但是減少了因為丟包導(dǎo)致的數(shù)據(jù)重傳,因為數(shù)據(jù)重傳將會消耗更多的時間(包括確認(rèn)數(shù)據(jù)包丟失、請求重傳、等待新數(shù)據(jù)包等步驟的時間消耗)。

      (4) 底層協(xié)議切換到UDP協(xié)議之后的另一大好處是,連接不再依賴于來源IP。對于TCP協(xié)議來說,標(biāo)識一個TCP連接需要4個參數(shù),即來源IP、來源端口、目的IP和目的端口。其中的任一參數(shù)改變,TCP連接就需要重新創(chuàng)建。這對于傳統(tǒng)網(wǎng)絡(luò)來說影響不大,因為來源和目的IP相對固定。但是在無線網(wǎng)絡(luò)中,情況就大不相同了。設(shè)備在移動過程中,可能會因為網(wǎng)絡(luò)切換(如從WIFI網(wǎng)絡(luò)切換到4G網(wǎng)絡(luò)環(huán)境),導(dǎo)致TCP連接需要重新創(chuàng)建。QUIC協(xié)議使用了UDP協(xié)議,不再需要這四組參數(shù)。同時QUIC協(xié)議實現(xiàn)了自己的會話標(biāo)記方式,稱為連接ID。當(dāng)設(shè)備網(wǎng)絡(luò)環(huán)境切換時,連接ID不會發(fā)生變化,因此無需重新進(jìn)行握手。該特性除了可以減少無謂的連接重連之外,還可以充分利用設(shè)備的不同網(wǎng)絡(luò)接口,進(jìn)行資源的并行下載。因為雖然這些網(wǎng)絡(luò)接口有不同的IP,但只要他們能夠共享連接ID,就能夠并行的從服務(wù)器下載數(shù)據(jù)。

      QUIC協(xié)議內(nèi)置了TLS棧,實現(xiàn)了自己的傳輸加密層,同時QUIC還包含了部分HTTP/2的實現(xiàn),底層通過UDP協(xié)議替代了TCP,上層只需要一層用于和遠(yuǎn)程服務(wù)器交互的HTTP/2 API。這是因為QUIC協(xié)議已經(jīng)包含了多路復(fù)用和連接管理,HTTP API只需要完成HTTP協(xié)議的解析即可。圖4為協(xié)議層次對比圖。

      圖4 協(xié)議層次對比圖

      3 結(jié)束語

      QUIC通過一次(通信雙方從未建立連接)甚至不需要往返握手就可建立連接,這大大降低了網(wǎng)絡(luò)傳輸延遲。同時采用UDP底層協(xié)議避免了HTTP/2基于TCP的HOL(前序包阻塞)問題。今天,大多數(shù)人都會隨身帶著諸如智能手機(jī)等移動設(shè)備,在TCP中當(dāng)網(wǎng)絡(luò)環(huán)境發(fā)生變化時需要重新分配IP地址、建立連接,在未來這顯然太慢了。QUIC通過一個64 bit的GUID(Globally Unique Identifier,全球唯一標(biāo)識符)來標(biāo)記傳輸包,服務(wù)器可以通過它來區(qū)分來源端口,并且在QUIC連接斷開后不需要往返握手來建立連接。

      所有這些都使QUIC有著強(qiáng)大的吸引力和應(yīng)用前景,或許會在某一天取代TCP、HTTP,更有可能的是它們互相吸收對方的長處,共同發(fā)展。

      [1]Megyesi P, Kr?mer Z, Molnár S. How quick is QUIC[C]// Communications (ICC), 2016 IEEE International Conference on. IEEE, 2016: 1-6.

      [2]Biswal P, Gnawali O. Does QUIC make the Web faster[C]// Global Communications Conference (GLOBECOM), 2016 IEEE. IEEE, 2016: 1-6.

      [3]Gratzer F. QUIC-Quick UDP Internet Connections[J]. Future Internet (FI) and Innovative Internet Technologies and Mobile Communications (IITM), 2016, 39.

      [4]Carlucci G, De Cicco L, Mascolo S. HTTP over UDP: an Experimental Investigation of QUIC[C]//Proceedings of the 30th Annual ACM Symposium on Applied Computing. ACM, 2015: 609-614.

      Research on QUIC Protocol

      Chen Zhenbo
      (Wuhan Research Institute of Post and Telecommunications,Wuhan Hubei,430074)

      In order to solve the two main problems of TCP transmission: (1) the time-consuming transmission mechanism of connection and disconnection; (2) Head-of-line blocking (HOL), this paper introduces a new protocol called QUIC, which is based on UDP, uses UDP as the transport layer protocol, avoids the problem of time-consuming and HOL, and ensures the reliability of transmission, overcomes the existing problems of UDP transmission through a clever mechanism .

      TCP; HOL; UDP; QUIC

      猜你喜歡
      重傳服務(wù)端數(shù)據(jù)包
      SmartSniff
      面向異構(gòu)網(wǎng)絡(luò)的多路徑數(shù)據(jù)重傳研究?
      云存儲中基于相似性的客戶-服務(wù)端雙端數(shù)據(jù)去重方法
      新時期《移動Web服務(wù)端開發(fā)》課程教學(xué)改革的研究
      在Windows Server 2008上創(chuàng)建應(yīng)用
      數(shù)據(jù)鏈路層的選擇重傳協(xié)議的優(yōu)化改進(jìn)
      基于Libpcap的網(wǎng)絡(luò)數(shù)據(jù)包捕獲器的設(shè)計與實現(xiàn)
      視覺注意的數(shù)據(jù)包優(yōu)先級排序策略研究
      MPTCP中一種減緩緩存阻塞的重傳策略
      移動IPV6在改進(jìn)數(shù)據(jù)包發(fā)送路徑模型下性能分析
      邵阳市| 永清县| 图木舒克市| 兴安盟| 麻城市| 安吉县| 蓬溪县| 黑水县| 沂源县| 白河县| 安泽县| 泸水县| 肥东县| 施甸县| 长治市| 平定县| 秦安县| 祁门县| 高台县| 乌苏市| 大悟县| 蒙山县| 关岭| 托克托县| 嵊州市| 淮阳县| 禄丰县| 绿春县| 来安县| 兰坪| 舞钢市| 海城市| 宜丰县| 商水县| 田东县| 乐平市| 福贡县| 南京市| 大理市| 桓仁| 盘山县|