HTTP 結構概述

Web 客戶端和服務器

Web 內容都是存儲在 Web 服務器上的,Web 服務器所使用的是 HTTP 協議,因此經常被稱爲 HTTP 服務器,HTTP 服務器存儲了因特網的數據。客戶端向服務器發送 HTTP 請求,服務器會在 HTTP 響應中返回請求的數據。最常見的 HTTP 客戶端就是瀏覽器


資源

最簡單的 Web 資源就是 Web 服務器文件系統中的靜態文件,包括:文本文件、HTML 文件、圖片文件、視頻文件等等。資源不一定非得是靜態文件,還可以是根據需要生成內容的軟件程序。這些動態內容資源可以根據你的身份、所請求的信息或每天的不同時段來產生內容


媒體類型

因特網上有數千種不同的數據類型,HTTP 會給每種要通過 Web 傳輸的對象都打上了名爲 MIME 類的數據格式標籤。當 Web 瀏覽器從服務器中取回一個對象時,會查看相關的 MIME 類型,看看它是否知道應該如何處理這個對象。大多數瀏覽器都可以處理數百種常見的對象類型:顯示圖片文件、解析並格式化 HTML 文件、通過計算機聲卡播放音頻文件、或者運行外部插件軟件來處理特殊格式的數據

MIME 類型是一種文本標記,表示一種主要的對象類型和一個特定的子類型,中間由一條斜槓來分隔:

  • HTML 格式的文本文檔由 text/html 類型來標記
  • 普通的 ASCII 文本文檔由 text/plain 類型來標記
  • .JPEG 格式的圖片爲 image/jpeg 類型
  • .GIF 格式的圖片爲 image/gif 類型

URI

每個 Web 服務器資源都有一個名字,這樣客戶端就可以說明它們感興趣的資源是什麼了。服務器資源名被稱爲統一資源標識符(URI),就像郵政地址一樣,唯一標識並定位資源信息

常見的圖片資源 URI 如:http://www.joes-hardware.com/specials/saw-blade.gif


URL

統一資源定位符(URL)是資源標識符最常見的形式,描述了一臺特定服務器上某資源的特定位置

大部分 URL 都遵循一種標準格式,這種格式包含三個部分:

  • 第一部分被稱爲方案(scheme),說明訪問資源所使用的協議類型,通常是 HTTP 協議(http://)
  • 第二部分給出服務器的因特網地址,比如:www.joes-hardware.com
  • 其餘部分指定 Web 服務器上的某個資源,比如:/specials/saw-blade.gif

現在,幾乎所有的 URI 都是URL


URN

URI 的第二種形式就是統一資源名(URN),URN 作爲特定內容的唯一名稱使用,與目前的資源所在地無關,因此可以將資源四處搬移


方法

HTTP 支持幾種不同的請求命令,這些命令被稱爲 HTTP 方法,每條 HTTP 請求報文都包含一個方法,這個方法會告訴服務器要執行什麼動作(獲取一個 Web 頁面、運行一個程序、刪除一個文件等)

  • GET:用於請求服務器發送某個資源
  • PUT:用於向服務器上傳資源
  • DELETE:用於請求服務器刪除指定的資源
  • POST:用於向服務器提交數據,通常用於提交表單或上傳文件
  • HEAD:類似於 GET 請求,但服務器不返回請求的資源主體,只返回響應頭

狀態碼

每條 HTTP 響應報文返回時都會攜帶一個狀態碼,狀態碼是一個三位數字的代碼,告知客戶端請求是否成功,或者是否需要採取其他動作


報文

HTTP 報文是由一行行的簡單字符串組成,HTTP 報文都是純文本,所以人們可以很方便地對其進行讀寫。從 Web 客戶端發往 Web 服務端的 HTTP 報文稱爲請求報文,從服務端發往客戶端的報文稱爲響應報文

HTTP 報文包括以下三個部分:

  • 起始行:報文的第一行就是起始行,在請求報文中說明要做些什麼,在響應報文中說明出現了什麼情況
  • 首部字段:起始行後面有零個或多個首部字段,每個首部字段是一個鍵值對,首部以一個空行結束
  • 主體:空行之後就是可選的報文主體了,其中包含了所有類型的數據。請求主體中包括了要發送給 Web 服務器的數據,響應主體中裝載了要返回給客戶端的數據。起始行和首部都是文本形式且都是結構化的,而主體則不同,主體中可以包含任意的二進制數據(比如圖片、視頻、音軌、軟件程序)。當然,主體也可以包含文本

連接

HTTP 是個應用層協議,HTTP 無需操心網絡通信的具體細節,它把網絡通信的細節都交給了通用可靠的因特網傳輸協議 TCP/IP

因特網自身就是基於 TCP/IP 的,TCP/IP 是全世界的計算機和網絡設備常用的層次化分組交換網絡協議集。TCP/IP 隱藏了各種網絡和硬件的特點,使各種類型的計算機和網絡都能夠進行可靠的通信

只要建立了 TCP 連接,客戶端和服務器之間的報文交換就不會丟失,不會被破壞,也不會在接收時出現錯序了

用網絡術語來說,HTTP 協議位於 TCP 的上層,HTTP 使用 TCP 來傳輸其報文數據。與之類似,TCP 則位於 IP 的上層

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章