55

更新時間: 2013-07-14

廣告

HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)是網際網路上應用最為廣泛的一種網路傳輸協議,所有的WWW文件都必須遵守這個標準。是WWW的核心。Internet的基本協議是TCP/IP協議,目前廣泛採用的FTP、Archie Gopher等是建立在TCP/IP協議之上的應用層協議,不同的協議對應著不同的應用。WWW伺服器使用的主要協議是HTTP協議,即超文體傳輸協議。由於HTTP協議支持的服務不限於WWW,還可以是其它服務,因而HTTP協議允許用戶在統一的界面下,採用不同的協議訪問不同的服務,如FTP、Archie、SMTP、NNTP等。另外,HTTP協議還可用於名字伺服器和分散式對象管理。

廣告

1 HTTP -簡介

HTTPhttp和其他幾種網路協議

超文本傳輸協議(HTTP,HyperText Transfer Protocol)是互聯網上應用最為廣泛的一種網路協議。所有的WWW文件都必須遵守這個標準。設計HTTP最初的目的是為了提供一種發布和接收HTML頁面的方法。
HTTP的發展是萬維網協會(World Wide Web Consortium)和Internet工作小組(Internet Engineering Task Force)合作的結果,(他們)最終發布了一系列的RFC,其中最著名的就是RFC 2616。RFC 2616定義了HTTP協議的我們今天普遍使用的一個版本——HTTP 1.1。

HTTP是一個客戶端和伺服器端請求和應答的標準(TCP)。客戶端是終端用戶,伺服器端是網站。通過使用Web瀏覽器、網路爬蟲或者其它的工具,客戶端發起一個到伺服器上指定埠(默認埠為80)的HTTP請求。(我們稱這個客戶端)叫用戶代理(user agent)。應答的伺服器上存儲著(一些)資源,比如HTML文件和圖像。(我們稱)這個應答伺服器為源伺服器(origin server)。在用戶代理和源伺服器中間可能存在 http和其他幾種網路協議多個中間層,比如代理,網關,或者隧道(tunnels)。儘管TCP/IP協議是互聯網上最流行的應用,HTTP協議並沒有規定必須使用它和(基於)它支持的層。 事實上,HTTP可以在任何其他互聯網協議上,或者在其他網路上實現。HTTP只假定(其下層協議提供)可靠的傳輸,任何能夠提供這種保證的協議都可以被其使用。

廣告

HTTPHTTP協議的網頁

通常,由HTTP客戶端發起一個請求,建立一個到伺服器指定埠(默認是80埠)的TCP連接。HTTP伺服器則在那個埠監聽客戶端發送過來的請求。一旦收到請求,伺服器(向客戶端)發回一個狀態行,比如"HTTP/1.1 200 OK",和(響應的)消息,消息的消息體可能是請求的文件、錯誤消息、或者其它一些信息。HTTP使用TCP而不是UDP的原因在於(打開一個)一個網頁必須傳送很多數據,而TCP協議提供傳輸控制,按順序組織數據,和錯誤糾正。

通過HTTP或者HTTPS協議請求的資源由統一資源標示符(Uniform Resource Identifiers)(或者,更準確一些,URLs)來標識。

2 HTTP -協議功能

HTTPhttp功用

HTTP是超文本轉移協議,是客戶端瀏覽器或其他程序與Web伺服器之間的應用層通信協議。在Internet上的Web伺服器上存放的都是超文本信息,客戶機需要通過HTTP協議傳輸所要訪問的超文本信息。HTTP包含命令和傳輸信息,不僅可用於Web訪問,也可以用於其他網際網路/內聯網應用系統之間的通信,從而實現各類應用資源超媒體訪問的集成。
當我們想瀏覽一個網站的時候,只要在瀏覽器的地址欄里輸入網站的地址就可以了,例如www.*****.com,但是在瀏覽器的地址欄裡面出現的卻是:http://www.*******,你知道為什麼會多出一個「http」嗎?

廣告

我們在瀏覽器的地址欄里輸入的網站地址叫做URL (Uniform Resource Locator,統一資源定位符)。就像每家每戶都有一個門牌地址一樣,每個網頁也都有一個Internet地址。當你在瀏覽器的地址框中輸入一個URL或是單擊一個超級鏈接時,URL就確定了要瀏覽的地址。瀏覽器通過超文本轉移協議(HTTP),將Web伺服器上站點的網頁代碼提取出來,並翻譯成漂亮的網頁。因此,在我們認識HTTP之前,有必要先弄清楚URL的組成,例如:http://www.******.com/china/index.htm。它的含義如下:

1. http://:代表超文本轉移協議,通知****.com伺服器顯示Web頁,通常不用輸入;

