簡(jiǎn)單介紹基于WEB開(kāi)發(fā)的HTTP協(xié)議
今天搜索socket時(shí)找到一篇文章 <基于Java的web服務(wù)器工作原理>,卻在里面看到了部分介紹HTTP協(xié)議的,雖然簡(jiǎn)單,但是讀完之后,還是對HTTP有一點(diǎn)新的理解,所以摘錄了一下(部分內容經(jīng)過(guò)筆者更改).
HTTP(The Hypertext Transfer Protocol) 是一種讓 Web 服務(wù)器與瀏覽器(客戶(hù)端)通過(guò) Internet 發(fā)送與接收數據的協(xié)議。它是一個(gè)請求、響應協(xié)議.客戶(hù)端發(fā)出一個(gè)請求,服務(wù)器響應這個(gè)請求。HTTP 運用可靠的 TCP 連接,通常用的 TCP 80 端口。它的第一個(gè)版本是 HTTP/0.9 ,然后被 HTTP/1.0 取代。當前的版本是 HTTP/1.1 ,由RFC2616(.pdf) 定義。
本節主要對應 HTTP 1.1 ,足夠使你充分理解由 Web 服務(wù)器程序發(fā)出的消息。如果你對更加詳細的知識有興趣,可以參考 RFC2616 。
在 HTTP 中,客戶(hù)端總是通過(guò)建立一個(gè)連接,并發(fā)送一個(gè) HTTP 請求來(lái)發(fā)起一個(gè)事務(wù)。服務(wù)器不能主動(dòng)去與客戶(hù)端聯(lián)系,也不能給客戶(hù)端發(fā)出一個(gè)回叫連接??蛻?hù)端與服務(wù)器端都可以提前中斷一個(gè)連接。例如,當用一個(gè)瀏覽器下載一個(gè)文件時(shí),你可以通過(guò)點(diǎn)擊“停止”鍵來(lái)中斷文件的下載,關(guān)閉與服務(wù)器的 HTTP 連接。
HTTP 請求
一個(gè) HTTP 請求包含三個(gè)部分:
Method-URI-Protocol/Version方法-地址-版本
Request header請求頭
Entity body請求實(shí)體
下面是一個(gè) HTTP 請求實(shí)例
POST /servlet/default.jsp HTTP/1.1Accept: text/plain; text/htmlAccept-Language: en-gbConnection: Keep-AliveHost: localhostReferer: http://localhost/ch8/SendDetails.htmUser-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)Content-Length: 33Content-Type: application/x-www-form-urlencodedAccept-Encoding: gzip, deflateLastName=Franks&FirstName=MichaelThe Method-URI-Protocol/Version 在這個(gè)請求的第一行:
POST /servlet/default.jsp HTTP/1.1
其中 POST 是請求的類(lèi)型。每個(gè)客戶(hù)端 HTTP 請求可以是 HTTP 規范中指定的許多請求類(lèi)型中的一種。HTTP 1.1 支持七種類(lèi)型的請求,它們是 GET,POST,HEAD,OPTIONS,PUT,DELETE,TRACE。其中 GET 與 POST 是 Internet 應用中經(jīng)常用到的二種請求類(lèi)型。
URI 完整地指定了 Internet 資源。一個(gè) URI 通常被解析為相對服務(wù)器的根目錄。這樣,它應該總是以一個(gè) '/' 前綴開(kāi)始。一個(gè) URL 實(shí)際上是 URI 的一種類(lèi)型。
Version 指的是該 HTTP 請求所用到的 HTTP 協(xié)議版本。
請求頭包含了客戶(hù)端環(huán)境與請求實(shí)體的一些有用的信息。例如它包含瀏覽器設定的語(yǔ)言、實(shí)體的長(cháng)度等等。每條請求頭用回車(chē)換行符(CRLF)分開(kāi)。
一個(gè)非常重要的空行分開(kāi)了請求頭與實(shí)體,它標志著(zhù)實(shí)體內容的開(kāi)始。一些 Internet 開(kāi)發(fā)書(shū)籍認為這個(gè) CRLF 空行是 HTTP 請求的第四個(gè)部分。
在上面的 HTTP 請求中,實(shí)體只是簡(jiǎn)單以下的一行:
LastName=Franks&FirstName=Michael
在一個(gè)典型的 HTTP 請求中,請求實(shí)體內容會(huì )長(cháng)得多。
HTTP 響應
與請求相似,HTTP 響應也由三部分組成:
Protocol-Status code-Description協(xié)議狀態(tài) 描述代碼
Response headers響應頭
Entity body響應實(shí)體
以下是一個(gè) HTTP 響應的實(shí)例:
























響應頭的第一行類(lèi)似請求頭的第一行,告訴你所用的協(xié)議是 HTTP 1.1 ,請求成功(200=success),以及沒(méi)有任何問(wèn)題。
響應頭類(lèi)似請求頭也包含了一些有用的信息。響應的實(shí)體響應本身的 HTML 內容。頭與實(shí)體之間由回車(chē)換行的空行(CRLF)分開(kāi)。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1614718
聯(lián)系客服