HTTP 協議全稱是超文本傳輸協議(Hypertext Transfer Protocol),這裏面須要理解三個地方:超文本、傳輸、協議,下面就從 HTTP 協議的歷史講起。html
20 世紀 60 年代,美國國防部高等研究計劃署(ARPA)創建了 ARPA 網,它有四個分佈在世界各地的節點,被認爲是互聯網的始祖。前端
到了 70 年代,基於對 ARPA 網絡的實踐和思考,研究人員發明出了著名的 TCP/IP 協議,並在 80 年代中期進入了 UNIX 內核,使更多計算機接入了互聯網。算法
這位大師叫蒂姆·伯納斯·李(Tim Berners-Lee),是萬維網的創始人,簡單點說,是當代互聯網的創始人。後端
在 1989 年,他發表了一篇論文,提出了在互聯網上構建超連接文檔系統的構想,在這篇論文裏他確立了三項關鍵技術:瀏覽器
這三項技術直接奠基了咱們當今 Web 世界的技術,蒂姆把它稱爲萬維網(World Wide Web)。緩存
因此,1989 年,HTTP 誕生了。安全
在 20 世紀 90 年代初,互聯網世界仍是一片荒漠,計算機處理能力低下,存儲容量小,網速很慢。網絡上的絕大多數資源都是純文本資源,因此 HTTP 協議也是純文本格式的。服務器
爲了便於服務器和客戶端處理,蒂姆最初設想的系統裏的文檔都是隻讀的,因此只容許用戶經過 GET 請求從服務器上獲取 HTML 文檔,而且在響應以後當即關閉鏈接,功能很是有限。網絡
這一版 HTTP 協議雖然很簡單,可是做爲一個原型,充分驗證了 Web 服務的可行性。併發
1993 年,美國國家超級計算應用中心(NCSA)開發出了 Mosaic,是第一個能夠圖文混排的瀏覽器,隨後又在 1995 年開發出了服務器軟件 Apache,簡化了 HTTP 服務的搭建工做。
同一時期,在 1992 年發明了 JPEG 圖像格式,1995 年發明了 MP3 音樂格式。
這些新技術的出現,促使 HTTP 協議開始添加各類特性,從用戶需求的角度促進了 HTTP 協議的發展。
在已有實踐的基礎上,通過一系列的草案,HTTP/1.0 在 1996 年正式發佈。主要增長了如下幾部份內容:
Content-Type
,傳輸數據再也不僅限於文本可是 HTTP/1.0 並非一個標準,只是記錄已有實踐和模式的一份參考文檔,不具備實際的約束力,至關於一個備忘錄。
1999 年,HTTP/1.1 發佈了 RFC 文檔,編號爲 2616,從版本號咱們就能夠看到,HTTP/1.1 是對 HTTP/1.0 的小幅度修正。可是一個重要區別是,它是一個正式的標準,而不是一份參考文檔。可是 HTTP/1.1 說是小幅度修正也不太確切,這裏面主要變動點有:
Cache Control
Keepalive
咱們當今世界的全部知名網站,都是在這個時間點左右創立的,能夠說有了 HTTP/1.1,纔開創了 Web 1.0、Web 2.0 時代。
不過,因爲 HTTP/1.1 太過龐大和複雜,所以在 2014 年又進行了一次修訂,拆分爲六份較小的文檔,7230 /7231/7232/7233/7234/7235
這六份文檔增長了兩個大的需求:
HTTP/1.1 存在兩個問題:
2010 年,Google 推出了新的 SPDY 協議,並應用於自家的服務器,HTTP/2 就是以 SPDY 爲基礎的,它的特色主要是:
HTTP/2 的主要問題有隊頭阻塞問題,也就是說,若干個 HTTP 請求在複用一個 TCP 的鏈接,那麼一旦發生丟包,形成的問題就是全部的請求都必須等待這個丟了的包重傳回來,哪怕這個包不是我這個 HTTP 請求的。
基於此,Google 發明了 QUIC(Quick UDP Internet Connections)協議,它是基於 UDP 的。所以,它就解決了如下幾個問題:
因此,QUIC 是一個在 UDP 之上的僞 TCP + TLS + HTTP/2 的多路複用協議。在將來,QUIC 協議成熟了的話,是有可能取代 TCP 協議的。
關注公衆號領取二十套技術圖譜