HTTP協(xié)議詳解(真的很經(jīng)典)_第1頁
HTTP協(xié)議詳解(真的很經(jīng)典)_第2頁
免費預(yù)覽已結(jié)束,剩余17頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、http協(xié)議詳解(真的很經(jīng)典) http協(xié)議的具體介紹與解釋 /li0803/archive/2021/11/03/1324746.html /引言http是一個屬于應(yīng)用層的面對對象的協(xié)議,由于其簡捷、快速的方式,適用于分布式超媒體信息系統(tǒng)。它于1990年提出,經(jīng)過幾年的使用與進展,得到不斷地完善和擴展。目前在中使用的是http/1.0的第六版,http/1.1的規(guī)范化工作正在進行之中,而且http-ng(next generation of http)的建議已經(jīng)提出。http協(xié)議的主要特點可概括如下:1.支持客戶/服務(wù)器模式。2.簡潔快速:客戶向服務(wù)器懇求服務(wù)時,只需傳送懇求方法和路徑。懇求

2、方法常用的有g(shù)et、head、post。每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類型不同。由于http協(xié)議簡潔,使得http服務(wù)器的程序規(guī)模小,因而通信速度很快。3.敏捷:http允許傳輸任意類型的數(shù)據(jù)對象。正在傳輸?shù)念愋陀蒫ontent-type加以標(biāo)記。4.無連接:無連接的含義是限制每次連接只處理一個懇求。服務(wù)器處理完客戶的懇求,并收到客戶的應(yīng)答后,即斷開連接。采納這種方式可以節(jié)約傳輸時間。5.無狀態(tài):http協(xié)議是無狀態(tài)協(xié)議。無狀態(tài)是指協(xié)議對于事務(wù)處理沒有記憶力量。缺少狀態(tài)意味著假如后續(xù)處理需要前面的信息,則它必需重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大。另一方面,在服務(wù)器不需要從前信息時它的

3、應(yīng)答就較快。一、http協(xié)議詳解之url篇http(超文本傳輸協(xié)議)是一個基于懇求與響應(yīng)模式的、無狀態(tài)的、應(yīng)用層的協(xié)議,?;趖cp的連接方式,http1.1版本中給出一種持續(xù)連接的機制,絕大多數(shù)的web開發(fā),都是構(gòu)建在http協(xié)議之上的web應(yīng)用。http url (url是一種特別類型的uri,包含了用于查找某個資源的足夠的信息)的格式如下:http:/host:portabs_pathhttp表示要通過http協(xié)議來定位網(wǎng)絡(luò)資源;host表示合法的internet主機域名或者ip地址;port指定一個端口號,為空則使用缺省端口80;abs_path指定懇求資源的uri;假如url中沒有給

4、出abs_path,那么當(dāng)它作為懇求uri時,必需以“/”的形式給出,通常這個工作掃瞄器自動幫我們完成。eg:1、輸入:掃瞄器自動轉(zhuǎn)換成:/2、http:16:8080/index.jsp二、http協(xié)議詳解之懇求篇http懇求由三部分組成,分別是:懇求行、消息報頭、懇求正文1、懇求行以一個方法符號開頭,以空格分開,后面跟著懇求的uri和協(xié)議的版本,格式如下:method request-uri http-version crlf其中 method表示懇求方法;request-uri是一個統(tǒng)一資源標(biāo)識符;http-version表示懇求的http協(xié)議版本;crlf表示回車

5、和換行(除了作為結(jié)尾的crlf外,不允許消失 http協(xié)議的具體介紹與解釋 單獨的cr或lf字符)。 懇求方法(全部方法全為大寫)有多種,各個方法的解釋如下:get 懇求獵取request-uri所標(biāo)識的資源post 在request-uri所標(biāo)識的資源后附加新的數(shù)據(jù)head 懇求獵取由request-uri所標(biāo)識的資源的響應(yīng)消息報頭put 懇求服務(wù)器存儲一個資源,并用request-uri作為其標(biāo)識delete 懇求服務(wù)器刪除request-uri所標(biāo)識的資源trace 懇求服務(wù)器回送收到的懇求信息,主要用于測試或診斷connect 保留將來使用options 懇求查詢服務(wù)器的性能,或者查詢

6、與資源相關(guān)的選項和需求應(yīng)用舉例:get方法:在掃瞄器的地址欄中輸入網(wǎng)址的方式訪問網(wǎng)頁時,掃瞄器采納get方法向服務(wù)器獵取資源,eg:get /form.html http/1.1 (crlf)post方法要求被懇求服務(wù)器接受附在懇求后面的數(shù)據(jù),常用于提交表單。eg:post /reg.jsp http/ (crlf)accept:image/gif,image/x-xbit,. (crlf).host: (crlf)content-length:22 (crlf)connection:keep-alive (crlf)cache-control:no-cache (crlf)(crlf) /該

7、crlf表示消息報頭已經(jīng)結(jié)束,在此之前為消息報頭user=jeffreypwd=1234 /此行以下為提交的數(shù)據(jù)head方法與get方法幾乎是一樣的,對于head懇求的回應(yīng)部分來說,它的http頭部中包含的信息與通過get懇求所得到的信息是相同的。利用這個方法,不必傳輸整個資源內(nèi)容,就可以得到request-uri所標(biāo)識的資源的信息。該方法常用于測試超鏈接的有效性,是否可以訪問,以及最近是否更新。2、懇求報頭后述3、懇求正文(略)三、http協(xié)議詳解之響應(yīng)篇在接收和解釋懇求消息后,服務(wù)器返回一個http響應(yīng)消息。http響應(yīng)也是由三個部分組成,分別是:狀態(tài)行、消息報頭、響應(yīng)正文1、狀態(tài)行格式如

8、下:http-version status-code reason-phrase crlf其中,http-version表示服務(wù)器http協(xié)議的版本;status-code表示服務(wù)器發(fā)回的響應(yīng)狀態(tài)代碼;reason-phrase表示狀態(tài)代碼的文本描述。狀態(tài)代碼有三位數(shù)字組成,第一個數(shù)字定義了響應(yīng)的類別,且有五種可能取值:1xx:指示信息-表示懇求已接收,連續(xù)處理2xx:勝利-表示懇求已被勝利接收、理解、接受3xx:重定向-要完成懇求必需進行更進一步的操作4xx:客戶端錯誤-懇求有語法錯誤或懇求無法實現(xiàn)5xx:服務(wù)器端錯誤-服務(wù)器未能實現(xiàn)合法的懇求常見狀態(tài)代碼、狀態(tài)描述、說明:200 ok /客

9、戶端懇求勝利400 bad request /客戶端懇求有語法錯誤,不能被服務(wù)器所理解401 unauthorized /請求未經(jīng)授權(quán),這個狀態(tài)代碼必需和-authenticate報頭域一起使用403 forbidden /服務(wù)器收到懇求,但是拒絕供應(yīng)服務(wù)404 not found /懇求資源不存在,eg:輸入了錯誤的url500 internal server error /服 http協(xié)議的具體介紹與解釋 務(wù)器發(fā)生不行預(yù)期的錯誤 503 server unavailable /服務(wù)器當(dāng)前不能處理客戶端的懇求,一段時間后可能恢復(fù)正常eg:http/1.1 200 ok (crlf)2、響應(yīng)報

10、頭后述3、響應(yīng)正文就是服務(wù)器返回的資源的內(nèi)容四、http協(xié)議詳解之消息報頭篇http消息由客戶端到服務(wù)器的懇求和服務(wù)器到客戶端的響應(yīng)組成。懇求消息和響應(yīng)消息都是由開頭行(對于懇求消息,開頭行就是懇求行,對于響應(yīng)消息,開頭行就是狀態(tài)行),消息報頭(可選),空行(只有crlf的行),消息正文(可選)組成。http消息報頭包括一般報頭、懇求報頭、響應(yīng)報頭、實體報頭。每一個報頭域都是由名字+“:”+空格+值 組成,消息報頭域的名字是大小寫無關(guān)的。1、一般報頭在一般報頭中,有少數(shù)報頭域用于全部的懇求和響應(yīng)消息,但并不用于被傳輸?shù)膶嶓w,只用于傳輸?shù)南?。eg:cache-control 用于指定緩存指令,

11、緩存指令是單向的(響應(yīng)中消失的緩存指令在懇求中未必會消失),且是獨立的(一個消息的緩存指令不會影響另一個消息處理的緩存機制),http1.0使用的類似的報頭域為pragma。懇求時的緩存指令包括:no-cache(用于指示懇求或響應(yīng)消息不能緩存)、no-store、max-age、max-stale、min-fresh、only-if-cached;響應(yīng)時的緩存指令包括:public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age、s-maxage.eg:為了指示ie掃瞄器(客戶端)

