HTTP協議

HTTPHyperText Transfer Protocol,超文本輸傳協議)是用於從www(萬維網)服務器傳輸超文本到本地瀏覽器的傳送協議,它可以使瀏覽器更加高效,使用網絡傳減少。它不僅保證計算機正確快速地傳輸超文本文檔,還確定傳輸文檔中的哪一部分,以前哪部份內容首先顯示(如文本先於圖形)等。目前,HTTP協議有兩個版本:HTTP1.0HTTP1.1

HTTP是應用層協議,是建立在TCP協議基礎之上的(TCP是一個底層協議)。HTTP協議是一個基於“請求/響應”模式的、無狀態的協議。

HTTP消息內容

瀏覽器和WEB服務器之間會通過HTTPInternet上進行數據的發送和接收,這些數據也被稱爲HTTP消息(Message)。HTTP消息可以是客戶端到服務器的請求消息,也可是的服務器到客戶端的響應消息。

請求消息與響應消息都是由開始行、消息報頭(可選)、空行(只有CRLF的行)、消息正文(可選)組成的。

                       message = start-line                                   

                                *message-header                            

                                CRLF                                    

                                [message-body]                             

HTTP消息由開始行(start-line)、消息報頭(message-header)、消息正文(message-body3部分構成。

對於請求或者響應,開始行有所不同。對於請求消息,“開始行”就是請求行(request-line);對於響應消息,“開始行”就是狀態行(status-line)。

                           start-line = request-line | status-line                   

“消息報頭”就是前面所說的請求和響應的HTTP消息報頭,“消息正文”就是HTML文檔或者圖片等文件,它們之間由一個空行隔開。

1.HTTP請求內容

     客戶端通過發送HTTP請求向服務器請求對資源的訪問,這時,HTTP請求由下面的內容(HTTP消息)組成

                              message = request - Line                          

                                      *message - header                       

                                       CRLF                                

                                       [message - body]                       

 

請求行

  請求行(request - line)的結構如下:

   Method request-URI HTTP-Version CRLF                                    

Method:表示HTTP的請求方法,你如:GETPOST等,注意需要大寫

request-URI:表示統一資源標識符

HTTP-Version:表示請求的HTTP協議版本,HTTP/1.1 和 HTTP/1.0

CRLF:表示回車換行(實際上我們是無法閱讀出來的換行標誌)

 

HTTP請求方法

   常見的HTTP請求的方法就是GETPOSTHEAD,當然也包括其它方法:

       GET:通過請求地址獲得資源

HEAD:類似於GET,但是不返回正文信息,用於檢查對象是否存在,以及得到對象的元數據。

POST:通過添加新的內容進行請求資源

PUT:用於修改某個內容

DELETE:用於刪除某個內容

OPTIONS:詢問可以執行的有哪些方法

TRACE:用於遠程診斷服務器

 

2.HTTP響應內容

服務器到客戶端請求做出響應,這時,HTTP響應由下面的內容(HTTP消息)組成。

                              message = Status - Line                           

                                      *message - header                       

                                       CRLF                                

                                       [message - body]                       

 

狀態行

狀態行(Stauts-Line)的結構如下:

 HTTP-Version   Status-Code  Reason-Phrase CRLF

HTTP-Version:表示請求的HTTP協議版本,HTTP/1.1 和 HTTP/1.0

Status-Code:表示服務器發回給客戶端的狀態代碼

Reason-Phrase:表示與狀態代碼相對應的簡短文字描述

CRLF:表示回車換行(實際上我們是無法閱讀出來的換行標誌)

 

狀態代碼

狀態代碼(Status-Code)由3位數字組成,表示請求是否被理解或被滿足。狀態代碼的第一個數字定義了響應的類別(範圍是1-5),後面兩位數字沒有代表任何具體的分類。

1XX:指示信息。表示請求已經收到,繼續處理

2XX:成功。表示請求已經被成功處理,並已經被理解和接受

3XX:重定向。表示請求已經收到,但必須採取進一步行動才能完成請求

4XX:客戶端錯誤。請求中包括了有錯誤的語法,或者不能被完成,或者資源不存在

5XX:服務器錯誤。服務器出現了異常情況,儘管請求是正確的

 

原因短語

原因短語(Reason-Phrase)使用短語簡單地說明了狀態代碼所要表達的意思。例如:

  200:表示請求成功處理

  206:表示使用了Range進行分段傳送

  404:表示請求的資源沒有找到

  500:表示服務器內部出現了異常情況



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