一文了解 HTTP

誕生時刻

1989年,任職於歐洲核子研究中心(CERN)的蒂姆·伯納斯 - 李(Tim Berners-Lee)發表了一篇論文,提出了在網際網路上構建超連結文件系統的構想。基於這個構想確立了三項技術:

URI: 統一資源識別符號,作為網際網路資源的唯一身份

HTML:超文字標記語言,描述超文字文件。

HTTP:超文字傳輸協議,用來作為文件傳輸的協議。

蒂姆把這個系統稱為 “全球資訊網” (World Wide Web),也就是我們現在所熟知的 Web 。

HTTP/0。9

HTTP 於 1990年問世。在90年代初期,網路上絕大多數的資源都是純文字,那時的 HTTP 並沒有作為正式的標準被建立。0。9版本其結構比較簡單,為了便於伺服器和客戶端處理,採用純文字格式。

HTTP /1。0

1993 年,NCSA(美國國家超級計算應用中心)開發出了 Mosaic,是第一個可以圖文混排的瀏覽器,隨後又在 1995 年開發出了伺服器軟體 Apache,簡化了 HTTP 伺服器的搭建工作。

這寫新技術促使更多人開始使用網際網路,並對 HTTP 提出最佳化改進意見,不斷促進著 HTTP 的發展。

在這些基礎上, 1996 年的 5 月,HTTP 正式作為標準被公佈,命名為 HTTTP/1。0。相對於 0。9 版本增加了以下內容:

增加了 HEAD、POST 等新方法

增加了響應狀態碼

引入了協議版本號概念

引入了 HTTP Header(頭部) 的概念

傳輸的資料不再侷限於文字

HTTP 1。1

1995 年,網景的 Netscape Navigator 和微軟的 Internet Explorer 開始了著名的“瀏覽器大戰”,最終微軟的 IE 取得了勝利。瀏覽器之間的相互競爭極大的推動了 Web 的發展,由此 HTTP 也跟著有了進一步的演進,在 1997 年 1 月公佈了 HTTP/1。1, 並在 1999年釋出了新的修訂版 RFC2616,成為了當前版本的最新版本。

該版本基於 HTTP/1。0做了很多新的富有成效的改動,其主要變更點如下:

增加了 PUT 、DELETE 等新的方法

增加了快取管理和控制

明確了連線管理,允許持久連線

允許響應資料分塊,利於大檔案的傳輸

強制要求 Host 頭,讓網際網路主機託管成為可能

HTTP/1。1 的推出,促進了網際網路的快速發展,在現在依舊是主流的HTTP協議版本。

HTTP/2

在 HTTP/1。1 釋出之後,網際網路出現了爆發式增長,由此也出現了對 HTTP 不滿的一些意見,例如 連線慢,無法跟上網際網路發展的需求,Google終於看不下去了,打算撬動 HTTP 協議的改革,其推出了 SPDY協議,並在 Chrome上應用,Chrome 在全球佔有率達到 60%,Google 借勢推動了 網際網路標準化組織 以 SPDY 為基礎了定製了新版本的 HTTP 協議,在 2015 年釋出了 HTTP/2。

HTTP/2 充分考慮了網際網路當前現狀,做了如下改動:

二進位制協議,不再是純文字

可發起多個請求

使用專門演算法壓縮頭部,減少資料傳輸量

允許伺服器主動向客戶端推送資料

雖然 HTTP/2 已經發布了好幾年了,但因 HTTP/1。1 太過經典和強勢,目前其普及率還比較低,大多數網站還是用的 HTTP/1。1,例如百度:

HTTP 是什麼?

HTTP 就是超文字傳輸協議,也就是 HyperText Transfer Protocol

基本上你在網上各種教材和回答得到的都是這個答案,但是如果你沒怎麼細緻的瞭解過 HTTP,可能這句話對你來說也是丈二和尚,摸不著頭腦。那我們就來細緻拆解分析下;

超文字傳輸協議

,我們把它拆成三個部分來解讀:

超文字

傳輸

協議

協議

。HTTP 它就是一個協議,協議就是對參與者的一種行為約定和規範,這裡舉個現實生活中的例子。例如,你在外面租房子的時候,會和房東籤一個合同,公司入職的時候會籤一個勞動合同,這些都是協議,雙方要遵守協議約定的內容。

HTTP 是一個用在計算機世界裡的協議。它使用計算機能夠理解的語言確立了一種計算機之間交流通訊的規範,以及相關的各種控制和錯誤處理方式。

傳輸。

傳輸,其實按照字面意思理解起來非常簡單,就是把一個東西從 A 傳到 B,或者從 B 傳到 A。HTTP 是一個 “雙向協議”,也就意味著資料在 A、B之間是雙向流動的。我們把發起傳輸的一方叫作

請求方

,接到傳輸的一方叫作

響應方

,例如你在瀏覽器訪問影片網站,那麼瀏覽器就是請求方,影片網站就是響應方。

總結下來 HTTP 傳輸的定義就是:

HTTP 是一個在計算機世界裡專門用來在兩點之間傳輸資料的約定和規範。

文字。

這表示 HTTP 傳輸的是完整的、有意義的資料,可以被瀏覽器、伺服器這些應用程式處理。

在 HTTP 早期,只支援一些簡單的字元文字,但隨著 HTTP 不斷的演進,現在已經能夠支援圖片、音訊、影片,壓縮包,這些對於 HTTP 來說都可以算作是 “

文字

”。

超文字

,它是一個可以包含文字、圖片、音訊、影片等的混合體,並且很關鍵的一點是可以含有超連結,能夠從一個超文字跳躍到另一個超文字,形成複雜的非線性、網狀的結構關係。

超文字對於我們來說最熟悉的就是 HTML了,它本身只是一個純文字檔案,但是內部卻用多種標籤定義了圖片、音訊、影片等,透過瀏覽器的解析,就呈現出了一個豐富多彩的頁面。

經過對 HTTP 三個名詞的解析,那我們如果再對 HTTP做一個完整描述,就是:

HTTP 是一個在計算機世界裡專門在兩點之間傳輸文字、圖片、音訊、影片等超文字資料的約定和規範

HTTP 有哪些特點

1。 是不儲存狀態的協議

HTTP 自身不對請求和響應之間的通訊狀態進行儲存。每當有新的請求傳送,就會有對應的新響應產生,協議本身不會對之前一切的請求和響應報文進行保留。這種做法可以更快處理大量事務,確保協議的可伸縮性。

2。請求URI 定位資源

HTTP 協議使用 URI 定位網際網路上的資源。正是因為 URI 的特定功能,在網際網路上任意位置的資源都能訪問到。

說到 URI ,就不得不把 URL 拿出來進行對比,好多人對兩者分不太清楚, 在《HTTP權威指南》一書中,對於URI的定義是:統一資源識別符號;對於URL的定義是:統一資源定位符,URL 相當於 URI 的子集。

URI

,統一資源識別符號,標識就代表著是在某一規則下能把一個資源唯一性的標識出來,例如,一個人,他的唯一標識怎麼去區分呢,用名字?名字會重複的,但是身份證可以,身份證不會重複,所以身份證就是一個 URI。

URL,

統一資源定位符,例如我要找一個具體的人,我知道了他是上海市/虹口區/xx路/xx小區/xx號xx室/張三,那麼透過這個字串我們就能標識出一個唯一的人,它也是起到了 URI 的作用,因此

URL 是 URI 的子集

,URL 是以描述人的位置來唯一確定一個人的。也就是說 URL 是用定位的方式實現的 URI,所有的URL 都可以稱之為 URI,但反過來是不行。

3。 使用方法下達命令

當傳送請求報文時,我們透過一個方法的命令標識來指定請求的資源期望產生某種行為,下面列舉了一些 HTTP/1。0 和 HTTP/1。1 支援的方法。

通常我們用到的最多的方法就是 GET 和 POST。

4。可靠傳輸

因為 HTTP 協議是基於 TCP/IP 的,而 TCP 本身是一個

可靠

的傳輸協議,所以 HTTP 自然也就繼承了這個特性,能夠在請求方和應答方之間“可靠”地傳輸資料。

HTTP 並不能 100% 保證資料一定能夠傳送到另一端,在網路繁忙、連線質量差等惡劣的環境下,也有可能收發失敗。

可靠

只是向使用者提供了一個

承諾

,會在下層用多種手段

儘量

保證資料的完整送達。

3T+技術學習影片資源,500+技術電子書,大量高效工具及網站,私信回覆【資源】即可免費獲取