12、不要緩存頁面,服務(wù)器端的jsp程序可以編寫如下:response.sehheader(cache-control,no-cache);/response.setheader(pragma,no-cache);作用相當(dāng)于上述代碼,通常兩者/合用這句代碼將在發(fā)送的響應(yīng)消息中設(shè)置一般報頭域:cache-control:no-cachedate一般報頭域表示消息產(chǎn)生的日期和時間connection一般報頭域允許發(fā)送指定連接的選項。例如指定連接是連續(xù),或者指定“close”選項,通知服務(wù)器,在響應(yīng)完成后,關(guān)閉連接2、懇求報頭懇求報頭允許客戶端向服務(wù)器端傳遞懇求的附加信息以及客戶端自身的信息。常用的懇求報

13、頭acceptaccept懇求報頭域用于指定客戶端接受哪些類型的信息。eg:accept:image/gif,表明客戶端盼望接受gif圖象格式的資源;accept:text/html,表明客戶端盼望接受html文本。accept-charsetaccept-charset懇求報頭域用于指定客戶端接受的字符集。eg:accept-charset:iso-8859-1,gb2312.假如在懇求消息中沒有設(shè)置這個域,缺省是任何字符集都可以接受。accept-encodingaccept-encoding懇求報頭域類似于accept,但是它是用于指定可接受的內(nèi)容編碼。eg:accept-encodin

14、g:gzip.deflate.假如懇求消息中沒有設(shè)置這個域服務(wù)器假定客戶端對各種內(nèi)容編碼都可以接受。 http協(xié)議的具體介紹與解釋 accept-language accept-language懇求報頭域類似于accept,但是它是用于指定一種自然語言。eg:accept-language:zh-cn.假如懇求消息中沒有設(shè)置這個報頭域,服務(wù)器假定客戶端對各種語言都可以接受。authorizationauthorization懇求報頭域主要用于證明客戶端有權(quán)查看某個資源。當(dāng)掃瞄器訪問一個頁面時,假如收到服務(wù)器的響應(yīng)代碼為401(未授權(quán)),可以發(fā)送一個包含authorization懇求報頭域的懇求

15、,要求服務(wù)器對其進行驗證。host(發(fā)送懇求時,該報頭域是必需的)host懇求報頭域主要用于指定被懇求資源的internet主機和端口號,它通常從http url中提取出來的,eg:我們在掃瞄器中輸入:/index.html掃瞄器發(fā)送的懇求消息中,就會包含host懇求報頭域,如下:host:此處使用缺省端口號80,若指定了端口號,則變成:host::指定端口號user-agent我們上網(wǎng)登陸論壇的時候,往往會看到一些歡迎信息,其中列出了你的操作系統(tǒng)的名稱和版本,你所使用的掃瞄器的名稱和版本,這往往讓許多人感到很奇妙,實際上,服務(wù)器應(yīng)用程序就是從user-agent這個懇求報頭域中獵取到這些信息

