初識HTTP協議--請求與響應報文
概念啥的就不去理會了;既然HTTP是基於TCP/IP的那麼我們先看看TCP/IP協議又是怎麼回事?
在OSI的七層模型中,TCP是在傳輸層中,而IP則在網路層。而在OSI的各層中層與層之間是相互獨立又相互依靠的,上層依賴於下層,下層又為上層提供服務,所以你應該知道了TCP/IP的關係和作用了。(下面2張圖都是網上找的)
一、HTTP協議的歷史(網上找的歷史,具體歷史我也不知道,HTTP產生的時候我還沒出生呢!)
u HTTP/0.9: 從1990年就已經用來作為WWW的傳輸協 議,當時非常簡單,只支援GET方法,響應中攜帶 的訊息必須HTML檔案。
u HTTP/1.0
展進行綜合推出新標準HTTP/1.0 。
u HTTP/1.1: 1997推出RFC2068,HTTP/1.1的標準。
u HTTP/1.1: 1999推出RFC2616,廢棄了RFC2068標準。
二、HTTP協議的基礎內容
http協議的訊息型別分為2中型別:一種是請求(Request)訊息:由客戶端發給伺服器的訊息。
另一種是響應(Response)訊息:是服務端回覆客戶端請求的訊息。
看下面2張圖片看看個返回的都是什麼資料:
這是請求訊息:
這個是響應訊息:
我們看看具體每行都是幹啥用的?
我們先看看請求訊息的組成:
這就是一個請求報文,響應報文是對應的
對照上面的你就可以清楚看出來了
相對的你可以對應這張圖片看下:
1、請求報文詳解:
接下來就分析下:上面我們剛才得到那份請求訊息:
GET /ex/CookieAutoLogin.aspx HTTP/1.1 :
表示向伺服器用GET方式請求/ex/CookieAutoLogin.aspx檔案,使用HTTP/1.1協議。
Accept: text/html, application/xhtml+xml, */*
表示我當前瀏覽器可以接收的MIME檔案格式。可以根據它判斷並返回適當的檔案格式。
Accept-Language: zh-CN
表示當前瀏覽器支援的語言,中文;很多國際網站預設進入的語言都是通過這個實現的。
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
表示客戶端瀏覽器名稱、型別、版本等。
Accept-Encoding: gzip, deflate
表示我當前瀏覽器支援gzip、deflate兩種壓縮演算法。
Host: localhost:12478
表示對應請求網址URL中的Web名稱和埠號。
Connection Keep-Alive:
Keep-Alive是永久連線(其實應該是長連線,這時候伺服器傳送了響應報文之後不直接關閉套接字,而是保持連線一段時間看看還有沒有其他請求,如果有請求,這樣不僅節省了建立新套接字的時間,還可以節約網路流量和)而如果是close則是在告知伺服器本瀏覽器不想使用永久連線方式(HTTP/1.0使用非永久連線,HTTP/1.1預設使用永久連線)。
Cookie: username=1; pwd=123
這是瀏覽器向伺服器傳送和當前網站關聯的Cookie,這樣在伺服器端也能讀取瀏覽器端的Cookie了。
請求方法的解釋:
GET:獲取一個URL指定的資源,即資源實體
HEAD:獲取一個指定資源的資訊,
POST:向伺服器提交資料
PUT:向伺服器提交資源
DELETE請求源伺服器刪除Request-URI標識的資源
TRACE網路跟蹤
CONNECT與PROXY之間的連線管理
OPTIONS查詢能力
還有其他的一些資訊可以檢視部落格園的
1、響應報文詳解:
再來分析響應報文資訊:
HTTP/1.1 302 Found
響應行:使用HTTP1.1協議,返回的狀態碼。具體常見狀態嗎見後面。(302是隻重定向)
Server: ASP.NET Development Server/10.0.0.0
表示伺服器的型別,這是使用VS開發自啟動的小伺服器,10版本。
Date: Wed, 16 May 2012 05:46:46 GMT
這個你一看就知道是啥了,(時間)。
X-AspNet-Version: 2.0.50727 這個是伺服器使用的.NET版本資訊。
Location: /ex/Default.aspx 重定向到哪個頁面。
Cache-Control: private 快取控制:私有。
Content-Type: text/html; charset=utf-8 表示返回資料的型別
Content-Length: 137 表示返回的位元組長度。
這個要知道這是後續資料訊息體的長度,響應報文頭不包括在內,響應報文頭只是描述,返回的具體資料(比如HTML文字、圖片資料等)。
Connection: Close 連線狀態:關閉。
下面這些就是返回的具體訊息了。(上面的長度也指代的是這個的長度。)
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="%2fex%2fDefault.aspx">here</a>.</h2>
</body></html>
響應行中的響應狀態
1xx:指示資訊--表示請求已接收,繼續處理。
2xx:成功--表示請求已被成功接收、理解、接受。
3xx:重定向--要完成請求必須進行更進一步的操作。
4xx:客戶端錯誤--請求有語法錯誤或請求無法實現。
5xx:伺服器端錯誤--伺服器未能實現合法的請求。
常見狀態程式碼、狀態描述的說明如下。
200 OK:客戶端請求成功。
400 Bad Request:客戶端請求有語法錯誤,不能被伺服器所理解。
401 Unauthorized:請求未經授權,這個狀態程式碼必須和WWW-Authenticate報頭域一起使用。
403 Forbidden:伺服器收到請求,但是拒絕提供服務。
404 Not Found:請求資源不存在,舉個例子:輸入了錯誤的URL。
500 Internal Server Error:伺服器發生不可預期的錯誤。
503 Server Unavailable:伺服器當前不能處理客戶端的請求,一段時間後可能恢復正常,舉個例子:HTTP/1.1 200 OK(CRLF)。