HTTP 協議的前世今生

2022-02-20 20:53:12 字數 1980 閱讀 4093

http 協議全稱是超文字傳輸協議(hypertext transfer protocol),這裡面需要理解三個地方:超文字、傳輸、協議,下面就從 http 協議的歷史講起。

20 世紀 60 年代,美國國防部高等研究計畫署(arpa)建立了 arpa 網,它有四個分布在世界各地的節點,被認為是網際網路的始祖。

到了 70 年代,基於對 arpa 網路的實踐和思考,研究人員發明出了著名的 tcp/ip 協議,並在 80 年代中期進入了 unix 核心,使更多計算機接入了網際網路。

這位大師叫蒂姆·伯納斯·李(tim berners-lee),是全球資訊網的創始人,簡單點說,是當代網際網路的創始人。

這三項技術直接奠定了我們當今 web 世界的技術,蒂姆把它稱為全球資訊網(world wide web)。

所以,1989 年,http 誕生了。

在 20 世紀 90 年代初,網際網路世界還是一片荒漠,計算機處理能力低下,儲存容量小,網速很慢。網路上的絕大多數資源都是純文字資源,所以 http 協議也是純文字格式的。

為了便於伺服器和客戶端處理,蒂姆最初設想的系統裡的文件都是唯讀的,所以只允許使用者通過 get 請求從伺服器上獲取 html 文件,並且在響應之後立即關閉連線,功能非常有限。

這一版 http 協議雖然很簡單,但是作為乙個原型,充分驗證了 web 服務的可行性。

1993 年,美國國家超級計算應用中心(ncsa)開發出了 mosaic,是第乙個可以**混排的瀏覽器,隨後又在 1995 年開發出了伺服器軟體 apache,簡化了 http 服務的搭建工作。

同一時期,在 1992 年發明了 jpeg 影象格式,1995 年發明了 *** **格式。

這些新技術的出現,促使 http 協議開始新增各種特性,從使用者需求的角度促進了 http 協議的發展。

在已有實踐的基礎上,經過一系列的草案,http/1.0 在 1996 年正式發布。主要增加了以下幾部分內容:

但是 http/1.0 並不是乙個標準,只是記錄已有實踐和模式的乙份參考文件,不具有實際的約束力,相當於乙個備忘錄。

1999 年,http/1.1 發布了 rfc 文件,編號為 2616,從版本號我們就可以看到,http/1.1 是對 http/1.0 的小幅度修正。但是乙個重要區別是,它是乙個正式的標準,而不是乙份參考文件。但是 http/1.1 說是小幅度修正也不太確切,這裡面主要變更點有:

我們當今世界的所有知名**,都是在這個時間點左右創立的,可以說有了 http/1.1,才開創了 web 1.0、web 2.0 時代。

不過,由於 http/1.1 太過龐大和複雜,因此在 2014 年又進行了一次修訂,拆分為六份較小的文件,7230 /7231/7232/7233/7234/7235

這六份文件增加了兩個大的需求:

http/1.1 存在兩個問題:

連線慢,請求是序列的,需要保證順序,例如乙個網頁中可能會有多個資源

效能差,http/1.1 是以文字的方式,借助 cpu 的 zip 壓縮方式減少網路頻寬,但是耗費了 前端和後端的 cpu

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 協議的。

20200414 http協議的前世今生

http 0.9是第乙個版本的http協議,已過時。它的組成極其簡單,只允許客戶端傳送get這一種請求,且不支援請求頭。由於沒有協議頭,造成了http 0.9協議只支援一種內容,即純文字。不過網頁仍然支援用html語言格式化,同時無法插入。請求與響應支援頭域 響應物件以乙個響應狀態行開始 響應物件不...

HTTP的前世今生

20世紀90年代初期網際網路絡非常簡陋,計算機的計算能力還比較低,這時候網上的絕大部份資源都是純文字的,這時候的http被定義成0.9版,功能非常有限,它同樣也採用了純文字格式,只能從伺服器上get資源,而且在響應請求之後立即關閉連線。在1993年 1995年之間,基於多 的發展以及各種瀏覽器爭相出...

HTTP 2的前世今生

前世 的前生是 google 開發的基於 tcp的傳輸層協議 spdy。spdy是對http 協議的增強。用以最小化網路延遲,提公升網路速度,優化使用者的網路使用體驗。spdy 並不用於取代 它只是修改了 的請求與應答在網路上傳輸的方式 這意味著只需增加乙個 spdy 傳輸層,現有的所有服務端應用均...