[前端 · 面試 ]HTTP 總結(一)—— HTTP 概述

程式設計三昧發表於2021-08-01

最近我在做前端面試題總結系列,感興趣的朋友可以新增關注,歡迎指正、交流。

概念

HTTP 的全稱是 Hyper Text Transfer Protocol,翻譯過來就是“超文字傳輸協議”。

HTTP 是一個簡單的請求-響應協議,它通常執行在 TCP 之上。它指定了客戶端可能傳送給伺服器什麼樣的訊息以及得到什麼樣的響應。

補充

HTTP 是全球資訊網(World Wide Web)的基礎協議

HTTP 詳細規定了瀏覽器和全球資訊網(WWW = World Wide Web)伺服器之間互相通訊的規則,通過因特網傳送全球資訊網文件的資料傳送協議。

自 Tim Berners-Lee 博士和他的團隊在 1989-1991 年間創造出 HTTP 以來,HTTP 已經發生了太多的變化,在保持協議簡單性的同時,不斷擴充套件其靈活性。如今,HTTP已經從一個只在實驗室之間交換檔案的早期協議進化到了可以傳輸圖片,高解析度視訊和3D效果的現代複雜網際網路協議。

HTTP 是應用層協議

HTTP 是應用層的協議,通過 TCP,或者是 TLS -加密的TCP連線來傳送,理論上任何可靠的傳輸協議都可以使用。

同其他應用層協議一樣,HTTP 協議是為了實現某一類具體應用的協議,並由某一執行在使用者空間的應用程式來實現其功能。

HTTP 是一種協議規範,這種規範記錄在文件上,為真正通過 HTTP 進行通訊的 HTTP 的實現程式。

HTTP 是一種可擴充套件的協議

因為其良好的擴充套件性,時至今日,它不僅被用來傳輸超文字文件,還用來傳輸圖片、視訊或者向伺服器傳送如 HTML 表單這樣的資訊。HTTP 還可以根據網頁需求,僅獲取部分 Web 文件內容更新網頁。

HTTP 是基於 B/S 架構進行通訊的

HTTP 的伺服器端實現程式有 httpd、nginx 等。

其客戶端的實現程式主要是 Web 瀏覽器,例如 Firefox、Google Chrome、Safari、Opera 等。

Web 服務是基於 TCP 的,因此為了能夠隨時響應客戶端的請求,Web 伺服器需要監聽在 80/TCP 埠,這樣客戶端瀏覽器和 Web 伺服器之間就可以通過 HTTP 進行通訊了。

HTTP 由請求和響應組成

HTTP 是一個標準的客戶端伺服器模型。

客戶端和服務端通過交換各自的訊息(與資料流正好相反)進行互動。由像瀏覽器這樣的客戶端發出的訊息叫做 requests,被服務端響應的訊息叫做 responses。

請求和響應訊息的頭以 ASCII 形式給出;而訊息內容則具有一個類似 MIME 的格式。這個簡單模型是早期 Web 成功的有功之臣,因為它使開發和部署非常地直截了當。

HTTP 是一種能夠獲取如 HTML 這樣的網路資源的 protocol (通訊協議)

它是在 Web 上進行資料交換的基礎,是一種 client-server 協議。

請求通過一個實體被髮出,實體也就是使用者代理。大多數情況下,這個使用者代理都是指瀏覽器,當然它也可能是任何東西,比如一個爬取網頁生成維護搜尋引擎索引的機器爬蟲。

也就是說,請求通常是由像瀏覽器這樣的接受方發起的。一個完整的Web 文件通常是由不同的子文件拼接而成的,像是文字、佈局描述、圖片、視訊、指令碼等等。

A Web document is the composition of different resources

HTTP 協議以明文方式傳送內容

HTTP 不提供任何方式的資料加密,如果攻擊者擷取了Web瀏覽器和網站伺服器之間的傳輸報文,就可以直接讀懂其中的資訊,因此,HTTP 協議不適合傳輸一些敏感資訊,比如:信用卡號、密碼等支付資訊。

總結

HTTP 是一種執行於 TCP 協議上的應用層協議。

~

~ 本文完,感謝閱讀!

~

學習有趣的知識,結識有趣的朋友,塑造有趣的靈魂!

大家好,我是〖程式設計三昧〗的作者 隱逸王,我的公眾號是『程式設計三昧』,歡迎關注,希望大家多多指教!

你來,懷揣期望,我有墨香相迎! 你歸,無論得失,唯以餘韻相贈!

知識與技能並重,內力和外功兼修,理論和實踐兩手都要抓、兩手都要硬!

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章