2. www:代表一個Web(萬維網)伺服器;

廣告

3. ****.com/:這是裝有網頁的伺服器的域名,或站點伺服器的名稱;

4. China/:為該伺服器上的子目錄,就好像我們的文件夾;

5. Index.htm:index.htm是文件夾中的一個HTML文件(網頁)。

我們知道,Internet的基本協議是TCP/IP協議,然而在TCP/IP模型最上層的是應用層(Application layer),它包含所有高層的協議。高層協議有:文件傳輸協議FTP、電子郵件傳輸協議SMTP、域名系統服務DNS、網路新聞傳輸協議NNTP和HTTP協議等。

HTTP協議(HyperText Transfer Protocol,超文本轉移協議)是用於從WWW伺服器傳輸超文本到本地瀏覽器的傳送協議。它可以使瀏覽器更加高效,使網路傳輸減少。它不僅保證計算機正確快速地傳輸超文本文檔,還確定傳輸文檔中的哪一部分,以及哪部分內容首先顯示(如文本先於圖形)等。這就是你為什麼在瀏覽器中看到的網頁地址都是以http://開頭的原因。

廣告

WWW誕生以來,一個多姿多彩的資訊和虛擬的世界便出現在我們眼前,可是我們怎麼能夠更加容易地找到我們需要的資訊呢?當決定使用超文本作為WWW文檔的標準格式后,於是在1990年,科學家們立即制定了能夠快速查找這些超文本文檔的協議,即HTTP協議。經過幾年的使用與發展,得到不斷的完善和擴展,目前在WWW中使用的是HTTP/1.0的第六版。

3 HTTP -協議基礎

4 HTTP -協議結構

HTTP報文由從客戶機到伺服器的請求和從伺服器到客戶機的響應構成。請求報文格式如下:

請求行 - 通用信息頭 - 請求頭 - 實體頭 - 報文主體

請求行以方法欄位開始,後面分別是 URL 欄位和 HTTP 協議版本欄位,並以 CRLF 結尾。SP 是分隔符。除了在最後的 CRLF 序列中 CF 和 LF 是必需的之外,其他都可以不要。有關通用信息頭,請求頭和實體頭方面的具體內容可以參照相關文件。

應報文格式如下:

狀態行 - 通用信息頭 - 響應頭 - 實體頭 - 報文主體

狀態碼元由3位數字組成,表示請求是否被理解或被滿足。原因分析是對原文的狀態碼作簡短的描述,狀態碼用來支持自動操作,而原因分析用來供用戶使用。客戶機無需用來檢查或顯示語法。有關通用信息頭,響應頭和實體頭方面的具體內容可以參照相關文件。

5 HTTP -工作原理

既然我們明白了URL的構成,那麼HTTP是怎麼工作呢?我們接下來就要討論這個問題。

一次HTTP操作稱為一個事務,其工作過程可分為四步:

首先客戶機與伺服器需要建立連接。只要單擊某個超級鏈接,HTTP的工作就開始了。

建立連接后,客戶機發送一個請求給伺服器,請求方式的格式為:統一資源標識符(URL)、協議版本號,後邊是MIME信息包括請求修飾符、客戶機信息和可能的內容。

伺服器接到請求后,給予相應的響應信息,其格式為一個狀態行,包括信息的協議版本號、一個成功或錯誤的代碼,後邊是MIME信息包括伺服器信息、實體信息和可能的內容。

客戶端接收伺服器所返回的信息通過瀏覽器顯示在用戶的顯示屏上,然後客戶機與伺服器斷開連接。

如果在以上過程中的某一步出現錯誤,那麼產生錯誤的信息將返回到客戶端,由顯示屏輸出。對於用戶來說,這些過程是由HTTP自己完成的,用戶只要用滑鼠點擊,等待信息顯示就可以了。

HTTPhttp工作流程圖

許多HTTP通訊是由一個用戶代理初始化的並且包括一個申請在源伺服器上資源的請求。最簡單的情況可能是在用戶代理和伺服器之間通過一個單獨的連接來完成。在Internet上,HTTP通訊通常發生在TCP/IP連接之上。預設埠是TCP 80,但其它的埠也是可用的。但這並不預示著HTTP協議在Internet或其它網路的其它協議之上才能完成。HTTP只預示著一個可靠的傳輸。

這個過程就好像我們打電話訂貨一樣,我們可以打電話給商家,告訴他我們需要什麼規格的商品,然後商家再告訴我們什麼商品有貨,什麼商品缺貨。這些,我們是通過電話線用電話聯繫(HTTP是通過TCP/IP),當然我們也可以通過傳真,只要商家那邊也有傳真。

 以上簡要介紹了HTTP協議的宏觀運作方式,下面介紹一下HTTP協議的內部操作過程。

