簡單介紹基于WEB開發(fā)的HTTP協(xié)議 今天搜索socket時找到一篇文章 <基于Java的web服務(wù)器工作原理>,卻在里面看到了部分介紹HTTP協(xié)議的,雖然簡單,但是讀完之后,還是對HTTP有一點新的理解,所以摘錄了一下(部分內(nèi)容經(jīng)過筆者更改). HTTP(The Hypertext Transfer Protocol) 是一種讓 Web 服務(wù)器與瀏覽器(客戶端)通過 Internet 發(fā)送與接收數(shù)據(jù)的協(xié)議。它是一個請求,、響應(yīng)協(xié)議.客戶端發(fā)出一個請求,服務(wù)器響應(yīng)這個請求,。HTTP 運用可靠的 TCP 連接,,通常用的 TCP 80 端口。它的第一個版本是 HTTP/0.9 ,,然后被 HTTP/1.0 取代,。當前的版本是 HTTP/1.1 ,由RFC2616(.pdf) 定義,。 本節(jié)主要對應(yīng) HTTP 1.1 ,,足夠使你充分理解由 Web 服務(wù)器程序發(fā)出的消息。如果你對更加詳細的知識有興趣,,可以參考 RFC2616 ,。 在 HTTP 中,客戶端總是通過建立一個連接,并發(fā)送一個 HTTP 請求來發(fā)起一個事務(wù),。服務(wù)器不能主動去與客戶端聯(lián)系,,也不能給客戶端發(fā)出一個回叫連接??蛻舳伺c服務(wù)器端都可以提前中斷一個連接,。例如,當用一個瀏覽器下載一個文件時,,你可以通過點擊“停止”鍵來中斷文件的下載,,關(guān)閉與服務(wù)器的 HTTP 連接。 HTTP 請求 一個 HTTP 請求包含三個部分: Method-URI-Protocol/Version方法-地址-版本 Request header請求頭 Entity body請求實體 下面是一個 HTTP 請求實例
其中 POST 是請求的類型,。每個客戶端 HTTP 請求可以是 HTTP 規(guī)范中指定的許多請求類型中的一種。HTTP 1.1 支持七種類型的請求,,它們是 GET,,POST,HEAD,,OPTIONS,,PUT,DELETE,TRACE,。其中 GET 與 POST 是 Internet 應(yīng)用中經(jīng)常用到的二種請求類型,。 URI 完整地指定了 Internet 資源。一個 URI 通常被解析為相對服務(wù)器的根目錄,。這樣,,它應(yīng)該總是以一個 '/' 前綴開始。一個 URL 實際上是 URI 的一種類型,。 Version 指的是該 HTTP 請求所用到的 HTTP 協(xié)議版本,。 請求頭包含了客戶端環(huán)境與請求實體的一些有用的信息。例如它包含瀏覽器設(shè)定的語言,、實體的長度等等,。每條請求頭用回車換行符(CRLF)分開。 一個非常重要的空行分開了請求頭與實體,,它標志著實體內(nèi)容的開始,。一些 Internet 開發(fā)書籍認為這個 CRLF 空行是 HTTP 請求的第四個部分。 在上面的 HTTP 請求中,,實體只是簡單以下的一行: LastName=Franks&FirstName=Michael 在一個典型的 HTTP 請求中,,請求實體內(nèi)容會長得多。 HTTP 響應(yīng) 與請求相似,,HTTP 響應(yīng)也由三部分組成: Protocol-Status code-Description協(xié)議狀態(tài) 描述代碼 Response headers響應(yīng)頭 Entity body響應(yīng)實體 以下是一個 HTTP 響應(yīng)的實例: HTTP/1.1 200 OK
Server: Microsoft-IIS/4.0 Date: Mon,, 3 Jan 1998 13:13:33 GMT Content-Type: text/html Last-Modified: Mon, 11 Jan 1998 13:23:42 GMT Content-Length: 112 <html> <head> <title>HTTP Response Example</title></head><body> Welcome to Brainy Software </body> </html> 響應(yīng)頭的第一行類似請求頭的第一行,,告訴你所用的協(xié)議是 HTTP 1.1 ,,請求成功(200=success),以及沒有任何問題,。 響應(yīng)頭類似請求頭也包含了一些有用的信息,。響應(yīng)的實體響應(yīng)本身的 HTML 內(nèi)容。頭與實體之間由回車換行的空行(CRLF)分開,。 Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1614718 |
|