GET實(shí)現(xiàn)HTTP協(xié)議請(qǐng)求包的分析
HTTP協(xié)議是我們網(wǎng)絡(luò)中必不可少的重要協(xié)議。那么下面我們就來(lái)對(duì)這方面的問(wèn)題進(jìn)行一下深入講解。那么我們就針對(duì)GET方法實(shí)現(xiàn)HTTP協(xié)議的具體操作進(jìn)行一下分析。HTTP協(xié)議用于在Internet上發(fā)送和接收消息。HTTP協(xié)議是一種請(qǐng)求-應(yīng)答式的協(xié)議??客戶端發(fā)送一個(gè)請(qǐng)求,服務(wù)器返回該請(qǐng)求的應(yīng)答,所有的請(qǐng)求與應(yīng)答都是HTTP包。HTTP協(xié)議使用可靠的TCP連接,默認(rèn)端口是80。HTTP的第一個(gè)版本是HTTP/0.9,后來(lái)發(fā)展到了HTTP/1.0,現(xiàn)在最新的版本是HTTP/1.1。HTTP/1.1由RFC 2616 定義。
在HTTP中,Client/Server之間的會(huì)話總是由客戶端通過(guò)建立連接和發(fā)送HTTP請(qǐng)求包初始化,服務(wù)器不會(huì)主動(dòng)聯(lián)系客戶端或要求與客戶端建立連接。瀏覽器和服務(wù)器都可以隨時(shí)中斷連接,例如,在瀏覽網(wǎng)頁(yè)時(shí)你可以隨時(shí)點(diǎn)擊“停止"按鈕中斷當(dāng)前的文件下載過(guò)程,關(guān)閉與Web服務(wù)器的HTTP連接。
1 HTTP請(qǐng)求包
HTTP請(qǐng)求包(GET、POST等請(qǐng)求方法)由三個(gè)部分構(gòu)成,分別是:方法-URI-協(xié)議/版本,請(qǐng)求頭,請(qǐng)求正文。下面是一個(gè)HTTP協(xié)議請(qǐng)求包(GET)的例子:
- GET /index.jsp HTTP/1.1
 - Accept-Language: zh-cn
 - Connection: Keep-Alive
 - Host: 192.168.0.106
 - Content-Length: 37
 - userName=new_andy&password=new_andy
 
請(qǐng)求包的第一行是方法-URI-協(xié)議/版本:
GET就是請(qǐng)求方法,根據(jù)HTTP標(biāo)準(zhǔn),HTTP協(xié)議請(qǐng)求可以使用多種請(qǐng)求方法。HTTP 1.1支持七種請(qǐng)求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TRACE等,常用的為請(qǐng)求方法是GET和POST。
/index.jsp表示URI。URI指定了要訪問(wèn)的網(wǎng)絡(luò)資源。HTTP/1.1是協(xié)議和協(xié)議的版本。
最后一行userName=new_andy&password=new_andy為正文,正文與HTTP頭部有一個(gè)空行(rn)分隔。這里需要說(shuō)明的一點(diǎn),其中Content-Length說(shuō)明正文的長(zhǎng)度,有的正文長(zhǎng)度沒(méi)有在頭部說(shuō)明,只是標(biāo)明Transfer-Encoding: chunked。關(guān)于chunked類型的長(zhǎng)度計(jì)算方法,見(jiàn)RFC 1626。
請(qǐng)求包的頭部還會(huì)包含許多有關(guān)客戶端環(huán)境和請(qǐng)求正文的有用信息,這里不再描述。
2 HTTP協(xié)議應(yīng)答包
和HTTP請(qǐng)求包相似,由三個(gè)部分構(gòu)成,分別是:協(xié)議-狀態(tài)代碼-描述,應(yīng)答頭,應(yīng)答正文。下面是一個(gè)HTTP應(yīng)答的例子:
- HTTP/1.1 200 OK
 - Server: Microsoft-IIS/4.0
 - Date: Mon, 3 Jan 2005 13:13:33 GMT
 - Content-Type: text/html
 - Last-Modified: Mon, 11 Jan 2004 13:23:42 GMT
 - Content-Length: 90
 - <html>
 - <head>
 - <title>解讀HTTP包示例</title></head><body>
 - Hello WORLD!
 - </body>
 - </html>
 
HTTP應(yīng)答包的第一行類似于HTTP協(xié)議請(qǐng)求的第一行,表示所用的協(xié)議是HTTP 1.1,服務(wù)器處理請(qǐng)求的狀態(tài)碼200。
應(yīng)答頭也和請(qǐng)求頭一樣包含許多有用的信息,例如服務(wù)器類型、日期時(shí)間、內(nèi)容類型和長(zhǎng)度等。應(yīng)答的正文就是服務(wù)器返回的HTML頁(yè)面。應(yīng)答頭和正文之間也用CRLF分隔。















 
 
 



 
 
 
 