解密HTTP協議:探索其組成部分與工作原理

不一樣的科技宅發表於2023-04-18

前言

  歡迎來到今天的每日一題,每日一提。昨天有聊到,HTTP 和 HTTPS 之間有什麼區別?面試官基本秉承著刨根問題的原則,肯定是不會輕易放過我們的,那麼自然是要繼續拷問了。所以我們今天就聊聊什麼是 HTTP,它有哪些組成部分。

什麼是 HTTP?

  HTTP 代表超文字傳輸協議(Hypertext Transfer Protocol),它是一種用於在 Web 上傳送和接收資料的協議。HTTP 是 Web 應用程式和 Web 伺服器之間的通訊協議,通常透過 TCP/IP 協議來實現。

HTTP 的組成部分

HTTP 由兩個主要組成部分組成:請求和響應。

請求由三個主要部分組成:

  1. 請求行(Request Line):包括請求方法(GET、POST、PUT 等)、請求資源的 URL 和協議版本。
  2. 請求頭部(Request Header):包括一系列的鍵值對,用於描述請求的附加資訊,例如瀏覽器型別、所請求的資源型別等。
  3. 訊息正文(Message Body):可選的部分,包含與請求相關的資料(例如表單資料、JSON 資料等)。

響應也由三個主要部分組成:

  1. 狀態行(Status Line):包括協議版本、狀態程式碼和狀態描述。
  2. 響應頭部(Response Header):包括一系列的鍵值對,用於描述響應的附加資訊,例如伺服器型別、響應的資料型別等。
  3. 訊息正文(Message Body):可選的部分,包含與響應相關的資料(例如 HTML 頁面、JSON 資料等)。

  當然除了這些基本組成部分外,HTTP 還包括一些其他的功能和特性,例如 Cookie、快取控制、身份驗證和安全等。這些功能和特性擴充套件了 HTTP 的功能,並使得它成為 Web 上最重要的協議之一。

如何工作的?


具體的工作流程如下:

  1. 瀏覽器解析 URL,獲取 Web 伺服器的 IP 地址和埠號,並使用 TCP 協議與伺服器建立連線。
  2. 瀏覽器構建 HTTP 請求報文,包括請求行、請求頭部和訊息正文等部分,並將其傳送給伺服器。
  3. 伺服器接收 HTTP 請求報文,並對請求進行處理,例如查詢資料庫或讀取檔案等操作。
  4. 伺服器將處理結果封裝成 HTTP 響應報文,包括狀態行、響應頭部和訊息正文等部分,並將其傳送回瀏覽器。
  5. 瀏覽器接收 HTTP 響應報文,並對響應進行處理,例如解析 HTML、CSS、JavaScript 等資源,並將其顯示在瀏覽器視窗中。
  6. 瀏覽器關閉 TCP 連線,釋放資源。

HTTP 的優缺點

優點:

  1. 簡單易用:HTTP 協議的語法和規範相對簡單,容易學習和使用。
  2. 可擴充套件性:HTTP 協議支援外掛和擴充套件,可以根據需要新增新的功能和特性。
  3. 傳輸超文字:HTTP 協議是傳輸超文字的標準協議,可以在網頁中嵌入各種形式的媒體內容。
  4. 分散式:HTTP 協議是基於客戶端-伺服器模式的,可以支援分散式計算和資源共享。
  5. 跨平臺性:HTTP 協議是跨平臺的,可以在不同的作業系統、程式語言和硬體平臺上使用,具有較好的相容性。
  6. 可讀性強:HTTP 協議使用文字形式來表示請求和響應,具有較好的可讀性,方便除錯和排錯。
  7. 支援多種傳輸方式:HTTP 協議支援多種傳輸方式,如普通文字、JSON、XML 等,可以適應不同的應用場景。
  8. 易於學習和使用:HTTP 協議的語法和規範相對簡單,容易學習和使用。
  9. 支援代理伺服器:HTTP 協議支援代理伺服器,可以在客戶端和伺服器之間建立代理,從而增強了協議的靈活性和可擴充套件性。
  10. 支援管道化機制:HTTP 協議支援管道化機制,可以同時處理多個請求,從而提高了協議的效能。

缺點:

  1. 不支援狀態管理:HTTP 協議是無狀態的,每個請求和響應都是獨立的,無法共享上下文資訊和狀態資訊,這可能會影響一些需要狀態管理的應用程式。
  2. 安全性差:HTTP 協議是明文傳輸的,資料容易被竊聽和篡改,因此安全性較差,需要額外的安全機制來保護資料的安全。
  3. 效能較低:HTTP 協議在傳輸大量資料和處理高併發請求時,效能較低,容易導致網路擁塞和延遲。
  4. 不支援推送功能:HTTP 協議不支援伺服器向客戶端主動推送資料的功能,客戶端需要定期向伺服器傳送請求才能獲取最新的資料。
  5. 沒有優先順序控制:HTTP 協議沒有優先順序控制的機制,所有的請求和響應都被視為同等重要,這可能會影響一些特定應用場景的效能表現。
  6. 請求-響應模式:HTTP 協議採用請求-響應模式,即客戶端必須等待伺服器響應後才能進行下一步操作,這可能會影響使用者體驗和應用程式的響應速度。
  7. 不支援資料流傳輸:HTTP 協議不支援資料流傳輸,資料必須一次性傳送完成後才能開始處理,這可能會影響協議的傳輸效率和效能。

總結

  HTTP是一種應用層協議,用於在Web瀏覽器和Web伺服器之間進行資料通訊的一種方式。HTTP採用客戶端-伺服器模式,客戶端向伺服器傳送請求,伺服器接收請求並響應請求。請求和響應都由三部分組成。並且HTTP具有簡單、可擴充套件、易於實現和使用的特點,但也存在安全性較差、效率較低、無法保證可靠性、缺乏狀態維護機制等缺點。為了彌補HTTP的缺點,也有許多新的協議和技術不斷湧現,例如HTTPS、HTTP/2、WebSocket等。

結尾

  如果覺得對你有幫助,可以多多評論,多多點贊哦,也可以到我的主頁看看,說不定有你喜歡的文章,也可以隨手點個關注哦,謝謝。

  我是不一樣的科技宅,每天進步一點點,體驗不一樣的生活。我們下期見!

相關文章