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