HTTP 有兩類報文:
(1) 請求報文----從客戶向服務器發送請求報文,見圖6-12(a).
(2) 響應報文----從服務器到客戶的回答,見圖6-12(b).
由於 HTTP是面向文本的(text-oriented),因此在報文中的每一個字段都是一些ASCII碼串,因而每個字段的長度都是不確定的。
HTTP請求報文和響應報文都是由三個部分組成。可以看出,這兩種報文格式的區別就是開始行不同。
(1) 開始行 用於區分是請求報文還是響應報文。在請求報文中的開始行叫做請求行(Request-Line),
而在響應報文中的開始行叫做狀態行(Staus-Line).在開始行的三個字段之間都以空格隔開,最后的“CR”
和“LF”分別表示“回車”和“換行”。
(2)首部行 用來說明瀏覽器,服務器或報文主體的一些信息。首部可以有好幾行,也可以不使用。
在每一個首部行中都有首部字段名和它的值,每一行在結束的地方都要有“回車”和“換行”。整個首部行
結束時,還有一空行將首部行和后面的實體主體分開。
(3)實體主體 在請求報文中一般都不用這個字段,而在響應報文中也可能沒有這個字段。
下面介紹HTTP請求中最主要的一些主要特點。
請求報文中的第一行“請求行”,只有三個內容,即方法,請求資源的URL,以及HTTP的版本。
請注意:這里的名詞“方法”是面向對象技術中使用的專門名詞。所謂“方法”就是對所請求的對象進行的
操作,這些方法實際上也就是一些命令。因此,請求報文的類型是由它所采取的方法決定的。表6-1
給出了請求報文中常用的幾種方法。
下面是一個請求報文的例子:
GET /chn/yxsz/index.htm HTTP/1.1 (請求使用了相對URL)
Host: www.tsinghua.edu.cn (此行是首部行的開始,這行給出了主機的域名)
Connection: close(告訴服務器發送完請求的文檔后就可以釋放連接了)
User-Agent: Mozilla/5.0 (表明用戶代理是使用Netscape瀏覽器)
Accept-Language:cn (表示用戶希望優先得到中文版本的文檔)
(請求報文的最后還有一個空行)
在請求行使用了相對URL(即省略了主機的域名)是因為下面的首部行(第二行)給出了主機的域名。
第三行是告訴服務器不使用持續連接,表示瀏覽器希望服務器在傳送完所請求的對象后即關閉TCP連接。這個請求報文
沒有實體主體。
在看看HTTP響應報文的主要特點。
每一個請求報文發出后,都能收到一個響應報文,響應報文的第一行就是狀態行。
狀態行包含三項內容:HTTP的版本,狀態碼,以及解釋狀態碼的簡單語句。
狀態碼都是三位數字的,分為5大類共33種。例如:
1xx 表示通知信息的,如請求收到了或正在進行處理。
2xx 表示成功,如接受或是知道了。
3xx 表示重定向,如要完成請求還必須采取下一步的行動。
4xx 表示客戶的差錯,如請求中有錯誤的語法或不能完成。
5xx 表示服務器的差錯,如服務器失效無法完成請求。
節選自《計算機網絡》(第五版)謝希仁