互聯網發(fā)展了這么多年,其基礎的TCP/IP協(xié)議族一直沒怎么變過,正是這些運輸著字節(jié)流的標準協(xié)議,支撐起了我們幾乎全部的互聯網應用。
在傳輸層,協(xié)議主要包括TCP和UDP協(xié)議,TCP協(xié)議對于計算機專業(yè)的同學們來說都很熟悉。大部分找工作的計算機專業(yè)畢業(yè)生都會熟練的背下來TCP協(xié)議的三次握手和四次揮手,因為很多面試官都會問這個問題??梢娺@個問題是多么的基礎了。
相比于TCP的可靠連接而言,UDP協(xié)議則顯得不那么可靠了。形象一點的解釋TCP協(xié)議,它連接的建立過程相當于一個快遞員,先提前打電話給你問你在不在家,然后確認你在家之后,他再到你家敲門,然后再親手將快遞送給你。所以這是一個可靠連接。而UDP協(xié)議則相當于快遞員到了之后,把快遞扔在快遞超市,然后發(fā)個信息告訴你,快遞放快遞超市了你自己取下,如果丟了的話你找賣家重發(fā)一份。所以UDP協(xié)議顯得不那么可靠,但正因為不那么可靠,所以傳輸效率相比于TCP來說,就快了很多。
那么有沒有一種協(xié)議,能夠既高效又可靠呢?Google覺得這個事情可以研究一下,于是他們搞出了QUIC(Quick UDP Internet Connection),以嘗試提供一種兼顧低延遲和高可靠的互聯網基礎通信協(xié)議。
那么,QUIC是怎樣兼顧這兩個方面的呢?我們來看下它的結構和運行原理。
首先我們來看一下,QUIC的高效性來自于哪里。早期的TCP協(xié)議并沒有考慮到后來互聯網面臨的巨大安全問題,所以開發(fā)人員在TCP協(xié)議之上,重新開發(fā)了安全協(xié)議TLS和SSL,這樣,對于一個常用網站來講,建立連接的過程則包括了建立TCP連接和安全連接的過程,而QUIC重新編輯了其底層協(xié)議,將加密算法的協(xié)商整合到了建立連接的過程中,大大減少了建立連接所需要的數據包。相當于原來兩個獨立的辦事部門給整合到一起了,原來想辦事的話,要跑人社局民政局兩個窗口,而現在直接把兩個部門合并到一起了,想辦的事一起辦了,那么效率自然就大大提高了。下圖是QUIC與TCP+TLS的比較,可見QUIC的執(zhí)行效率遠高于兩者的結合。
除此之外,針對互聯網資源是各自獨立請求的特點,QUIC通過底層使用UDP協(xié)議方式,多路并行的傳輸各個請求資源。對于TCP而言,由于處理包是有嚴格的順序的,因此如果其中一個包遇到問題的話,需要等待這個包傳輸完成之后才能繼續(xù)進行。而QUIC則完全避免了因為不相干的包丟失而造成的阻塞現象,大大提升了傳輸效率。
另外,QUIC借鑒了互聯網大數據的一些方法論,添加了一個非常獨特的向前糾錯(Forward Error Correction)功能。我們知道類似Hadoop這種大數據框架,一份數據都有幾份備份以防出錯,QUIC相當于一個流行的Hadoop,他的每個數據包除了數據包本身應傳輸的數據之外,還帶了部分其它包的數據,因此少量的丟包可以通過其它包的冗余數據直接組裝起來,而不需要重傳。目前QUIC默認的冗余量是10%,即每發(fā)送10個數據包,其冗余數據就可以重新構建一個丟失的數據包。
最后,QUIC還有一個更明顯的好處,因為底層協(xié)議切換到了UDP協(xié)議,使得其連接不再依賴來源IP。我們知道對于TCP這樣的可靠連接而言,需要知道雙方的IP和端口,從而保持連接。其中的任何一個參數發(fā)生了變化,連接就要重新創(chuàng)建。這種模式在早期互聯網中并不是一個很大的問題,但是在移動網絡中,這個問題就大不一樣的了。因為每個人的手機都可能不斷在不同WIFI網絡和4G網絡中切換,這個過程中TCP連接則需要重建。例如很多人都經歷過,在玩王者榮耀的時候,如果網絡切換了,就會導致一小段時間的460。重新連上之后發(fā)現自己已經被對方打野抓了的情況。而換成QUIC之后,這個問題就不會存在了,因為QUIC協(xié)議不再依賴于這些參數,而通過自己的UUID參數進行標記,當設備網絡環(huán)境切換時,連接不會發(fā)生變化,因此無需重新握手。
看到這些優(yōu)點,很多人都很期盼QUIC能夠盡快成為新的互聯網基礎設施。但是因為協(xié)議多數是與操作系統(tǒng)直接綁定在一起的,因此,成為主流還需要一定的時間。不過相信通過業(yè)界人士的集體努力,這個問題很多就會得到解決。大家也會更好的享受互聯網帶來的生活便利。同時我們也要看到,除了互聯網應用以外,TCP/IP協(xié)議還在其它很多領域得到廣泛的應用,而QUIC本質上是針對互聯網服務而進行了大規(guī)模的優(yōu)化,這種優(yōu)化舍棄了很多原本的優(yōu)點,因此反而對于一些傳統(tǒng)應用場景并不友好。因此,QUIC本質上還是一種針對互聯網的應用協(xié)議。
喜歡本文的話,歡迎關注活在信息時代哦:)
聯系客服