Google與微軟想要通過SPDY與Speed+Mobility改進HTTP。本文將會介紹這兩個提案并指出他們對廣為使用的Internet協議帶來了哪些好處。
目前,Internet工程任務組(IETF)與W3C正在網絡路由、傳輸與安全等問題上緊密合作,包括1999年由Roy Fielding與T. Berners-Lee等人聯合簽名的關于HTTP 1.1的RFC 2616規(guī)范提案。自從上一個HTTP版本發(fā)布以來已經過去了12年多的時間,一些人已經開始注意到這個廣為使用的Internet協議需要進行增強以面對時代的需要。目前,針對HTTP 2.0已經有多份提案被提交到了IETF,這其中包括Google SPDY與微軟的HTTP Speed+Mobility。這兩個提案都向后兼容于前一個版本的協議,旨在構建在現有的基礎設施之上。
Google想要重點解決現有HTTP 1.1的速度問題:
HTTP實現的一個瓶頸在于HTTP需要通過多個連接來解決并發(fā)問題。這會導致一些問題,比如說為了建立連接所需的額外的往返過程、慢啟動的延遲以及客戶端的連接配額,這是由于客戶端會防止對任何一個服務器打開過多的連接。
出于以上原因,SPDY旨在:
在一個單獨的TCP連接(或是任何可靠的傳輸流)之上增加一個Framing Layer以實現多個并發(fā)的流。Framing Layer會針對類似于HTTP請求響應的流進行優(yōu)化,比如說現在運行在HTTP之上的應用也可以運行在SPDY之上,對于Web應用來說只需做很少的修改或是無需修改。
實際上,SPDY對HTTP 1.1進行了4個主要的改進,分別是多路請求、對請求劃分優(yōu)先級、壓縮頭以及服務器的流推送。雖然目前SPDY還僅僅是個提案,但它已經被實現出來并形成了產品。Google在其很多服務與Chrome中都使用到了SPDY。其他的實現還有Apache SPDY模塊、用于node.js的SPDY服務器、Netty、Firefox與Amazon Silk,Ngnix很快也會跟進。
微軟針對HTTP 2.0提出的規(guī)范將重點放在了速度問題與移動上,該提案從SPDY開始到WebSockets結束。在之前與InfoQ的一封郵件交流中,來自于微軟開放技術的高級程序經理及微軟提案的簽署者Adalberto Foresti提到“SPDY做的非常漂亮,它讓人們認識到了Web性能問題并采取了全新的方式改進HTTP以讓Web變得更快”。微軟的提案改進了SPDY,這是通過簡化”會話控制消息以刪除對于WebSockets控制幀來說冗余的條目來實現的,但與現有的HTTP語義并不兼容,或是實現一些在傳輸層上的重要概念”。
微軟的HTTP Speed+Mobility還增加了兩節(jié)內容,旨在改進“物聯網”上對于HTTP的使用,考慮到了CPU消耗、設備電池與資源、安全等問題。名為“Client is in control of content”的1.1.4節(jié)中提到:
考慮到Internet上各種各樣的客戶端以及連接數場景,客戶端是定義下載什么內容的最佳場所。瀏覽器或是應用有關于用戶當前正在做什么以及哪些數據在本地存在的第一手信息。比如說,目前使用的大多數瀏覽器都擁有強大的緩存,我們應該使用他們來存儲不經常變化的Web元素。
HTTP 2.0提案不應該強制瀏覽器或是應用下載沒有請求的或是已經被緩存的內容。此外,客戶端要有拒絕不想要或是不需要內容的權利。客戶端要能通知服務端自己已經擁有了已經緩存,不需要下載的元素。在理想情況下,這種來自于客戶端,發(fā)向服務端的反饋應該考慮到內容的增量審批,這樣才會形成一個高效的“推送”擴展以通過適當的安全性與正確的格式遞送正確的內容。
在名為“Network Cost and Power”的1.1.5節(jié)中,作者重點談到了電源與帶寬使用問題:
速度、消耗與電源之間的抉擇并不是一個簡單的問題。有時,速度可能是最需要考慮的事情。但有時,帶寬消耗或是電池壽命可能是決定因素。HTTP 2.0必須要能使開發(fā)者針對其具體的問題域約束進行優(yōu)化(約束可能會隨著時間的流逝而發(fā)生變化)而不是對通用問題給出一個統一的解決方案。
我們需要對更快的速度、更少的消耗、更低的電源使用量進行均衡處理。比如說,在網線上傳遞更少的數據會使頁面的加載速度更快,更省電以及占用更少的帶寬。但考慮到HTTP 2.0的使用場景千差萬別,事實并不總是如此。比如說,對于一個電池即將耗盡或是緩存即將占滿的設備來說,如果在保留HTTP 2.0中其他優(yōu)化的同時能夠禁用掉服務端推送更新將會提供更好的用戶體驗。因此,工作組需要同時考慮電源、消耗與速度問題。
為了解決方才提到的問題,微軟提出通過WebSocket升級來實現會話握手、保持與Framing,規(guī)范包含了用戶希望看到的一些底層細節(jié)信息。
微軟已經在今年3月舉辦的IETF 83大會上提交了其提案。他們還實現了一個開源的概念驗證原型,可以讓開發(fā)者評估HTTP Speed+Mobility提案,項目代碼位于GitHub上。
至于業(yè)界會選擇哪一個來實現還不明朗。根據IETF標準進程,“規(guī)范要經歷一個開發(fā)期、經過Internet社區(qū)的幾輪審查并根據體驗進行修訂、然后被恰當的組織采納為標準、最后發(fā)布”。
{{item.content}}