16、。user-agent懇求報頭域允許客戶端將它的操作系統(tǒng)、掃瞄器和其它屬性告知服務(wù)器。不過,這個報頭域不是必需的,假如我們自己編寫一個掃瞄器,不使用user-agent懇求報頭域,那么服務(wù)器端就無法得知我們的信息了。懇求報頭舉例:get /form.html http/1.1 (crlf)accept:image/gif,image/x-xbitmap,image/jpeg,application/x-shockwave-flash,application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword,*/* (cr

17、lf)accept-language:zh-cn (crlf)accept-encoding:gzip,deflate (crlf)if-modified-since:wed,05 jan 2021 11:21:25 gmt (crlf)if-none-match:w/80b1a4c018f3c41:8317 (crlf)user-agent:mozilla/4.0(compatible;msie6.0;windows nt 5.0) (crlf)host: (crlf)connection:keep-alive (crlf)(crlf)3、響應(yīng)報頭響應(yīng)報頭允許服務(wù)器傳遞不能放在狀態(tài)行中的附加

18、響應(yīng)信息,以及關(guān)于服務(wù)器的信息和對request-uri所標(biāo)識的資源進行下一步訪問的信息。常用的響應(yīng)報頭locationlocation響應(yīng)報頭域用于重定向接受者到一個新的位置。location響應(yīng)報頭域常用在更換域名的時候。serverserver響應(yīng)報頭域包含了服務(wù)器用來處理懇求的軟件信息。與user-agent懇求報頭域是相對應(yīng)的。下面是server響應(yīng)報頭域的一個例子:server:apache-coyote/1.1-authenticate-authenticate響應(yīng)報頭域必需被包含在401(未授權(quán)的)響應(yīng)消息中,客戶端收到401響應(yīng)消息時候,并發(fā)送authorization報頭域

19、懇求服務(wù)器對其進行驗證時,服務(wù)端響應(yīng)報頭就包含該報頭域。eg:-authenticate:basic realm=basi http協(xié)議的具體介紹與解釋 c auth test! /可以看出服務(wù)器對懇求資源采納的是基本驗證機制。 4、實體報頭懇求和響應(yīng)消息都可以傳送一個實體。一個實體由實體報頭域和實體正文組成,但并不是說實體報頭域和實體正文要在一起發(fā)送,可以只發(fā)送實體報頭域。實體報頭定義了關(guān)于實體正文(eg:有無實體正文)和懇求所標(biāo)識的資源的元信息。常用的實體報頭content-encodingcontent-encoding實體報頭域被用作媒體類型的修飾符,它的值指示了已經(jīng)被應(yīng)用到實體正文的

20、附加內(nèi)容的編碼,因而要獲得content-type報頭域中所引用的媒體類型,必需采納相應(yīng)的解碼機制。content-encoding這樣用于記錄文檔的壓縮方法,eg:content-encoding:gzipcontent-languagecontent-language實體報頭域描述了資源所用的自然語言。沒有設(shè)置該域則認為實體內(nèi)容將供應(yīng)給全部的語言閱讀者。eg:content-language:dacontent-lengthcontent-length實體報頭域用于指明實體正文的長度,以字節(jié)方式存儲的十進制數(shù)字來表示。content-typecontent-type實體報頭域用語指明發(fā)送給

21、接收者的實體正文的媒體類型。eg:content-type:text/html;charset=iso-8859-1content-type:text/html;charset=gb2312last-modifiedlast-modified實體報頭域用于指示資源的最終修改日期和時間。expiresexpires實體報頭域給出響應(yīng)過期的日期和時間。為了讓代理服務(wù)器或掃瞄器在一段時間以后更新緩存中(再次訪問曾訪問過的頁面時,直接從緩存中加載,縮短響應(yīng)時間和降低服務(wù)器負載)的頁面,我們可以使用expires實體報頭域指定頁面過期的時間。eg:expires:thu,15 sep 2021 16:2

22、3:12 gmthttp1.1的客戶端和緩存必需將其他非法的日期格式(包括0)看作已經(jīng)過期。eg:為了讓掃瞄器不要緩存頁面,我們也可以利用expires實體報頭域,設(shè)置為0,jsp中程序如下:response.setdateheader(expires,0);五、利用telnet觀看http協(xié)議的通訊過程試驗?zāi)康募霸恚豪胢s的telnet工具,通過手動輸入http懇求信息的方式,向服務(wù)器發(fā)出懇求,服務(wù)器接收、解釋和接受懇求后,會返回一個響應(yīng),該響應(yīng)會在telnet窗口上顯示出來,從而從感性上加深對http協(xié)議的通訊過程的熟悉。試驗步驟:1、打開telnet1.1 打開telnet運行-cm

23、d-telnet1.2 打開telnet回顯功能set localecho2、連接服務(wù)器并發(fā)送懇求2.1 open 80 /留意端口號不能省略head /index.asp http/1.0host:/*我們可以變換懇求方法,懇求桂林電子主頁內(nèi)容,輸入消息如下*/open 80get /index.asp http/1.0 /懇求資源的內(nèi)容host:2.2 open 80 /在命令提示符號下直接輸入telnet . http協(xié)議的具體介紹與解釋 cn 80 head /index.asp http/1.0host:3 試驗結(jié)果:3.1 懇求信息2.1得到的響應(yīng)是:http/1.1 200 ok

24、 /懇求勝利server: microsoft-iis/5.0 /web服務(wù)器date: thu,08 mar 202107:17:51 gmtconnection: keep-alivecontent-length: 23330content-type: text/htmlexpries: thu,08 mar 2021 07:16:51 gmtset-cookie: aspsessionidqaqbqb=bejcdgkadedjklkkajeoimmh; path=/cache-control: private/資源內(nèi)容省略3.2 懇求信息2.2得到的響應(yīng)是:http/1.0 404 no

25、t found /懇求失敗date: thu, 08 mar 2021 07:50:50 gmtserver: apache/2.0.54 unixlast-modified: thu, 30 nov 2021 11:35:41 gmtetag: 6277a-415-e7c76980accept-ranges: bytesx-powered-by: mod_xlayout_jh/0.0.1vhs.markii.remixvary: accept-encodingcontent-type: text/htmlx-cache: miss fromvia: 1.0 :80squid/2.6.stab