在WWW中,「客戶」與「伺服器」是一個相對的概念,只存在於一個特定的連接期間,即在某個連接中的客戶在另一個連接中可能作為伺服器。基於HTTP協議的客戶/伺服器模式的信息交換過程,它分四個過程:建立連接、發送請求信息、發送響應信息、關閉連接。這就好像上面的例子,我們電話訂貨的全過程。

其實簡單說就是任何伺服器除了包括HTML文件以外,還有一個HTTP駐留程序,用於響應用戶請求。你的瀏覽器是HTTP客戶,向伺服器發送請求,當瀏覽器中輸入了一個開始文件或點擊了一個超級鏈接時,瀏覽器就向伺服器發送了HTTP請求,此請求被送往由IP地址指定的URL。駐留程序接收到請求,在進行必要的操作后回送所要求的文件。在這一過程中,在網路上發送和接收的數據已經被分成一個或多個數據包(packet),每個數據包包括:要傳送的數據;控制信息,即告訴網路怎樣處理數據包。TCP/IP決定了每個數據包的格式。如果事先不告訴你,你可能不會知道信息被分成用於傳輸和再重新組合起來的許多小塊。

 也就是說商家除了擁有商品之外,它也有一個職員在接聽你的電話,當你打電話的時候,你的聲音轉換成各種複雜的數據,通過電話線傳輸到對方的電話機,對方的電話機又把各種複雜的數據轉換成聲音,使得對方商家的職員能夠明白你的請求。這個過程你不需要明白聲音是怎麼轉換成複雜的數據的。

6 HTTP -錯誤代碼解釋

"100" : Continue

"101" : witching Protocols

"200" : OK

"201" : Created

"202" : Accepted

"203" : Non-Authoritative Information

"204" : No Content

"205" : Reset Content

 "206" : Partial Content

"300" : Multiple Choices

"301" : Moved Permanently

"302" : Found

"303" : See Other

"304" : Not Modified

"305" : Use Proxy

"307" : Temporary Redirect

HTTP 400 - 請求無效

HTTP 401.1 - 未授權:登錄失敗

HTTP 401.2 - 未授權:伺服器配置問題導致登錄失敗

HTTP 401.3 - ACL 禁止訪問資源   

HTTP 401.4 - 未授權:授權被篩選器拒絕

HTTP 401.5 - 未授權:ISAPI 或 CGI 授權失敗

HTTP 403 - 禁止訪問

HTTP 403 - 對 Internet 服務管理器 (HTML) 的訪問僅限於 Localhost

HTTP 403.1 禁止訪問:禁止可執行訪問

HTTP 403.2 - 禁止訪問:禁止讀訪問

HTTP 403.3 - 禁止訪問:禁止寫訪問

HTTP 403.4 - 禁止訪問:要求 SSL

HTTP 403.5 - 禁止訪問:要求 SSL 128

HTTP 403.6 - 禁止訪問:IP 地址被拒絕

 HTTP 403.7 - 禁止訪問:要求客戶證書

HTTP 403.8 - 禁止訪問:禁止站點訪問

 HTTP 403.9 - 禁止訪問:連接的用戶過多

HTTP 403.10 - 禁止訪問:配置無效

HTTP 403.11 - 禁止訪問:密碼更改

 HTTP 403.12 - 禁止訪問:映射器拒絕訪問

HTTP 403.13 - 禁止訪問:客戶證書已被吊銷

HTTP 403.15 - 禁止訪問:客戶訪問許可過多

HTTP 403.16 - 禁止訪問:客戶證書不可信或者無效

HTTP 403.17 - 禁止訪問:客戶證書已經到期或者尚未生效

HTTP 404.1 - 無法找到 Web 站點

HTTP 404 - 無法找到文件

HTTP 405 - 資源被禁止

HTTP 406 - 無法接受

HTTP 407 - 要求代理身份驗證

HTTP 410 - 永遠不可用

HTTP 412 - 先決條件失敗

HTTP 414 - 請求 - URI 太長

HTTP 500 - 內部伺服器錯誤

HTTP 500.100 - 內部伺服器錯誤 - ASP 錯誤

HTTP 500-11 伺服器關閉

HTTP 500-12 應用程序重新啟動

HTTP 500-13 - 伺服器太忙

 HTTP 500-14 - 應用程序無效

HTTP 500-15 - 不允許請求 global.asa

Error 501 - 未實現

HTTP 502 - 網關錯誤

7 HTTP -版本歷史

8 HTTP -過程

HTTP是一個用於在客戶端和伺服器間請求和應答的協議,用於分散式超文本系統通用的、面向對象的協議。HTTP會話過程包括連接、請求、應答和關閉四個步驟。

廣告