HTTP2基礎教程-讀書筆記(一)發展史和誕生背景

楔子_菜菜發表於2018-02-12
《HTTP/2基礎教程》到手之後,用了兩天時間把它粗略的看完了,大致知道了HTTP/2中的一些概念以及產生的背景,現在再重讀一遍同時做一些筆記。此書適合作為自己的案頭常備書,不時翻閱一下。
新技術的出現,我們不妨問幾個問題:
1.它產生的背景是什麼?
2.它解決了什麼問題?
3.它的優勢是什麼?
4.它會帶來什麼引入成本或問題?
5.有類似解決方案嗎?
本篇文章不會全部回答上面的問題,後續的文章會慢慢解答。

進化史:

1963年,提出“超文字”的概念,1965年首次出現在 Ted Nelson 的文章中,其含義:

大量的書面材料或影象材料以複雜的方式相互聯絡,因此不便在紙介質上呈現或展示。其中可能包含內容摘要,或者內容分佈的脈絡圖以及各部分的內在聯絡;也可能包含審閱過其中內容的學者所新增的註釋、補充或腳註。

1989年,HTTP開始進入人們的視野。Tim Berners-Lee採用了 Ted Nelson 的兩個概念:超文字和超媒體。

1991年,HTTP/0.9確立,但是其相當簡單,只有 GET 方法,沒有首部。設計目的就是獲取HTML(純文字)。

1996年,HTTP/1.0規範通過,相較於0.9更新了大量內容:
  • 首部
  • 響應碼
  • 重定向
  • 錯誤
  • 條件請求
  • 內容編碼(壓縮)
  • 更多請求方法
......
雖有巨大飛躍但存在多個請求不能共用一個連線、缺少強制Host首部、快取的選擇簡陋,依舊影響了Web可擴充套件的方式。

1999年,HTTP/1.1跟著也被確定,強制客戶端提供Host首部,使得虛擬主機託管(一個IP上提供多個Web服務)成為可能。重用TCP連線,提高效能和效率。變更如下:
  • 快取相關首部的擴充套件
  • OPTIONS方法
  • Upgrade首部
  • Range(範圍)請求
  • 壓縮和傳輸編碼
  • 管道化

之後就沒有再變化,也不再改進。但是Web發生了翻天覆地的變化,最早只有幾千位元組、包含資源只有個位數、主要基於文字的網頁,如今發展為平均大小超過2MB、包含資源數平均為140的富媒體網站。同時使用者對效能的期望也改變了,不能忍受龜速網站。

誕生背景:
從上面的進化史可以看出,HTTP/1.1已經不能適應Web時代的發展,Web的發展已經超過了起初創造者的想象。急需要一個能抗住越來越複雜Web應用的協議。也就是在2015年,HTTP/2成為正式協議:可以更好地適應複雜頁面,同時又不犧牲速度、HTTP/2的應用不斷增加、網管可以利用它花很少的成本來提高網站的感知效能。

HTTP/2被寄予的期望:
  • 相比於使用TCP的HTTP/1.1,終端使用者可感知的多數延遲都有能夠量化的顯著改善;
  • 解決HTTP中的隊頭阻塞問題;
  • 並行的實現機制不依賴與伺服器建立多個連線,從而提升TCP連線的利用率,特別是在擁塞控制方面;
  • 保留HTTP/1.1的語義,可以利用已有的文件資源,包括但不限於HTTP方法、狀態碼、URI和首部欄位;
  • 明確定義HTTP/2和HTTP/1.x互動的方法,特別是通過中介時的方法(雙向);
  • 明確指出它們可以被合理使用的新的擴充套件點和策略。

個人總結:
順時代者昌,逆時代者亡。協議亦如此,人異乎?


跟多請關注公眾號:

                                    HTTP2基礎教程-讀書筆記(一)發展史和誕生背景


相關文章