初識HTTP協議

    本篇文章從概念上初識HTTP協議,參考連接:http://www.runoob.com/http/http-tutorial.htmlhtml

 

目錄:瀏覽器

1、HTTP協議
    HTTP 工做原理
    HTTP三點注意事項
2、HTTP 消息結構
    客戶端請求消息
    服務器響應消息
    實例
3、HTTP請求方法
    HTTP 響應頭信息
    HTTP狀態碼
4、常見的HTTP狀態碼:
    HTTP狀態碼分類
5、HTTP content-typebash

 

1、HTTP協議服務器

HTTP(HyperText Transfer Protocol,超文本傳輸協議)是因特網上應用最爲普遍的一種網絡傳輸協議,全部的WWW文件都必須遵照這個標準。
HTTP是一個基於TCP/IP通訊協議來傳遞數據(HTML 文件, 圖片文件, 查詢結果等)。網絡

HTTP 工做原理
HTTP協議工做於客戶端-服務端架構爲上。瀏覽器做爲HTTP客戶端經過URL向HTTP服務端即WEB服務器發送全部請求。
Web服務器有:Apache服務器,IIS服務器(Internet Information Services)等。
Web服務器根據接收到的請求後,向客戶端發送響應信息。
HTTP默認端口號爲80,可是你也能夠改成8080或者其餘端口。架構

HTTP三點注意事項curl

* HTTP是無鏈接:無鏈接的含義是限制每次鏈接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答後,即斷開鏈接。採用這種方式能夠節省傳輸時間。
* HTTP是媒體獨立的:這意味着,只要客戶端和服務器知道如何處理的數據內容,任何類型的數據均可以經過HTTP發送。客戶端以及服務器指定使用適合的MIME-type內容類型。
* HTTP是無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺乏狀態意味着若是後續處理須要前面的信息,則它必須重傳,這樣可能致使每次鏈接傳送的數據量增大。另外一方面,在服務器不須要先前信息時它的應答就較快。性能

 

2、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)、空行和請求數據四個部分組成,下圖給出了請求報文的通常格式。網絡傳輸協議

服務器響應消息
HTTP響應也由四個部分組成,分別是:狀態行、消息報頭、空行和響應正文。

實例
下面實例是一點典型的使用GET來傳遞數據的實例:
客戶端請求:

GET /hello.txt HTTP/1.1
User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Host: www.example.com
Accept-Language: en, mi

服務端響應:

HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain

輸出結果:

Hello World! My payload includes a trailing CRLF.

s

3、HTTP請求方法
根據HTTP標準,HTTP請求可使用多種請求方法。
HTTP1.0定義了三種請求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五種請求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
|序號| 方法 |描述|
|----|-------|----|
| 1 |GET |請求指定的頁面信息,並返回實體主體。|
| 2 |HEAD |相似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭|
| 3 |POST |向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST請求可能會致使新的資源的創建和/或已有資源的修改。|
| 4 |PUT |從客戶端向服務器傳送的數據取代指定的文檔的內容。|
| 5 |DELETE |請求服務器刪除指定的頁面。|
| 6 |CONNECT|HTTP/1.1協議中預留給可以將鏈接改成管道方式的代理服務器。|
| 7 |OPTIONS|容許客戶端查看服務器的性能。|
| 8 |TRACE |回顯服務器收到的請求,主要用於測試或診斷。|

 

HTTP 響應頭信息
HTTP請求頭提供了關於請求,響應或者其餘的發送實體的信息。在本章節中咱們將具體來介紹HTTP請求頭信息。

 

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

 

常見的HTTP狀態碼

* 200 - 請求成功
* 301 - 資源(網頁等)被永久轉移到其它URL
* 404 - 請求的資源(網頁等)不存在
* 500 - 內部服務器錯誤

 

HTTP狀態碼分類
HTTP狀態碼由三個十進制數字組成,第一個十進制數字定義了狀態碼的類型,後兩個數字沒有分類的做用。HTTP狀態碼共分爲5種類型:
|分類|分類描述 |
|----|----------------------------------------------|
|1** |信息,服務器收到請求,須要請求者繼續執行操做 |
|2** |成功,操做被成功接收並處理 |
|3** |重定向,須要進一步的操做以完成請求 |
|4** |客戶端錯誤,請求包含語法錯誤或沒法完成請求 |
|5** |服務器錯誤,服務器在處理請求的過程當中發生了錯誤|


HTTP狀態碼列表

 

5、HTTP content-type
Content-Type,內容類型,通常是指網頁中存在的Content-Type,用於定義網絡文件的類型和網頁的編碼,決定瀏覽器將以什麼形式、什麼編碼讀取這個文件,這就是常常看到一些Asp網頁點擊的結果倒是下載到的一個文件或一張圖片的緣由。
HTTP content-type 對照表

相關文章
相關標籤/搜索