http基礎知識

HTTP協議的概念和工作原理

一、HTTP協議是什麼

HTTP是一種超文件傳輸協議,是用於WWW服務器傳輸超文本到本地瀏覽器的傳送協議。它可以是瀏覽器更加高效,使網絡傳輸減少。

二、HTTP報文

HTTP報文是面向文本的,報文中的每一個字段都是一些ASCII碼串,各個字段的長度是不確定的。HTTP有兩類報文:請求報文(Request)和響應報文(Response)

報文的組成部分

(1)起始行(start line)

(2) 首部(header)

   ■通用首部:即可以出現在請求報文中,也可以出現在響應報文中

   通用的信息性首部:

   Connection:運行客戶端和服務器指定與請求/響應連接有關的選項

   Date:      提供日期和時間標誌,說明報文是什麼時間創建的

   MIME-Version:給出了發送端使用的MIME版本

   Trailer:如果報文采用了分塊傳輸編碼(chunked transfer encoding)方式

   Transfer-Encoding:告知接收端爲了保證報文的可靠傳輸,對報文采用什麼編碼方式

   Update:給出了發送端可能想要“升級”使用的新版本或協議

   Via:顯示了報文經過的中間節點(代理、網關)

   ■請求首部:提供更多有關請求的信息

   clinet-ip:提供了運行客戶端的機器的IP地址

   From:提供了客戶端用戶的E-mail地址

   Host:給出了接受請求的服務器的主機名和端口號

   Referer:提供了包含但卻請求URI的文檔的URL

   UA-Color:提供了與客戶端顯示顏色有關的信息  

   US-Disp:提供了與客戶端顯示器(屏幕)能力有關的信息

   US-OS:給出了客戶端顯示器的像素信息

   ■響應首部:提供更多有關響應的信息。響應報文由自己的響應首部集。響應首部爲客戶提供了一些額外的信息

   Age:(從最初創建開始)響應持續時間

   Public:服務器爲某資源支持的請求方法列表

   Retry-After:如果資源不可用的話,再次日期或時間重試

   Server:服務器應用程序軟件的名稱和版本

   Title:對HTML文檔來說,就是HTML文檔的源端給出的標題

   Warning:比原因短語中更詳細的一些警告報文

   ■實體首部:描述主題的長度和內容,或者資源自身

   ALLOW:列出了可以對此實體執行的請求方法

   Location:告知客戶端實體實際上位於何處;用於接收端定向到資源的位置上去

(3)主體

HTTP的第三部分是可選的實體主體部分,實體的主體是HTTP報文的負荷。就是HTTP要傳輸的內容。

HTTP報文可以承載很多類型的數字數據,圖片、視頻、HTML文檔、軟件應用程序、信用卡事務、電子郵件等。

案例:telnet請求測試

[root@TP-CW-WS-PH-01 ~]# telnet 192.168.0.233 80
Trying 192.168.0.233...
Connected to 192.168.0.233.
Escape character is '^]'.
GET /index.php http/1.1
Host: 192.168.0.233
HTTP/1.1 200 OK
Date: Sun, 30 Dec 2007 22:37:16 GMT
Server: Apache/2.2.15 (CentOS)
X-Powered-By: PHP/5.3.18
P3P: CP=CAO PSA OUR
Content-Length: 6719
Connection: close
Content-Type: text/html; charset=UTF-8

response:

<version><status><reason-phrase>
<headers>
<entriy-body>


示例:

HTTP/1.0 200 OK    //起始行
Content-type:text/plan    //首部
Content-length:19
hi how are you !   主題

三、HTTP協議請求方法

(1)GET:要求服務器將URL定位的資源放在響應報文的數據部分,揮動給客戶端。

(2)POST:此類方式大多用於頁面的表單中。

(3)HEAD就像GET,只不過服務端接受到HEAD請求後只返回響應頭,而不會發送響應內容。

(4)PUT:(webdav)

(5)DELETE:(webdav)刪除操作

(6)OPTIONS:返回請求資源說支持的方法的方法

(7)TRACE:追求一個資源請求中間所經過的代理

四、HTTP版本號

HTTP0.9是最早的版本,它只定義了最基本的簡單請求和簡單回答;HTTP1.0較完善,也是目前使用廣泛的一個版本;HTTP1.1增加了大量的報頭域,並對HTTP1.0中沒有嚴格定義的部分做了進一的說明。具體如下:

(1)可擴展性

(2)緩存;HTTP/1.1增加了Cachce-Control頭域

(3)帶寬優化

(4)長連接

(5)消息傳遞

(6)Host頭域

(7)錯誤提示;新增了24個狀態響應碼,如409(Confilic)表示請求的資源與資源的當前狀態發生衝突;410(Gone)表示服務器上的某個資源被永久性的刪除

(8)內容協商

五、HTTP狀態碼

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

狀態行格式如下:

HTTP-Version Status-Code Reason-Phrase CRLF

其中,HTTP-Version表示服務器HTTP協議的版本;Status-Code表示服務器發回的響應狀態代碼;Reason-Phrase表示狀態代碼的文本描述。狀態代碼由三位數字組成,第一個數字定義了響應的類別,且有五種可能取值。

●1XX:指示信息--表示請求已接受,繼續處理

●2XX:成功--表示請求已被成功接收、理解、接受。

●3XX:重定向--要完成請求必須進行更進一步的操作。

●4XX:客戶端錯誤--請求有語法錯誤或請求無法實現。

●5XX:服務器端錯誤--服務器未能實現合法的請求。

常見狀態代碼、狀態描述的說明如下。

●200 OK:客戶端請求成功。

●301永久重定向,Location響應首部的值仍爲當前URL,因此爲隱藏重定向

●302臨時重定向,顯示重定向,Location響應首部的值爲新的URL

●400 Bad Request:客戶端請求有語法錯誤,不能被服務器所理解。

●401 Unauthorized:請求未經授權,這個狀態代碼必須如WWW-Authenticate報頭域一起使用。

●403 Forbidden:服務器收到請求,但是拒絕提供服務。

●404 NOT Found:請求資源不存在,舉個例子:輸入錯誤的URL。

●500 Internal Server Error:服務器發送不可預期的錯誤。

●502 Bad Gateway

●503 Server Unavaliable;服務器當前不能處理客戶端的請求,一段時間後肯呢個恢復正常,舉個例子:HTTP/1.1 200 OK(CRLF).

●504 Gateway Timout網關超時



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