HTTP原理

HTTP協議工作於客戶端-服務端架構爲上。 瀏覽器作爲HTTP客戶端通過URLHTTP服務端即WEB服務器發送所有請求。

HTTP默認端口號爲80, 但是你也可以改爲8080或者其他端口。

HTTP三點注意事項:
    HTTP是無連接的: 無連接的含義是限制每次連接只處理一個請求。 服務器處理完客戶的請求, 並收到客戶的應答後, 即斷開連接。 採用這種方式可以節省傳輸時間。

HTTP是媒體獨立的: 這意味着, 只要客戶端和服務器知道如何處理的數據內容, 任何類型的數據都可以通過HTTP發送。 客戶端以及服務器指定使用適合的MIME-type內容類型。

HTTP是無狀態HTTP協議是無狀態協議。 無狀態是指協議對於事務處理沒有記憶能力。 缺少狀態意味着如果後續處理需要前面的信息, 則它必須重傳, 這樣可能導致每次連接傳送的數據量增大。 另一方面, 在服務器不需要先前信息時它的應答就較快。

HTTP消息結構

HTTP是基於客戶端/服務端( C/S) 的架構模型, 通過一個可靠的鏈接來交換信息, 是一個無狀態的請求/響應協議。

一個HTTP"客戶端"是一個應用程序( Web瀏覽器或其他任何客戶端) , 通過連接到服務器達到向服務器發送一個或多個HTTP的請求的目 的。

一個HTTP"服務器"同樣也是一個應用程序(通常是一個Web服務, 如Apache Web服務器或IIS服務器等) , 通過接收客戶端的請求並向客戶端發送HTTP響應數據。

HTTP使用統一資源標識符( Uniform Resource Identifiers, URI) 來傳輸數據和建立連接。

一旦建立連接後, 數據消息就通過類似Internet郵件所使用的格式[RFC5322]和多用途Internet郵件擴展( MIME[RFC2045]來傳送。

客戶端請求消息

客戶端發送一個HTTP請求到服務器的請求消息包括以下格式: 請求行( request line) 、 請求頭部( header) 、 空行和請求數據4個部分組成,下圖給出了請求報文的一般格式。

wKioL1UME7Xzb9moAABqV18esyQ206.jpg

服務器響應消息

HTTP響應也由三個部分組成, 分別是: 狀態行、 消息報頭、 響應正文。

HTTP請求方法

根據HTTP標準, HTTP請求可以使用多種請求方法。

HTTP1 .0定義了三種請求方法: GET, POST HEAD方法。

HTTP1 .1 新增了五種請求方法: OPTIONS, PUT, DELETE, TRACE CONNECT 方法。

序號方法描述
1GET請求指定的頁面信息, 並返回實體主體。
2HEAD類似於get請求, 只不過返回的響應中沒有具體的內容, 用於獲取報頭
3POST
向指定資源提交數據進行處理請求(例如提交表單或者上傳文件) 。 數據被包含在請求體中。 POST請求可
能會導致新的資源的建立和/或已有資源的修改。
4PUT從客戶端向服務器傳送的數據取代指定的文檔的內容
5
DELETE請求服務器刪除指定的頁面。
6CONNECTHTTP/1 .1 協議中預留給能夠將連接改爲管道方式的代理服務器。
 7 OPTIONS允許客戶端查看服務器的性能。
8TRACE

回顯服務器收到的請求, 主要用於測試或診斷。

HTTP狀態碼

當瀏覽者訪問一個網頁時, 瀏覽者的瀏覽器會向網頁所在服務器發出請求。 當瀏覽器接收並顯示網頁前, 此網頁所在的服務器會返回一個包含HTTP狀態碼的信息頭( server header) 用以響應瀏覽器的請求。

HTTP狀態碼的英文爲HTTP Status Code

下面是常見的HTTP狀態碼:

200 - 請求成功

301 - 資源(網頁等) 被永久轉移到其它URL

404 - 請求的資源(網頁等) 不存在

500 - 內部服務器錯誤

HTTP狀態碼分類

HTTP狀態碼由三個十進制數字組成, 第一個十進制數字定義了狀態碼的類型, 後兩個數字沒有分類的作用。 HTTP狀態碼共分爲5種類型:

分類分類描述
1**信息, 服務器收到請求, 需要請求者繼續執行操作
2**成功, 操作被成功接收並處
3**重定向, 需要進一步的操作以完成請求
4**客戶端錯誤, 請求包含語法錯誤或無法完成請
5**服務器錯誤, 服務器在處理請求的過程中發生了錯誤


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