王 濤
(大連金融中專,遼寧 大連 116021)
HTTP是一個客戶端和服務(wù)器端請求和應(yīng)答的標準。所有基于Web的應(yīng)用都要使用到HTTP協(xié)議。通過使用Web瀏覽器、網(wǎng)絡(luò)爬蟲或者其它的工具,客戶端發(fā)起一個到服務(wù)器上指定端口的HTTP請求。盡管TCP/IP協(xié)議是互聯(lián)網(wǎng)上最流行的應(yīng)用,HTTP協(xié)議并沒有規(guī)定必須使用它和(基于)它支持的層。事實上,HTTP可以在任何其他互聯(lián)網(wǎng)協(xié)議上,或者在其他網(wǎng)絡(luò)上實現(xiàn)。HTTP只假定可靠的傳輸,任何能夠提供這種保證的協(xié)議都可以被其使用。
超文本傳輸協(xié)議(HTTP)是一種通信協(xié)議,它允許將超文本標記語言(HTML)文檔從Web服務(wù)器傳送到客戶端的瀏覽器。
HTTP是一個屬于應(yīng)用層的面向?qū)ο蟮膮f(xié)議,由于其簡捷、快速的方式,適用于分布式超媒體信息系統(tǒng)。經(jīng)過幾年的使用與發(fā)展,得到不斷地完善和擴展。目前在WWW中使用的是HTTP/1.0的第六版。
1 支持“客戶/服務(wù)器”模式。
2 簡單快速:客戶向服務(wù)器請求服務(wù)時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類型不同。由于HTTP協(xié)議簡單,使得HTTP服務(wù)器的程序規(guī)模小,因而通信速度很快。
3 靈活:HTTP允許傳輸任意類型的數(shù)據(jù)。正在傳輸?shù)念愋陀蒀ontent-Type加以標記。
4 無連接:無連接的含義是限制每次連接只處理一個請求。服務(wù)器處理完客戶的請求,并收到客戶的應(yīng)答后,即斷開連接。采用這種方式可以節(jié)省傳輸時間。
5 無狀態(tài):HTTP協(xié)議是無狀態(tài)協(xié)議。無狀態(tài)是指協(xié)議對于事務(wù)處理沒有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大。它并不知道這兩個請求來自同一個客戶端。 為了解決這個問題, Web程序引入了Cookie機制來維護狀態(tài)。另一方面,在服務(wù)器不需要先前信息時它的應(yīng)答就較快。
HTTP(超文本傳輸協(xié)議)是一個基于請求與響應(yīng)模式的、無狀態(tài)的、應(yīng)用層的協(xié)議,?;赥CP的連接方式,HTTP1.1版本中給出一種持續(xù)連接的機制,絕大多數(shù)的Web開發(fā),都是構(gòu)建在HTTP協(xié)議之上的Web應(yīng)用。
http表示要通過HTTP協(xié)議來定位網(wǎng)絡(luò)資源;host表示合法的Internet主機域名或者IP地址;port指定一個端口號,為空則使用缺省端口80;abs_path指定請求資源的URI;如果URL中沒有給出abs_path,那么當(dāng)它作為請求URI時,必須以“/”的形式給出,通常這個工作瀏覽器自動幫我們完成。
先看Request 消息的結(jié)構(gòu), Request消息分為3部分,第一部分叫請求行,第二部分叫http header, 第三部分是body。 header和body之間有個空行。
第一行中的Method表示請求方法,比 如“POST”,“GET”,Path-toresoure表示請求的資源, Http/versionnumber 表示HTTP協(xié)議的版本號。當(dāng)使用的是“GET” 方法的時候,body是為空的。
Http協(xié)議定義了很多與服務(wù)器交互的方法,最基本的有4種,分別是GET,POST,PUT,DELETE。 HTTP 中的GET, POST, PUT, DELETE就對應(yīng)著對這個資源的查,改,增,刪4個操作。 我們最常見的就是GET和POST了。GET一般用于獲取/查詢資源信息,而POST一般用于更新資源信息。
我們再看Response消息的結(jié)構(gòu), 和Request消息的結(jié)構(gòu)基本一樣。 同樣也分為三部分,第一部分叫request line,第二部分叫request header,第三部分是body。 header和body之間也有個空行。
HTTP/version-number表示HTTP協(xié)議的版本號,status-code 和message 為狀態(tài)代碼。
Response 消息中的第一行叫做狀態(tài)行,由HTTP協(xié)議版本號,狀態(tài)碼,狀態(tài)消息 三部分組成。
狀態(tài)碼用來告訴HTTP客戶端,HTTP服務(wù)器是否產(chǎn)生了預(yù)期的Response。
HTTP/1.1中定義了5類狀態(tài)碼,狀態(tài)碼由三位數(shù)字組成,第一個數(shù)字定義了響應(yīng)的類別 。
2 00 OK-最常見的就是成功響應(yīng)狀態(tài)碼200了, 這表明該請求被成功地完成,所請求的資源發(fā)送回客戶端。
3 02 Found 重定向,新的URL會在response中的Location中返回,瀏覽器將會使用新的URL發(fā)出新的Request。
3 04 Not Modified 代表上次的文檔已經(jīng)被緩存了, 還可以繼續(xù)使用。
4 00 Bad Request 客戶端請求與語法錯誤,不能被服務(wù)器所理解。
4 03 Forbidden 服務(wù)器收到請求,但是拒絕提供服務(wù)。
4 04 Not Found 請求資源不存在。
5 00 Internal Server Error 服務(wù)器發(fā)生了不可預(yù)期的錯誤。
5 03 Server Unavailable 服務(wù)器當(dāng)前不能處理客戶端的請求,一段時間后可能恢復(fù)正常。
以上便是HTTP協(xié)議的工作原理及基本結(jié)構(gòu),在實際工作學(xué)習(xí)中我們可以使用Fiddler軟件工具來幫助我們具體分析http協(xié)議的工作流程。
[1]祝瑞,車敏.基于HTTP協(xié)議的服務(wù)器程序分析[J].現(xiàn)代電子技術(shù),2012(04).
[2]錢宏武.HTTP協(xié)議之前世今生——兼談網(wǎng)絡(luò)應(yīng)用結(jié)構(gòu)設(shè)計[J].程序員,2008(05).