Google與微軟想要改進HTTP

jopen 12年前發布 | 6K 次閱讀 Google

Google 與微軟想要通過 SPDY 與 Speed+Mobility 改進 HTTP。本文將會介紹這兩個提案并指出他們對廣為使用的 Internet 協議帶來了哪些好處。

目前,Internet 工程任務組(IETF)與 W3C 正在網絡路由、傳輸與安全等問題上緊密合作,包括 1999 年由 Roy Fielding 與T. Berners-Lee 等人聯合簽名的關于 HTTP 1.1 的 RFC 2616規范提案。自從上一個 HTTP 版本發布以來已經過去了 12 年多的時間,一些人已經開始注意到這個廣為使用的 Internet 協議需要進行增強以面對時代的需要。目前,針對 HTTP 2.0 已經有多份提案被提交到了 IETF,這其中包括 Google SPDY 與微軟的 HTTP Speed+Mobility。這兩個提案都向后兼容于前一個版本的協議,旨在構建在現有的基礎設施之上。

Google 想要重點解決現有 HTTP 1.1 的速度問題:

HTTP 實現的一個瓶頸在于 HTTP 需要通過多個連接來解決并發問題。這會導致一些問題,比如說為了建立連接所需的額外的往返過程、慢啟動的延遲以及客戶端的連接配額,這是由于客戶端會防止對任何一個服務器打開過多的連接。

出于以上原因,SPDY 旨在:

在一個單獨的 TCP 連接(或是任何可靠的傳輸流)之上增加一個 Framing Layer 以實現多個并發的流。Framing Layer 會針對類似于 HTTP 請求響應的流進行優化,比如說現在運行在 HTTP 之上的應用也可以運行在 SPDY 之上,對于 Web 應用來說只需做很少的修改或是無需修改。

實際上,SPDY 對 HTTP 1.1 進行了 4 個主要的改進,分別是多路請求、對請求劃分優先級、壓縮頭以及服務器的流推送。雖然目前 SPDY 還僅僅是個提案,但它已經被實現出來并形成了產品。Google 在其很多服務與 Chrome 中都使用到了 SPDY。其他的實現還有 Apache SPDY 模塊、用于 node.js 的 SPDY 服務器、Netty、Firefox 與 Amazon Silk,Ngnix 很快也會跟進。

微軟針對 HTTP 2.0 提出的規范將重點放在了速度問題與移動上,該提案從 SPDY 開始到 WebSockets 結束。在之前與 InfoQ 的一封郵件交流中,來自于微軟開放技術的高級程序經理及微軟提案的簽署者 Adalberto Foresti 提到“SPDY 做的非常漂亮,它讓人們認識到了 Web 性能問題并采取了全新的方式改進 HTTP 以讓 Web 變得更快”。微軟的提案改進了 SPDY,這是通過簡化”會話控制消息以刪除對于 WebSockets 控制幀來說冗余的條目來實現的,但與現有的 HTTP 語義并不兼容,或是實現一些在傳輸層上的重要概念”。

微軟的 HTTP Speed+Mobility 還增加了兩節內容,旨在改進“物聯網”上對于 HTTP 的使用,考慮到了 CPU 消耗、設備電池與資源、安全等問題。名為“Client is in control of content”的1.1.4節中提到:

考慮到 Internet 上各種各樣的客戶端以及連接數場景,客戶端是定義下載什么內容的最佳場所。瀏覽器或是應用有關于用戶當前正在做什么以及哪些數據在本地存在的第一手信息。比如說,目前使用的大多數瀏覽器都擁有強大的緩存,我們應該使用他們來存儲不經常變化的 Web 元素。

HTTP 2.0 提案不應該強制瀏覽器或是應用下載沒有請求的或是已經被緩存的內容。此外,客戶端要有拒絕不想要或是不需要內容的權利。客戶端要能通知服務端自己已經擁有了已經緩存,不需要下載的元素。在理想情況下,這種來自于客戶端,發向服務端的反饋應該考慮到內容的增量審批,這樣才會形成一個高效的“推送”擴展以通過適當的安全性與正確的格式遞送正確的內容。

在名為“Network Cost and Power”的1.1.5節中,作者重點談到了電源與帶寬使用問題:

速度、消耗與電源之間的抉擇并不是一個簡單的問題。有時,速度可能是最需要考慮的事情。但有時,帶寬消耗或是電池壽命可能是決定因素。HTTP 2.0 必須要能使開發者針對其具體的問題域約束進行優化(約束可能會隨著時間的流逝而發生變化)而不是對通用問題給出一個統一的解決方案。

我們需要對更快的速度、更少的消耗、更低的電源使用量進行均衡處理。比如說,在網線上傳遞更少的數據會使頁面的加載速度更快,更省電以及占用更少的帶寬。但考慮到 HTTP 2.0 的使用場景千差萬別,事實并不總是如此。比如說,對于一個電池即將耗盡或是緩存即將占滿的設備來說,如果在保留 HTTP 2.0 中其他優化的同時能夠禁用掉服務端推送更新將會提供更好的用戶體驗。因此,工作組需要同時考慮電源、消耗與速度問題。

為了解決方才提到的問題,微軟提出通過 WebSocket 升級來實現會話握手、保持與 Framing,規范包含了用戶希望看到的一些底層細節信息。

微軟已經在今年 3 月舉辦的 IETF 83大會上提交了其提案。他們還實現了一個開源的概念驗證原型,可以讓開發者評估 HTTP Speed+Mobility 提案,項目代碼位于 GitHub 上。

至于業界會選擇哪一個來實現還不明朗。根據 IETF 標準進程,“規范要經歷一個開發期、經過 Internet 社區的幾輪審查并根據體驗進行修訂、然后被恰當的組織采納為標準、最后發布”。

相關資源:HTTPbis 工作組開始考慮 HTTP/2.0

查看英文原文:Google and Microsoft Want to Improve HTTP

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!