《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互動的方法,特別是通過中介時的方法(雙向);
- 明確指出它們可以被合理使用的新的擴充套件點和策略。
個人總結:
順時代者昌,逆時代者亡。協議亦如此,人異乎?
跟多請關注公眾號: