百科解釋
目錄·概述·請(qǐng)求信息·請(qǐng)求方法·安全方法·協(xié)議版本號(hào)·狀態(tài)行·持久連接·安全超文本協(xié)議·例子 超文本傳輸協(xié)議(HTTP,HyperText Transfer Protocol)是因特網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議。所有的WWW文件都必須遵守這個(gè)標(biāo)準(zhǔn)。設(shè)計(jì)HTTP最初的目的是為了提供一種發(fā)布和接收HTML頁面的方法。 概述 HTTP的發(fā)展是萬維網(wǎng)協(xié)會(huì)和Internet工作小組合作的結(jié)果,在一系列的RFC發(fā)布了最終的版本,其中最著名的是RFC 2616。在RFC 2616中定義了HTTP 1.1這個(gè)今天普遍使用的版本。 HTTP是一個(gè)用于在客戶端和服務(wù)器間請(qǐng)求和應(yīng)答的協(xié)議(TCP)。一個(gè)HTTP的客戶端,諸如一個(gè)web瀏覽器,通過建立一個(gè)到遠(yuǎn)程主機(jī)特殊端口(默認(rèn)端口為80)的連接,初始化一個(gè)請(qǐng)求。一個(gè)HTTP服務(wù)器通過監(jiān)聽特殊端口等待客戶端發(fā)送一個(gè)請(qǐng)求序列, 就像“GET / HTTP/1.1”(用來請(qǐng)求網(wǎng)頁服務(wù)器的默認(rèn)頁面),有選擇的接收像email一樣的MIME消息,此消息中包含了大量用來描述請(qǐng)求各個(gè)方面的信息頭序列,響應(yīng)一個(gè)選擇的保留數(shù)據(jù)主體。接收到一個(gè)請(qǐng)求序列后(如果要的話,還有消息),服務(wù)器會(huì)發(fā)回一個(gè)回復(fù),如“200 OK”,同時(shí)發(fā)回一個(gè)它本報(bào)的消息,此消息的主體可能是被請(qǐng)求的文件、錯(cuò)誤消息或者其他的一些信息。 HTTP 并不局限于使用網(wǎng)絡(luò)協(xié)議(TCP/IP)及其相關(guān)支持層,盡管這是它在互聯(lián)網(wǎng)上最為流行的應(yīng)用程序。 事實(shí)上,HTTP可以“在任何其他互聯(lián)網(wǎng)協(xié)議之上執(zhí)行,或者在其他網(wǎng)絡(luò)上執(zhí)行。HTTP 只認(rèn)可可靠的傳輸,任何能夠提供這種保證的協(xié)議都可以被其使用。 HTTP不同于其他基于TCP的協(xié)議,諸如FTP。在HTTP中,一旦一個(gè)特殊的請(qǐng)求(或者請(qǐng)求的相關(guān)序列)完成,連接通常被中斷。這個(gè)設(shè)計(jì)使得對(duì)于當(dāng)前頁面有規(guī)則連接到另一臺(tái)服務(wù)器頁面的萬維網(wǎng)來說,HTTP是完美的。當(dāng)持久連接的缺乏成為保持用戶狀態(tài)的必需選擇的方法時(shí),對(duì)網(wǎng)頁設(shè)計(jì)者來說,會(huì)偶然產(chǎn)生一些問題。而大部分這些方法包括了對(duì)“cookies”的使用。 這里有一個(gè)HTTP的安全版本稱為HTTPS,HTTPS支持任何的加密算法,只要此加密算法能被頁面雙方所理解。 HTTP(和HTTPS)由統(tǒng)一資源定位器或者簡(jiǎn)稱URLs定位。創(chuàng)造這種地址定位的語法為了HTML的鏈接。 請(qǐng)求信息 發(fā)出的請(qǐng)求信息包括以下幾個(gè) 請(qǐng)求行,例如GET /images/logo.gif HTTP/1.1,表示從/images 目錄下請(qǐng)求logo.gif 這個(gè)文件。 標(biāo)題,例如Accept-Language: en 空行 可選信息 請(qǐng)求行和標(biāo)題必須以<CR><LF> 作為結(jié)尾(也就是,回車然后換行)。空行內(nèi)必須只有<CR><LF>而無其他空格。在HTTP/1.1 協(xié)議中,所有的標(biāo)題除主機(jī)外都是可選的。 請(qǐng)求方法 HTTP 定義了八種方法來指示確認(rèn)的資源執(zhí)行所需的行為。 HEAD 要求與GET請(qǐng)求相應(yīng)的回復(fù)一樣的應(yīng)答,但是沒有回應(yīng)的內(nèi)容。這對(duì)找回寫在回應(yīng)標(biāo)題中的 meta-infomation有幫助,不需要傳輸整個(gè)內(nèi)容。 GET 請(qǐng)求某個(gè)特殊的資源,是目前網(wǎng)上最通用的方法。不應(yīng)該用于一些會(huì)造成副作用的操作中 (在網(wǎng)絡(luò)軟件中使用是一個(gè)常見的錯(cuò)誤用法)。參看下個(gè)目錄的安全方法。 POST 向確定的資源提交需要處理的數(shù)據(jù)。這些數(shù)據(jù)包括在請(qǐng)求的內(nèi)容里。這可以造成新資源的產(chǎn)生和更新已有資源。 PUT 上傳特定資源 DELETE 刪除特定資源 TRACE 返回接收的請(qǐng)求,客戶端可因此察看在請(qǐng)求過程中什么中間服務(wù)器被加進(jìn)來或者有所改變。 OPTIONS 返回服務(wù)器支持的HTTP方法,這可以用來檢查網(wǎng)絡(luò)服務(wù)器的功能。 CONNECT 將請(qǐng)求連接轉(zhuǎn)換成透明的TCP/IP通道,通常通過非加密的HTTP代理利用SSL-加密通訊(HTTPS)。 安全方法 有些方法(比如HEAD, GET, OPTIONS, and TRACE) 被定義為安全方法,這些方法針對(duì)的只是信息的返回,并不會(huì)改變服務(wù)器的狀態(tài)(換句話說就是這些方法不會(huì)產(chǎn)生副作用)。不安全的方法(例如POST, PUT and DELETE) 應(yīng)該用特殊的方式向用戶展示,通常是按鈕而不是鏈接,這樣就可以使用戶意識(shí)到可能要負(fù)的責(zé)任(例如一個(gè)按鈕帶來的資金交易。) 冪等方法和網(wǎng)絡(luò)應(yīng)用軟件 協(xié)議版本號(hào) 超文本傳輸協(xié)議已經(jīng)演化出了很多版本,它們中的大部分都是向下兼容的?蛻舳嗽谡(qǐng)求的開始告訴服務(wù)器它采用的協(xié)議版本號(hào),而后者則在響應(yīng)中采用相同或者更早的協(xié)議版本。 0.9 已過時(shí)。只接受 GET 一種請(qǐng)求方法,沒有在通訊中指定版本號(hào),且不支持請(qǐng)求頭。由于該版本不支持 POST 方法,所以客戶端無法向服務(wù)器傳遞太多信息。 HTTP/1.0 這是第一個(gè)在通訊中指定版本號(hào)的 HTTP 協(xié)議版本,至今仍被廣泛采用,特別是在代理服務(wù)器中。 HTTP/1.1 當(dāng)前版本。持久連接被默認(rèn)采用,并能很好地配合代理服務(wù)器工作。還支持以管道方式在同時(shí)發(fā)送多個(gè)請(qǐng)求,以便降低線路負(fù)載,提高傳輸速度。 此版相較于 HTTP/1.0 協(xié)議的區(qū)別主要體現(xiàn)在: 緩存處理 帶寬及網(wǎng)絡(luò)連接的管理 安全性及完整性 狀態(tài)行 參見:HTTP狀態(tài)碼 所有 HTTP 響應(yīng)的第一行都是狀態(tài)行, 依次是當(dāng)前 HTTP 版本號(hào),3位數(shù)字組成的狀態(tài)代碼,以及描述狀態(tài)的短語,彼此由空格分隔。 狀態(tài)代碼的第一個(gè)數(shù)字代表當(dāng)前響應(yīng)的類型: 1xx 消息——請(qǐng)求已被服務(wù)器接收,繼續(xù)處理 2xx 成功——請(qǐng)求已成功被服務(wù)器接收、理解、并接受 3xx 重定向——需要后續(xù)操作才能完成這一請(qǐng)求 4xx 請(qǐng)求錯(cuò)誤——請(qǐng)求含有詞法錯(cuò)誤或者無法被執(zhí)行 5xx 服務(wù)器錯(cuò)誤——服務(wù)器在處理某個(gè)正確請(qǐng)求時(shí)發(fā)生錯(cuò)誤 雖然 RFC 2616 中已經(jīng)推薦了描述狀態(tài)的短語,例如"200 OK","404 Not Found",但是 WEB 開發(fā)者仍然能夠自行決定采用何種短語,用以顯示本地化的狀態(tài)描述或者自定義信息。 持久連接 安全超文本協(xié)議 例子 下面是一個(gè)HTTP客戶端與服務(wù)器之間會(huì)話的例子,運(yùn)行于www.google.com,端口80 客戶端請(qǐng)求: GET / HTTP/1.1 Host:www.google.com (緊跟著一個(gè)換行,通過敲入回車實(shí)現(xiàn)) 服務(wù)器應(yīng)答: HTTP/1.1 200 OK Content-Length: 3059 Server: GWS/2.0 Date: Sat, 11 Jan 2003 02:44:04 GMT Content-Type: text/html Cache-control: private Set-Cookie: PREF=ID=73d4aef52e57bae9:TM=1042253044:LM=1042253044:S=SMCc_HRPCQiqy X9j; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com Connection: keep-alive (緊跟著一個(gè)空行,并且由HTML格式的文本組成了Google的主頁) 在HTTP1.0中,客戶端發(fā)送一個(gè)請(qǐng)求至服務(wù)器,服務(wù)器發(fā)送一個(gè)應(yīng)答至客戶端。之后,連接將被釋放。另一方面,HTTP1.1支持持久連接。這使得客戶端可以發(fā)送請(qǐng)求并且接收應(yīng)答,然后迅速的發(fā)送另一個(gè)請(qǐng)求和接收另一個(gè)應(yīng)答。因?yàn)槎鄠(gè)額外的請(qǐng)求,TCP連接并沒有被釋放,而每個(gè)請(qǐng)求中關(guān)于TCP的負(fù)載相對(duì)較少。同時(shí),在得到上一個(gè)請(qǐng)求的應(yīng)答之前發(fā)送多個(gè)請(qǐng)求(通常是兩個(gè))也成為可能。這個(gè)技術(shù)被稱為“流水線”。
移動(dòng)通信網(wǎng) | 通信人才網(wǎng) | 更新日志 | 團(tuán)隊(duì)博客 | 免責(zé)聲明 | 關(guān)于詞典 | 幫助