HTTP 消息結(jié)構(gòu)
HTTP是基于客戶端/服務(wù)端(C/S)的架構(gòu)模型,通過(guò)一個(gè)可靠的鏈接來(lái)交換信息,是一個(gè)無(wú)狀態(tài)的請(qǐng)求/響應(yīng)協(xié)議。
一個(gè)HTTP"客戶端"是一個(gè)應(yīng)用程序(Web瀏覽器或其他任何客戶端),通過(guò)連接到服務(wù)器達(dá)到向服務(wù)器發(fā)送一個(gè)或多個(gè)HTTP的請(qǐng)求的目的。
一個(gè)HTTP"服務(wù)器"同樣也是一個(gè)應(yīng)用程序(通常是一個(gè)Web服務(wù),如Apache Web服務(wù)器或IIS服務(wù)器等),通過(guò)接收客戶端的請(qǐng)求并向客戶端發(fā)送HTTP響應(yīng)數(shù)據(jù)。HTTP使用統(tǒng)一資源標(biāo)識(shí)符(Uniform Resource Identifiers, URI)來(lái)傳輸數(shù)據(jù)和建立連接。
一旦建立連接后,數(shù)據(jù)消息就通過(guò)類似Internet郵件所使用的格式[RFC5322]和多用途Internet郵件擴(kuò)展(MIME)[RFC2045]來(lái)傳送。
客戶端請(qǐng)求消息
客戶端發(fā)送一個(gè)HTTP請(qǐng)求到服務(wù)器的請(qǐng)求消息包括以下格式:請(qǐng)求行(request line)、請(qǐng)求頭部(header)、空行和請(qǐng)求數(shù)據(jù)四個(gè)部分組成,下圖給出了請(qǐng)求報(bào)文的一般格式。
服務(wù)器響應(yīng)消息
HTTP響應(yīng)也由四個(gè)部分組成,分別是:狀態(tài)行、消息報(bào)頭、空行和響應(yīng)正文。
實(shí)例
下面實(shí)例是一點(diǎn)典型的使用GET來(lái)傳遞數(shù)據(jù)的實(shí)例:
客戶端請(qǐng)求:
GET /hello.txt HTTP/1.1 User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3 Host: www.example.com Accept-Language: en, mi
服務(wù)端響應(yīng):
HTTP/1.1 200 OK Date: Mon, 27 Jul 2009 12:28:53 GMT Server: Apache Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT ETag: "34aa387-d-1568eb00" Accept-Ranges: bytes Content-Length: 51 Vary: Accept-Encoding Content-Type: text/plain
輸出結(jié)果:
Hello World! My payload includes a trailing CRLF.
更多建議: