前言
歡迎來到今天的每日一題,每日一提。昨天有聊到,HTTP 和 HTTPS 之間有什麼區別?面試官基本秉承著刨根問題的原則,肯定是不會輕易放過我們的,那麼自然是要繼續拷問了。所以我們今天就聊聊什麼是 HTTP,它有哪些組成部分。
什麼是 HTTP?
HTTP 代表超文字傳輸協議(Hypertext Transfer Protocol),它是一種用於在 Web 上傳送和接收資料的協議。HTTP 是 Web 應用程式和 Web 伺服器之間的通訊協議,通常透過 TCP/IP 協議來實現。
HTTP 的組成部分
HTTP 由兩個主要組成部分組成:請求和響應。
請求由三個主要部分組成:
- 請求行(Request Line):包括請求方法(GET、POST、PUT 等)、請求資源的 URL 和協議版本。
- 請求頭部(Request Header):包括一系列的鍵值對,用於描述請求的附加資訊,例如瀏覽器型別、所請求的資源型別等。
- 訊息正文(Message Body):可選的部分,包含與請求相關的資料(例如表單資料、JSON 資料等)。
響應也由三個主要部分組成:
- 狀態行(Status Line):包括協議版本、狀態程式碼和狀態描述。
- 響應頭部(Response Header):包括一系列的鍵值對,用於描述響應的附加資訊,例如伺服器型別、響應的資料型別等。
- 訊息正文(Message Body):可選的部分,包含與響應相關的資料(例如 HTML 頁面、JSON 資料等)。
當然除了這些基本組成部分外,HTTP 還包括一些其他的功能和特性,例如 Cookie、快取控制、身份驗證和安全等。這些功能和特性擴充套件了 HTTP 的功能,並使得它成為 Web 上最重要的協議之一。
如何工作的?
具體的工作流程如下:
- 瀏覽器解析 URL,獲取 Web 伺服器的 IP 地址和埠號,並使用 TCP 協議與伺服器建立連線。
- 瀏覽器構建 HTTP 請求報文,包括請求行、請求頭部和訊息正文等部分,並將其傳送給伺服器。
- 伺服器接收 HTTP 請求報文,並對請求進行處理,例如查詢資料庫或讀取檔案等操作。
- 伺服器將處理結果封裝成 HTTP 響應報文,包括狀態行、響應頭部和訊息正文等部分,並將其傳送回瀏覽器。
- 瀏覽器接收 HTTP 響應報文,並對響應進行處理,例如解析 HTML、CSS、JavaScript 等資源,並將其顯示在瀏覽器視窗中。
- 瀏覽器關閉 TCP 連線,釋放資源。
HTTP 的優缺點
優點:
- 簡單易用:HTTP 協議的語法和規範相對簡單,容易學習和使用。
- 可擴充套件性:HTTP 協議支援外掛和擴充套件,可以根據需要新增新的功能和特性。
- 傳輸超文字:HTTP 協議是傳輸超文字的標準協議,可以在網頁中嵌入各種形式的媒體內容。
- 分散式:HTTP 協議是基於客戶端-伺服器模式的,可以支援分散式計算和資源共享。
- 跨平臺性:HTTP 協議是跨平臺的,可以在不同的作業系統、程式語言和硬體平臺上使用,具有較好的相容性。
- 可讀性強:HTTP 協議使用文字形式來表示請求和響應,具有較好的可讀性,方便除錯和排錯。
- 支援多種傳輸方式:HTTP 協議支援多種傳輸方式,如普通文字、JSON、XML 等,可以適應不同的應用場景。
- 易於學習和使用:HTTP 協議的語法和規範相對簡單,容易學習和使用。
- 支援代理伺服器:HTTP 協議支援代理伺服器,可以在客戶端和伺服器之間建立代理,從而增強了協議的靈活性和可擴充套件性。
- 支援管道化機制:HTTP 協議支援管道化機制,可以同時處理多個請求,從而提高了協議的效能。
缺點:
- 不支援狀態管理:HTTP 協議是無狀態的,每個請求和響應都是獨立的,無法共享上下文資訊和狀態資訊,這可能會影響一些需要狀態管理的應用程式。
- 安全性差:HTTP 協議是明文傳輸的,資料容易被竊聽和篡改,因此安全性較差,需要額外的安全機制來保護資料的安全。
- 效能較低:HTTP 協議在傳輸大量資料和處理高併發請求時,效能較低,容易導致網路擁塞和延遲。
- 不支援推送功能:HTTP 協議不支援伺服器向客戶端主動推送資料的功能,客戶端需要定期向伺服器傳送請求才能獲取最新的資料。
- 沒有優先順序控制:HTTP 協議沒有優先順序控制的機制,所有的請求和響應都被視為同等重要,這可能會影響一些特定應用場景的效能表現。
- 請求-響應模式:HTTP 協議採用請求-響應模式,即客戶端必須等待伺服器響應後才能進行下一步操作,這可能會影響使用者體驗和應用程式的響應速度。
- 不支援資料流傳輸:HTTP 協議不支援資料流傳輸,資料必須一次性傳送完成後才能開始處理,這可能會影響協議的傳輸效率和效能。
總結
HTTP是一種應用層協議,用於在Web瀏覽器和Web伺服器之間進行資料通訊的一種方式。HTTP採用客戶端-伺服器模式,客戶端向伺服器傳送請求,伺服器接收請求並響應請求。請求和響應都由三部分組成。並且HTTP具有簡單、可擴充套件、易於實現和使用的特點,但也存在安全性較差、效率較低、無法保證可靠性、缺乏狀態維護機制等缺點。為了彌補HTTP的缺點,也有許多新的協議和技術不斷湧現,例如HTTPS、HTTP/2、WebSocket等。
結尾
如果覺得對你有幫助,可以多多評論,多多點贊哦,也可以到我的主頁看看,說不定有你喜歡的文章,也可以隨手點個關注哦,謝謝。
我是不一樣的科技宅,每天進步一點點,體驗不一樣的生活。我們下期見!