26、les-20211207x-cache: miss fromconnection: close失去了跟主機的連接按任意鍵連續(xù).4 .留意事項:1、消失輸入錯誤,則懇求不會勝利。2、報頭域不分大小寫。3、更深一步了解http協(xié)議,可以查看rfc2616,在/rfc上找到該文件。4、開發(fā)后臺程序必需把握http協(xié)議六、http協(xié)議相關(guān)技術(shù)補充1、基礎(chǔ):高層協(xié)議有:文件傳輸協(xié)議ftp、電子郵件傳輸協(xié)議smtp、域名系統(tǒng)服務(wù)dns、網(wǎng)絡(luò)新聞傳輸協(xié)議nntp和http協(xié)議等中介由三種:代理(proxy)、網(wǎng)關(guān)(gateway)和通道(tunnel),一個代理依據(jù)uri的肯定格式來接受懇求,重寫全部或部分

27、消息,通過 uri的標(biāo)識把已格式化過的懇求發(fā)送到服務(wù)器。網(wǎng)關(guān)是一個接收代理,作為一些其它服務(wù)器的上層,并且假如必需的話,可以把懇求翻譯給下層的服務(wù)器協(xié)議。一 個通道作為不轉(zhuǎn)變消息的兩個連接之間的中繼點。當(dāng)通訊需要通過一個中介(例如:防火墻等)或者是中介不能識別消息的內(nèi)容時,通道常常被使用。代理(proxy):一個中間程序,它可以充當(dāng)一個服務(wù)器,也可以充當(dāng)一個客戶機,為其它客戶機建立懇求。懇求是通過可能的翻譯在內(nèi)部或經(jīng)過傳遞到其它的 服務(wù)器中。一個代理在發(fā)送懇求信息之前,必需解釋并且假如可能重寫它。代理常常作為通過防火墻的客戶機端的門戶,代理還可以作為一個關(guān)心應(yīng)用來通過協(xié)議處 理沒有被用戶代理完

28、成的懇求。網(wǎng)關(guān)(gateway):一個作為其它服務(wù)器中間媒介的服務(wù)器。與代理不同的是,網(wǎng)關(guān)接受懇求就好象對被懇求的資源來說它就是源服務(wù)器;發(fā)出懇求的客戶機并沒有意識到它在同網(wǎng)關(guān)打交道。網(wǎng)關(guān)常常作為通過防火墻的服務(wù)器端的門戶,網(wǎng)關(guān)還可以作為一個協(xié)議翻 http協(xié)議的具體介紹與解釋 譯器以便存取那些存儲在非http系統(tǒng)中的資源。 通道(tunnel):是作為兩個連接中繼的中介程序。一旦激活,通道便被認為不屬于http通訊,盡管通道可能是被一個http懇求初始化的。當(dāng)被中繼 的連接兩端關(guān)閉時,通道便消逝。當(dāng)一個門戶(portal)必需存在或中介(intermediary)不能解釋中繼的通訊時通道被常

29、常使用。2、協(xié)議分析的優(yōu)勢http分析器檢測網(wǎng)絡(luò)攻擊以模塊化的方式對高層協(xié)議進行分析處理,將是將來入侵檢測的方向。http及其代理的常用端口80、3128和8080在network部分用port標(biāo)簽進行了規(guī)定3、http協(xié)議content lenth限制漏洞導(dǎo)致拒絕服務(wù)攻擊使用post方法時,可以設(shè)置contentlenth來定義需要傳送的數(shù)據(jù)長度,例如contentlenth:999999999,在傳送完成前,內(nèi) 存不會釋放,攻擊者可以利用這個缺陷,連續(xù)向web服務(wù)器發(fā)送垃圾數(shù)據(jù)直至web服務(wù)器內(nèi)存耗盡。這種攻擊方法基本不會留下痕跡。/class/http/0532918532667330.html4、利用http協(xié)議的特性進行拒絕服務(wù)攻擊的一些構(gòu)思服務(wù)器端忙于處理攻擊者偽造的tcp連接懇求而無暇理睬客戶的正常懇求(究竟客戶端的正常懇求比率特別之?。?,此時從正??蛻舻慕嵌瓤磥?,服務(wù)器失去響應(yīng),這種狀況我們稱作:服務(wù)器端受到了synflood攻擊(syn洪水攻擊)。而smurf、teardrop等是利用icmp報文來flood和ip碎片攻擊的。本文用“正常連接”的方法來產(chǎn)生拒絕服務(wù)攻擊。19端口在早期已經(jīng)有人用來做chargen攻擊了,即charg

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論