HTTP是Hypertext Transfer PRotocol的簡(jiǎn)稱,即:超文本傳輸協(xié)議。在TCP/ip協(xié)議簇中的一百多個(gè)協(xié)議中,HTTP協(xié)議可以說(shuō)是平常接觸最多的一種協(xié)議了。因?yàn)槿粘g覽網(wǎng)頁(yè)時(shí)所使用的瀏覽器瀏覽,其基本的協(xié)議類型就是HTTP協(xié)議。HTTP協(xié)議是一個(gè)客戶端/服務(wù)器協(xié)議,這里所說(shuō)的服務(wù)器端是指提供WWW服務(wù)的主機(jī),即各類Web站點(diǎn)等。而客戶端是指運(yùn)行各類瀏覽器(如IE、Netscape等)或者下載工具的主機(jī)。
HTTP協(xié)議從產(chǎn)生到目前,主要經(jīng)歷了三個(gè)發(fā)展階段,也就是通常說(shuō)的三個(gè)版本:HTTP 0.9、HTTP 1.0和HTTP 1.1版。HTTP 0.9版也是HTTP原始協(xié)議,它最早出現(xiàn)在1990年,由于它只是一個(gè)簡(jiǎn)單的面向消息的協(xié)議,所以很快一個(gè)新的HTTP協(xié)議版本出現(xiàn)了,即:HTTP 1.0版,這個(gè)版本在保持了對(duì)HTTP 0.9版本的兼容的同時(shí),還增加了在復(fù)雜網(wǎng)絡(luò)情況下,對(duì)不同的類型的對(duì)象服務(wù)能力。HTTP 1.1是在HTTP 1.0基礎(chǔ)上發(fā)展下來(lái)的,它依然保持對(duì)HTTP 0.9和HTTP 1.0的兼容。和HTTP 1.0比較,主要改進(jìn)的是性能、安全和數(shù)據(jù)處理方面。目前人們又開始提出了HTTP協(xié)議的下一個(gè)版本了,那就是HTTP-NG(Next Generation of HTTP)。在這個(gè)版本中,可以想象的是無(wú)論是性能、效率還是安全性都會(huì)有一個(gè)更大的提高。
在TCP/IP協(xié)議簇中的所有協(xié)議,.Net FrameWork SDK中對(duì)HTTP協(xié)議的支持是最全面的,具體表現(xiàn)在.Net FrameWork SDK為實(shí)現(xiàn)HTTP協(xié)議提供了許多專門的類。其數(shù)量之多,功能之全面是其他協(xié)議無(wú)可比擬的。Visual Basic .Net通過(guò)使用這些類,可以方便的實(shí)現(xiàn)各種HTTP協(xié)議功能。
一.HTTP協(xié)議會(huì)話:
HTTP協(xié)議是一個(gè)客戶端/服務(wù)器協(xié)議,它是建立在請(qǐng)求/響應(yīng)范式的,客戶機(jī)和服務(wù)器完成一個(gè)HTTP會(huì)話主要通過(guò)以下四步:
1. 建立連接。建立連接是通過(guò)申請(qǐng)?zhí)捉幼郑⊿ocket)實(shí)現(xiàn)的。客戶打開一個(gè)套接字并把它約束在一個(gè)端口(HTTP協(xié)議一般使用的是80端口)上,假如成功,就相當(dāng)于建立了一個(gè)虛擬文件。以后就可以在該虛擬文件上寫數(shù)據(jù)并通過(guò)網(wǎng)絡(luò)向外傳送。
2. 客戶端發(fā)送請(qǐng)求。 在建立連接后,客戶機(jī)會(huì)往服務(wù)器正在偵聽的端口發(fā)送請(qǐng)求消息,完成提出請(qǐng)求動(dòng)作。一個(gè)完整的請(qǐng)求消息=請(qǐng)求行和請(qǐng)求頭,其中請(qǐng)求頭包括包括用戶可以接受的數(shù)據(jù)類型、壓縮方法、語(yǔ)言、長(zhǎng)度、壓縮方法、最后一次修改時(shí)間、數(shù)據(jù)有效期等。大多數(shù)請(qǐng)求頭并不是必需要定義的,但對(duì)于POST請(qǐng)求命令來(lái)說(shuō)Content-Length就必須定義。一個(gè)請(qǐng)求行的結(jié)構(gòu)如下:
請(qǐng)求命令 請(qǐng)求URI HTTP版本號(hào)
其中的HTTP協(xié)議中的請(qǐng)求命令見表01所示。圖01是利用偵聽方法獲得的客戶端IE瀏覽器向WWW主機(jī)發(fā)送請(qǐng)求命令。
圖01:IE瀏覽器向WWW主機(jī)發(fā)送請(qǐng)求行命令
請(qǐng)求命令功能GET請(qǐng)求一個(gè)WWW頁(yè)面或者URI資源HEAD要求服務(wù)器查找某對(duì)象的元信息,而不是對(duì)象本身PUT從客戶機(jī)向服務(wù)器傳送數(shù)據(jù),在要求服務(wù)器和CGI做進(jìn)一步處理時(shí)會(huì)用到POST方法。POST主要用于發(fā)送Html文本中FORM的內(nèi)容,讓CGI程序處理 POST附加資源DELETE刪除操作LINK連接二個(gè)存在的資源UNLINK切斷二個(gè)已有的資源連接
表01:HTTP協(xié)議中客戶端的請(qǐng)求命令
3. 服務(wù)器進(jìn)行響應(yīng)。服務(wù)器在處理完客戶的請(qǐng)求之后,要向客戶機(jī)發(fā)送響應(yīng)消息。其響應(yīng)消息是由狀態(tài)行和應(yīng)答頭組成的。其中應(yīng)答頭包括服務(wù)程序名,通知客戶請(qǐng)求的URI需要認(rèn)證,請(qǐng)求的資源何時(shí)能使用等。狀態(tài)行的主要結(jié)構(gòu)如下:
HTTP版本號(hào) 狀態(tài)碼 原因敘述
其中最常見的狀態(tài)碼是“200”和“404”,下面是服務(wù)器響應(yīng)客戶端的一個(gè)請(qǐng)求通過(guò)的狀態(tài)行:
HTTP/1.1 200 OK
下面是服務(wù)器響應(yīng)客戶端的一個(gè)請(qǐng)求失敗的狀態(tài)行:
HTTP/1.1 404 Object Not Found
4. 關(guān)閉連接。
在下面的內(nèi)容中將使用Visual Basic .Net通過(guò).Net FrameWork SDK提供的類來(lái)模擬IE瀏覽器中發(fā)送的請(qǐng)求行命令以及獲取WWW主機(jī)返回的狀態(tài)行信息。首先還是先了解一下.Net FrameWork SDK為在Visual Basic .Net實(shí)現(xiàn)HTTP協(xié)議所提供的類。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注