什麼是HTTP

什麼是HTTP

什麼是 HTTP ?你確定立馬跳出:「HTTP 是超文本傳輸協議,就是 HyperText Transfer Protocol」。面試

這樣回答仍是過於簡單,那到底什麼是 「超文本」,什麼是 「協議」? HTTP 下面還有哪些協議? HTTP 有什麼缺點以及優勢?編程

超文本傳輸協議 ,咱們拆成三個部分,超文本、傳輸、協議瀏覽器

咱們還要知道 HTTP 不是互聯網,也不是編程語言,是一種協議。HTTP 一般跑在 TCP/IP 協議棧之上,依靠 IP 協議實現尋址和路由、TCP 協議實現可靠數據傳輸、DNS 協議實現域名查找、SSL/TLS 協議實現安全通訊。此外,還有一些協議依賴於 HTTP,例如 WebSocket、HTTPDNS 等。這些協議相互交織,構成了一個協議網,而 HTTP 則處於中心地位。安全

協議

HTTP 是一個協議,不是開發語言,不是一個服務,也不是一種網絡。只是一種協議、一種約定。那什麼是協議呢?服務器

現實生活中也隨處可見。好比畢業時籤 」三方協議「,入職工做 」合同協議「,還有 咱們平時使用的軟件 」軟件協議「。網絡

其實一就是一種規範約定,約定雙方須要遵照的東西,只有在這個規定下雙方纔能正確的執行對應動做和享有對應的權益。編程語言

若是只有你一我的,那你天然能夠想幹什麼就幹什麼,想怎麼玩就怎麼玩,不會干涉其餘人,其餘人也不會干涉你,也就不須要所謂的「協議」。可是,一旦有了兩個以上的參與者出現,爲了保證最基本的順暢交流,協議就天然而然地出現了。ide

協議意味着有多個參與者爲了達成某個共同的目的而站在了一塊兒,除了要無疑義地溝通交流以外,還必須明確地規定各方的「責、權、利」,約定該作什麼不應作什麼,先作什麼後作什麼,作錯了怎麼辦,有沒有補救措施等等。就像 JVM 虛擬機加載 class ,只有符合協議規定的東西 JVM 才能正確解析和加載。優化

劃重點了老鐵們:HTTP 是一個用在計算機世界裏的協議。它使用計算機可以理解的語言確立了一種計算機之間交流通訊的規範,以及相關的各類控制和錯誤處理方式。編碼

傳輸

HTTP 是一個「傳輸協議」,所謂的「傳輸」(Transfer)其實很好理解,就是把一堆東西從 A 點搬到 B 點,或者從 B 點搬到 A 點,即「A<===>B」。

HTTP 協議是一個「雙向協議」。

也就是說,有兩個最基本的參與者 A 和 B,從 A 開始到 B 結束,數據在 A 和 B 之間雙向而不是單向流動。一般咱們把先發起傳輸動做的 A 叫作請求方,把後接到傳輸的 B 叫作應答方或者響應方

雙方約定使用 HTTP 協議來通訊,瀏覽器把一些數據發送給服務器,服務器再把數據返回給瀏覽器。

數據雖然是在 A 和 B 之間傳輸,但並無限制只有 A 和 B 這兩個角色,容許中間有「中轉」或者「接力」。

這樣,傳輸方式就從「A<===>B」,變成了「A<=>X<=>Y<=>Z<=>B」,A 到 B 的傳輸過程當中能夠存在任意多個「中間人」,而這些中間人也都聽從 HTTP 協議,只要不打擾基本的數據傳輸,就能夠添加任意的額外功能,例如安全認證、數據壓縮、編碼轉換等等,優化整個傳輸過程。

因此 HTTP 是一個在計算機世界裏專門用來在兩點之間傳輸數據的約定和規範。

超文本

所謂 「文本」(Text),就表示 HTTP 傳輸的不是 TCP/UDP 這些底層協議裏被切分的雜亂無章的二進制包(datagram),而是完整的、有意義的數據,能夠被瀏覽器、服務器這樣的上層應用程序處理。

在互聯網早期,「文本」 的確知識簡單的文字,可是如今包含着 圖片、視頻、音頻、壓縮包。

從面含義理解:超文本,就是超越了普通文本,也就是 圖片、視頻、音頻、壓縮包等混合體,最關鍵的是含有「超連接」,可以從一個「超文本」跳躍到另外一個「超文本」,造成複雜的非線性、網狀的結構關係。

咱們最熟悉的就應該是 HTML 了,它自己只是純文字文件,但內部用不少標籤訂義了對圖片、音頻、視頻等的連接,再通過瀏覽器的解釋,呈如今咱們面前的就是一個含有多種視聽信息的頁面。

OK,通過了對 HTTP 裏這三個名詞的詳細解釋,下次當你再面對面試官時,就能夠給出比「超文本傳輸協議」這七個字更準確更有技術含量的答案:「HTTP 是一個在計算機世界裏專門在兩點之間傳輸文字、圖片、音頻、視頻等超文本數據的約定和規範」。

以下圖所示,HTTP 涉及的知識點。左邊的部分是與 HTTP 有關係的各類協議,比較偏向於理論;而右邊的部分是與 HTTP 有關係的各類應用技術,偏向於實際應用。

HTTP

MageByte

相關文章
相關標籤/搜索