HTTP協議的報文結構

HTTP 有兩類報文:
(1) 請求報文----從客戶向服務器發送請求報文,見圖6-12(a).瀏覽器

(2) 響應報文----從服務器到客戶的回答,見圖6-12(b).服務器

因爲 HTTP是面向文本的(text-oriented),所以在報文中的每個字段都是一些ASCII碼串,於是每一個字段的長度都是不肯定的。
網絡

HTTP請求報文和響應報文都是由三個部分組成。能夠看出,這兩種報文格式的區別就是開始行不一樣。spa

(1) 開始行 用於區分是請求報文仍是響應報文。在請求報文中的開始行叫作請求行(Request-Line),
而在響應報文中的開始行叫作狀態行(Staus-Line).在開始行的三個字段之間都以空格隔開,最後的「CR」
和「LF」分別表示「回車」和「換行」。計算機網絡

(2)首部行 用來講明瀏覽器,服務器或報文主體的一些信息。首部能夠有好幾行,也能夠不使用。
在每個首部行中都有首部字段名和它的值,每一行在結束的地方都要有「回車」和「換行」。整個首部行
結束時,還有一空行將首部行和後面的實體主體分開。代理

(3)實體主體 在請求報文中通常都不用這個字段,而在響應報文中也可能沒有這個字段。htm

 

下面介紹HTTP請求中最主要的一些主要特色。對象

請求報文中的第一行「請求行」,只有三個內容,即方法,請求資源的URL,以及HTTP的版本。blog

 

請注意:這裏的名詞「方法」是面向對象技術中使用的專門名詞。所謂「方法」就是對所請求的對象進行的
操做,這些方法實際上也就是一些命令。所以,請求報文的類型是由它所採起的方法決定的。表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 表示服務器的差錯,如服務器失效沒法完成請求。

節選自《計算機網絡》(第五版)謝希仁

相關文章
相關標籤/搜索