HTTP 1.1与HTTP 1.0的比较
?
HTTP 1.1與HTTP 1.0的比較
一個(gè)WEB站點(diǎn)每天可能要接收到上百萬的用戶請(qǐng)求,為了提高系統(tǒng)的效率,HTTP 1.0規(guī)定瀏覽器與服務(wù)器只保持短暫的連接,瀏覽器的每次請(qǐng)求都需要與服務(wù)器建立一個(gè)TCP連接,服務(wù)器完成請(qǐng)求處理后立即斷開TCP連接,服務(wù)器不跟蹤每個(gè)客戶也不記錄過去的請(qǐng)求。但是,這也造成了一些性能上的缺陷,例如,一個(gè)包含有許多圖像的網(wǎng)頁文件中并沒有包含真正的圖像數(shù)據(jù)內(nèi)容,而只是指明了這些圖像的URL地址,當(dāng)WEB瀏覽器訪問這個(gè)網(wǎng)頁文件時(shí),瀏覽器首先要發(fā)出針對(duì)該網(wǎng)頁文件的請(qǐng)求,當(dāng)瀏覽器解析WEB服務(wù)器返回的該網(wǎng)頁文檔中的HTML內(nèi)容時(shí),發(fā)現(xiàn)其中的<img>圖像標(biāo)簽后,瀏覽器將根據(jù)<img>標(biāo)簽中的src屬性所指定的URL地址再次向服務(wù)器發(fā)出下載圖像數(shù)據(jù)的請(qǐng)求,如圖3.3所示。
?
圖3.3
顯 然,訪問一個(gè)包含有許多圖像的網(wǎng)頁文件的整個(gè)過程包含了多次請(qǐng)求和響應(yīng),每次請(qǐng)求和響應(yīng)都需要建立一個(gè)單獨(dú)的連接,每次連接只是傳輸一個(gè)文檔和圖像,上一次和下一次請(qǐng)求完全分離。即使圖像文件都很小,但是客戶端和服務(wù)器端每次建立和關(guān)閉連接卻是一個(gè)相對(duì)比較費(fèi)時(shí)的過程,并且會(huì)嚴(yán)重影響客戶機(jī)和服務(wù)器的性 能。當(dāng)一個(gè)網(wǎng)頁文件中包含Applet,JavaScript文件,CSS文件等內(nèi)容時(shí),也會(huì)出現(xiàn)類似上述的情況。
為了克服HTTP 1.0的這個(gè)缺陷,HTTP 1.1支持持久連接,在一個(gè)TCP連接上可以傳送多個(gè)HTTP請(qǐng)求和響應(yīng),減少了建立和關(guān)閉連接的消耗和延遲。一個(gè)包含有許多圖像的網(wǎng)頁文件的多個(gè)請(qǐng)求和應(yīng)答可以在一個(gè)連接中傳輸,但每個(gè)單獨(dú)的網(wǎng)頁文件的請(qǐng)求和應(yīng)答仍然需要使用各自的連接。HTTP 1.1還允許客戶端不用等待上一次請(qǐng)求結(jié)果返回,就可以發(fā)出下一次請(qǐng)求,但服務(wù)器端必須按照接收到客戶端請(qǐng)求的先后順序依次回送響應(yīng)結(jié)果,以保證客戶端能夠區(qū)分出每次請(qǐng)求的響應(yīng)內(nèi)容,這樣也顯著地減少了整個(gè)下載過程所需要的時(shí)間。基于HTTP 1.1協(xié)議的客戶機(jī)與服務(wù)器的信息交換過程,如圖3.4所示。
圖3.4
可見,HTTP 1.1在繼承了HTTP 1.0優(yōu)點(diǎn)的基礎(chǔ)上,也克服了HTTP 1.0的性能問題。不僅如此,HTTP 1.1還通過增加更多的請(qǐng)求頭和響應(yīng)頭來改進(jìn)和擴(kuò)充HTTP 1.0的功能。例如,由于HTTP 1.0不支持Host請(qǐng)求頭字段,WEB瀏覽器無法使用主機(jī)頭名來明確表示要訪問服務(wù)器上的哪個(gè)WEB站點(diǎn),這樣就無法使用WEB服務(wù)器在同一個(gè)IP地址和端口號(hào)上配置多個(gè)虛擬WEB站點(diǎn)。在HTTP 1.1中增加Host請(qǐng)求頭字段后,WEB瀏覽器可以使用主機(jī)頭名來明確表示要訪問服務(wù)器上的哪個(gè)WEB站點(diǎn),這才實(shí)現(xiàn)了在一臺(tái)WEB服務(wù)器上可以在同一個(gè)IP地址和端口號(hào)上使用不同的主機(jī)名來創(chuàng)建多個(gè)虛擬WEB站點(diǎn)。HTTP 1.1的持續(xù)連接,也需要增加新的請(qǐng)求頭來幫助實(shí)現(xiàn),例如,Connection請(qǐng)求頭的值為Keep-Alive時(shí),客戶端通知服務(wù)器返回本次請(qǐng)求結(jié)果后保持連接;Connection請(qǐng)求頭的值為close時(shí),客戶端通知服務(wù)器返回本次請(qǐng)求結(jié)果后關(guān)閉連接。HTTP 1.1還提供了與身份認(rèn)證、狀態(tài)管理和Cache緩存等機(jī)制相關(guān)的請(qǐng)求頭和響應(yīng)頭。
《深入體驗(yàn)Java Web開發(fā)內(nèi)幕——核心基礎(chǔ)》
?
?
HTTP 協(xié)議老的標(biāo)準(zhǔn)是HTTP/1.0,目前最通用的標(biāo)準(zhǔn)是HTTP/1.1。HTTP/1.1是在HTTP/1.0基礎(chǔ)上的升級(jí),增加了一些功能,全面兼容 HTTP/1.0。HTTP/1.0不支持文件斷點(diǎn)續(xù)傳,目前的Web服務(wù)器絕大多數(shù)都采用了HTTP/1.1。
RANGE:bytes是HTTP/1.1新增內(nèi)容,HTTP/1.0每次傳送文件都是從文件頭開始,即0字節(jié)處開始。RANGE:bytes=XXXX表示要求服務(wù)器從文件XXXX字節(jié)處開始傳送,這就是我們平時(shí)所說的斷點(diǎn)續(xù)傳!
原文英文版
RFC 1945 - Hypertext Transfer Protocol -- HTTP/1.0
http://www.w3.org/Protocols/rfc1945/rfc1945
http://www.faqs.org/rfcs/rfc1945.html
RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1
http://www.w3.org/Protocols/rfc2616/rfc2616
http://www.w3.org/Protocols/rfc2616/rfc2616.html
http://www.faqs.org/rfcs/rfc2616.html
(Proposed) HTTP-NG Working Group
http://www.w3.org/Protocols/HTTP-NG/
下 一代超文本傳輸協(xié)議(HTTP-NG),為了克服當(dāng)前HTTP協(xié)議的缺點(diǎn),W3C(World Wide Web consortium)開始研究制定下一代HTTP協(xié)議?TTP-NG。它分三個(gè)層次:應(yīng)用層、消息層、傳輸層。現(xiàn)有WEB上應(yīng)用將轉(zhuǎn)換到HTTP-NG 平臺(tái)上,最后整個(gè)平臺(tái)都會(huì)更新為HTTP-NG。
RFC 1945 - Hypertext Transfer Protocol -- HTTP/1.0 中文版
http://man.chinaunix.net/develop/rfc/RFC1945.txt
http://www.cnpaf.net/rfc/rfc1945.txt
RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1 中文版
1.0與1.1的區(qū)別,英文版
Key Differences between HTTP/1.0 and HTTP/1.1
http://www.research.att.com/%7Ebala/papers/h0vh1.html
中文翻譯版沒有看到,有看到的告訴我:)
附上:HTTP 1.1狀態(tài)代碼及其含義
狀態(tài)代碼? 狀態(tài)信息? 含義?
100? Continue? 初始的請(qǐng)求已經(jīng)接受,客戶應(yīng)當(dāng)繼續(xù)發(fā)送請(qǐng)求的其余部分。(HTTP 1.1新)?
101? Switching Protocols? 服務(wù)器將遵從客戶的請(qǐng)求轉(zhuǎn)換到另外一種協(xié)議(HTTP 1.1新)?
200? OK? 一切正常,對(duì)GET和POST請(qǐng)求的應(yīng)答文檔跟在后面。
201? Created? 服務(wù)器已經(jīng)創(chuàng)建了文檔,Location頭給出了它的URL。?
202? Accepted? 已經(jīng)接受請(qǐng)求,但處理尚未完成。?
203? Non-Authoritative Information? 文檔已經(jīng)正常地返回,但一些應(yīng)答頭可能不正確,因?yàn)槭褂玫氖俏臋n的拷貝(HTTP 1.1新)。?
204? No Content? 沒有新文檔,瀏覽器應(yīng)該繼續(xù)顯示原來的文檔。如果用戶定期地刷新頁面,而Servlet可以確定用戶文檔足夠新,這個(gè)狀態(tài)代碼是很有用的。?
205? Reset Content? 沒有新的內(nèi)容,但瀏覽器應(yīng)該重置它所顯示的內(nèi)容。用來強(qiáng)制瀏覽器清除表單輸入內(nèi)容(HTTP 1.1新)。?
206? Partial Content? 客戶發(fā)送了一個(gè)帶有Range頭的GET請(qǐng)求,服務(wù)器完成了它(HTTP 1.1新)。?
300? Multiple Choices? 客戶請(qǐng)求的文檔可以在多個(gè)位置找到,這些位置已經(jīng)在返回的文檔內(nèi)列出。如果服務(wù)器要提出優(yōu)先選擇,則應(yīng)該在Location應(yīng)答頭指明。?
301? Moved Permanently? 客戶請(qǐng)求的文檔在其他地方,新的URL在Location頭中給出,瀏覽器應(yīng)該自動(dòng)地訪問新的URL。?
302? Found? 類似于301,但新的URL應(yīng)該被視為臨時(shí)性的替代,而不是永久性的。注意,在HTTP1.0中對(duì)應(yīng)的狀態(tài)信息是“Moved Temporatily”。
出現(xiàn)該狀態(tài)代碼時(shí),瀏覽器能夠自動(dòng)訪問新的URL,因此它是一個(gè)很有用的狀態(tài)代碼。
注意這個(gè)狀態(tài)代碼有時(shí)候可以和301替換使用。例如,如果瀏覽器錯(cuò)誤地請(qǐng)求http://host/~user(缺少了后面的斜杠),有的服務(wù)器返回301,有的則返回302。
嚴(yán)格地說,我們只能假定只有當(dāng)原來的請(qǐng)求是GET時(shí)瀏覽器才會(huì)自動(dòng)重定向。請(qǐng)參見307。
?
303? See Other? 類似于301/302,不同之處在于,如果原來的請(qǐng)求是POST,Location頭指定的重定向目標(biāo)文檔應(yīng)該通過GET提取(HTTP 1.1新)。?
304? Not Modified? 客戶端有緩沖的文檔并發(fā)出了一個(gè)條件性的請(qǐng)求(一般是提供If-Modified-Since頭表示客戶只想比指定日期更新的文檔)。服務(wù)器告訴客戶,原來緩沖的文檔還可以繼續(xù)使用。?
305? Use Proxy? 客戶請(qǐng)求的文檔應(yīng)該通過Location頭所指明的代理服務(wù)器提取(HTTP 1.1新)。?
307? Temporary Redirect? 和302(Found)相同。許多瀏覽器會(huì)錯(cuò)誤地響應(yīng)302應(yīng)答進(jìn)行重定向,即使原來的請(qǐng)求是POST,即使它實(shí)際上只能在POST請(qǐng)求的應(yīng)答是303時(shí) 才能重定向。由于這個(gè)原因,HTTP 1.1新增了307,以便更加清除地區(qū)分幾個(gè)狀態(tài)代碼:當(dāng)出現(xiàn)303應(yīng)答時(shí),瀏覽器可以跟隨重定向的GET和POST請(qǐng)求;如果是307應(yīng)答,則瀏覽器只能跟隨對(duì)GET請(qǐng)求的重定向。(HTTP 1.1新)?
400? Bad Request? 請(qǐng)求出現(xiàn)語法錯(cuò)誤。?
401? Unauthorized? 客戶試圖未經(jīng)授權(quán)訪問受密碼保護(hù)的頁面。應(yīng)答中會(huì)包含一個(gè)WWW-Authenticate頭,瀏覽器據(jù)此顯示用戶名字/密碼對(duì)話框,然后在填寫合適的Authorization頭后再次發(fā)出請(qǐng)求。?
403? Forbidden? 資源不可用。服務(wù)器理解客戶的請(qǐng)求,但拒絕處理它。通常由于服務(wù)器上文件或目錄的權(quán)限設(shè)置導(dǎo)致。?
404? Not Found? 無法找到指定位置的資源。這也是一個(gè)常用的應(yīng)答。?
405? Method Not Allowed? 請(qǐng)求方法(GET、POST、HEAD、DELETE、PUT、TRACE等)對(duì)指定的資源不適用。(HTTP 1.1新)?
406? Not Acceptable? 指定的資源已經(jīng)找到,但它的MIME類型和客戶在Accpet頭中所指定的不兼容(HTTP 1.1新)。?
407? Proxy Authentication Required? 類似于401,表示客戶必須先經(jīng)過代理服務(wù)器的授權(quán)。(HTTP 1.1新)?
408? Request Timeout? 在服務(wù)器許可的等待時(shí)間內(nèi),客戶一直沒有發(fā)出任何請(qǐng)求。客戶可以在以后重復(fù)同一請(qǐng)求。(HTTP 1.1新)?
409? Conflict? 通常和PUT請(qǐng)求有關(guān)。由于請(qǐng)求和資源的當(dāng)前狀態(tài)相沖突,因此請(qǐng)求不能成功。(HTTP 1.1新)?
410? Gone? 所請(qǐng)求的文檔已經(jīng)不再可用,而且服務(wù)器不知道應(yīng)該重定向到哪一個(gè)地址。它和404的不同在于,返回407表示文檔永久地離開了指定的位置,而404表示由于未知的原因文檔不可用。(HTTP 1.1新)?
411? Length Required? 服務(wù)器不能處理請(qǐng)求,除非客戶發(fā)送一個(gè)Content-Length頭。(HTTP 1.1新)?
412? Precondition Failed? 請(qǐng)求頭中指定的一些前提條件失敗(HTTP 1.1新)。?
413? Request Entity Too Large? 目標(biāo)文檔的大小超過服務(wù)器當(dāng)前愿意處理的大小。如果服務(wù)器認(rèn)為自己能夠稍后再處理該請(qǐng)求,則應(yīng)該提供一個(gè)Retry-After頭(HTTP 1.1新)。?
414? Request URI Too Long? URI太長(HTTP 1.1新)。?
416? Requested Range Not Satisfiable? 服務(wù)器不能滿足客戶在請(qǐng)求中指定的Range頭。(HTTP 1.1新)?
500? Internal Server Error? 服務(wù)器遇到了意料不到的情況,不能完成客戶的請(qǐng)求。?
501? Not Implemented? 服務(wù)器不支持實(shí)現(xiàn)請(qǐng)求所需要的功能。例如,客戶發(fā)出了一個(gè)服務(wù)器不支持的PUT請(qǐng)求。?
502? Bad Gateway? 服務(wù)器作為網(wǎng)關(guān)或者代理時(shí),為了完成請(qǐng)求訪問下一個(gè)服務(wù)器,但該服務(wù)器返回了非法的應(yīng)答。?
503? Service Unavailable? 服務(wù)器由于維護(hù)或者負(fù)載過重未能應(yīng)答。例如,Servlet可能在數(shù)據(jù)庫連接池已滿的情況下返回503。服務(wù)器返回503時(shí)可以提供一個(gè)Retry-After頭。?
504? Gateway Timeout? 由作為代理或網(wǎng)關(guān)的服務(wù)器使用,表示不能及時(shí)地從遠(yuǎn)程服務(wù)器獲得應(yīng)答。(HTTP 1.1新)?
505? HTTP Version Not Supported? 服務(wù)器不支持請(qǐng)求中所指明的HTTP版本。(HTTP 1.1新)?
===================================================================================
?
?
總結(jié)
以上是生活随笔為你收集整理的HTTP 1.1与HTTP 1.0的比较的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 若依框架的搭建
- 下一篇: 上海大学c语言作业答案,《上海大学C语言