?? 180.htm
字號:
<p>淺談HTTP協議(一)--結構 </p>
<p></p>
<p> </p>
<p> </p>
<p> Internet是由各個協議連接起來的,而我們現在使用最廣的莫過于HTTP協議了,也就是超文本傳輸協議,與FTP(文件傳輸協議)不同,由于主要用于超文本傳輸,因此HTTP協議顯得更簡單一點。今天我們來介紹一下HTTP協議的基本格式。</p>
<p> 在這里,我們所談及的HTTP協議以HTTP/1.1為標準,并且使用Net Vampire Pro 4.0來取得與HTTP服務器的通信Log,您也可以使用其它的HTTP下載工具來取得通信Log。</p>
<p> 在HTTP協議中,服務端是指提供HTTP服務的部分,客戶端是指你使用的瀏覽器或者下載工具等等。在通訊時,由客戶端發出請求連接,服務端建立連接;然后,客戶端發出HTTP請求(Request),服務端返回響應信息(Respond),由此完成一個HTTP操作。我們來通過一個例子來了解這個過程:(以下是Net Vampire進行的一次連接,以下紅色字體為作者添加)</p>
<p>P 01-5-26 16:10:43 Connecting to go2.163.com ... //連接服務器</p>
<p>P 01-5-26 16:10:44 Connected to go2.163.com [61.129.65.148] //解析IP地址,以下為HTTP操作</p>
<p>S 01-5-26 16:10:44 GET /~minift/epretty/pretty.zip HTTP/1.1 //請求行(Request Line),表示使用GET方式取得文件,使用HTTP/1.1協議 </p>
<p>//以下為請求頭部(Request Head)</p>
<p>S 01-5-26 16:10:44 Connection: close //表示非持續性連接</p>
<p>S 01-5-26 16:10:44 Host: go2.163.com //主機名稱</p>
<p>S 01-5-26 16:10:44 Accept: */* //接受的數據類型</p>
<p>S 01-5-26 16:10:44 Pragma: no-cache //參數(與以前的服務器兼容)</p>
<p>S 01-5-26 16:10:44 Cache-Control: no-cache //不使用緩存</p>
<p>S 01-5-26 16:10:44 Referer: http://go2.163.com/~minift/epretty //從該網址轉來</p>
<p>S 01-5-26 16:10:44 User-Agent: Mozilla/4.04 [en] (Win95; I ;Nav) //客戶端標識</p>
<p>S 01-5-26 16:10:44 Cookie: AdId=ACDDAAAAAAA</p>
<p>S 01-5-26 16:10:44 //以下為Respond</p>
<p>R 01-5-26 16:10:47 HTTP/1.0 200 OK //響應行(Respond Line),服務器使用HTTP/1.0協議,狀態值(Status Code)為200,狀態為OK,表示文件可以讀取</p>
<p>R 01-5-26 16:10:47 Date: Sat, 26 May 2001 08:15:54 GMT //現在的時間,用格林威治時間表示</p>
<p>R 01-5-26 16:10:47 Server: Apache/1.3.14 (Unix) mod_layout/2.9.9 //服務器類型</p>
<p>R 01-5-26 16:10:47 Last-Modified: Fri, 04 May 2001 02:42:56 GMT //文件最后更新時間</p>
<p>R 01-5-26 16:10:47 ETag: "e614cf-37965-3af21730"</p>
<p>R 01-5-26 16:10:47 Accept-Ranges: bytes //接受的范圍單位</p>
<p>R 01-5-26 16:10:47 Content-Length: 227685 //文件長度 </p>
<p>R 01-5-26 16:10:47 Content-Type: application/zip //MIME類型</p>
<p>R 01-5-26 16:10:47 X-Cache: MISS from shca8</p>
<p>R 01-5-26 16:10:47 X-Cache-Lookup: MISS from shca8:80</p>
<p>R 01-5-26 16:10:47 Connection: close //表示文件傳輸完畢就關閉連接。</p>
<p>R 01-5-26 16:10:47 //以下為文件傳輸</p>
<p>P 01-5-26 16:10:47 Data transfer started </p>
<p> 下面來講解使用的格式(LRCF=@13@10,即回車,SP=SPACE,即空格)</p>
<p>Request:</p>
<p>協議方式 SP 文件URI SP 協議版本 LRCF (請求行)</p>
<p>(以下為頭部)</p>
<p>頭部類型 : 頭部值 LRCF</p>
<p>頭部類型 : 頭部值 LRCF</p>
<p>頭部類型 : 頭部值 LRCF</p>
<p>...... </p>
<p>LRCF 表示頭部結束</p>
<p>(如果有體部,以下為體部)</p>
<p></p>
<p>Respond:</p>
<p>協議版本 SP 狀態值 SP 狀態描述 LRCF (響應行)</p>
<p>(以下為頭部)</p>
<p>頭部類型 : 頭部值 LRCF</p>
<p>頭部類型 : 頭部值 LRCF</p>
<p>頭部類型 : 頭部值 LRCF</p>
<p>...... </p>
<p>LRCF 表示頭部結束</p>
<p>(如果有體部,以下為體部)</p>
<p></p>
<p></p>
<p> 由上可見,請求與相應的格式只有部分不同,是很容易理解的,現在你應該基本了解HTTP協議了吧,也能看懂那些通信Log了吧,下一次我們講專門講解在響應行中的狀態值含義及一些特殊情況。</p>
<p></p>
<p></p>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -