HTTP 1.1與HTTP 1.0的比較

?

HTTP 1.1HTTP 1.0的比較

一個WEB站點每天可能要接收到上百萬的用戶請求,為了提高系統的效率,HTTP 1.0規定瀏覽器與服務器只保持短暫的連接,瀏覽器的每次請求都需要與服務器建立一個TCP連接,服務器完成請求處理后立即斷開TCP連接,服務器不跟蹤每個客戶也不記錄過去的請求。但是,這也造成了一些性能上的缺陷,例如,一個包含有許多圖像的網頁文件中并沒有包含真正的圖像數據內容,而只是指明了這些圖像的URL地址,當WEB瀏覽器訪問這個網頁文件時,瀏覽器首先要發出針對該網頁文件的請求,當瀏覽器解析WEB服務器返回的該網頁文檔中的HTML內容時,發現其中的<img>圖像標簽后,瀏覽器將根據<img>標簽中的src屬性所指定的URL地址再次向服務器發出下載圖像數據的請求,如圖3.3所示。

?

3.3

顯 然,訪問一個包含有許多圖像的網頁文件的整個過程包含了多次請求和響應,每次請求和響應都需要建立一個單獨的連接,每次連接只是傳輸一個文檔和圖像,上一次和下一次請求完全分離。即使圖像文件都很小,但是客戶端和服務器端每次建立和關閉連接卻是一個相對比較費時的過程,并且會嚴重影響客戶機和服務器的性 能。當一個網頁文件中包含AppletJavaScript文件,CSS文件等內容時,也會出現類似上述的情況。

為了克服HTTP 1.0的這個缺陷,HTTP 1.1支持持久連接,在一個TCP連接上可以傳送多個HTTP請求和響應,減少了建立和關閉連接的消耗和延遲。一個包含有許多圖像的網頁文件的多個請求和應答可以在一個連接中傳輸,但每個單獨的網頁文件的請求和應答仍然需要使用各自的連接。HTTP 1.1還允許客戶端不用等待上一次請求結果返回,就可以發出下一次請求,但服務器端必須按照接收到客戶端請求的先后順序依次回送響應結果,以保證客戶端能夠區分出每次請求的響應內容,這樣也顯著地減少了整個下載過程所需要的時間。基于HTTP 1.1協議的客戶機與服務器的信息交換過程,如圖3.4所示。

3.4

可見,HTTP 1.1在繼承了HTTP 1.0優點的基礎上,也克服了HTTP 1.0的性能問題。不僅如此,HTTP 1.1還通過增加更多的請求頭和響應頭來改進和擴充HTTP 1.0的功能。例如,由于HTTP 1.0不支持Host請求頭字段WEB瀏覽器無法使用主機頭名來明確表示要訪問服務器上的哪個WEB站點,這樣就無法使用WEB服務器在同一個IP地址和端口號上配置多個虛擬WEB站點。在HTTP 1.1中增加Host請求頭字段后,WEB瀏覽器可以使用主機頭名來明確表示要訪問服務器上的哪個WEB站點,這才實現了在一臺WEB服務器上可以在同一個IP地址和端口號上使用不同的主機名來創建多個虛擬WEB站點。HTTP 1.1的持續連接,也需要增加新的請求頭來幫助實現,例如,Connection請求頭的值為Keep-Alive時,客戶端通知服務器返回本次請求結果后保持連接;Connection請求頭的值為close時,客戶端通知服務器返回本次請求結果后關閉連接。HTTP 1.1還提供了與身份認證、狀態管理和Cache緩存等機制相關的請求頭和響應頭

《深入體驗Java Web開發內幕——核心基礎》

?

?

HTTP 協議老的標準是HTTP/1.0,目前最通用的標準是HTTP/1.1HTTP/1.1是在HTTP/1.0基礎上的升級,增加了一些功能,全面兼容 HTTP/1.0HTTP/1.0不支持文件斷點續傳,目前的Web服務器絕大多數都采用了HTTP/1.1
RANGE:bytes
HTTP/1.1新增內容,HTTP/1.0每次傳送文件都是從文件頭開始,即0字節處開始。RANGE:bytes=XXXX表示要求服務器從文件XXXX字節處開始傳送,這就是我們平時所說的斷點續傳!

原文英文版
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/
下 一代超文本傳輸協議(HTTP-NG),為了克服當前HTTP協議的缺點,W3C(World Wide Web consortium)開始研究制定下一代HTTP協議?TTP-NG。它分三個層次:應用層、消息層、傳輸層。現有WEB上應用將轉換到HTTP-NG 平臺上,最后整個平臺都會更新為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.01.1的區別,英文版
Key Differences between HTTP/1.0 and HTTP/1.1
http://www.research.att.com/%7Ebala/papers/h0vh1.html

中文翻譯版沒有看到,有看到的告訴我:)

附上:HTTP 1.1狀態代碼及其含義
狀態代碼? 狀態信息? 含義?
100? Continue?
初始的請求已經接受,客戶應當繼續發送請求的其余部分。(HTTP 1.1新)
?
101? Switching Protocols?
服務器將遵從客戶的請求轉換到另外一種協議(HTTP 1.1新)
?
200? OK?
一切正常,對GETPOST請求的應答文檔跟在后面。

201? Created?
服務器已經創建了文檔,Location頭給出了它的URL
?
202? Accepted?
已經接受請求,但處理尚未完成。
?
203? Non-Authoritative Information?
文檔已經正常地返回,但一些應答頭可能不正確,因為使用的是文檔的拷貝(HTTP 1.1新)。
?
204? No Content?
沒有新文檔,瀏覽器應該繼續顯示原來的文檔。如果用戶定期地刷新頁面,而Servlet可以確定用戶文檔足夠新,這個狀態代碼是很有用的。
?
205? Reset Content?
沒有新的內容,但瀏覽器應該重置它所顯示的內容。用來強制瀏覽器清除表單輸入內容(HTTP 1.1新)。
?
206? Partial Content?
客戶發送了一個帶有Range頭的GET請求,服務器完成了它(HTTP 1.1新)。
?
300? Multiple Choices?
客戶請求的文檔可以在多個位置找到,這些位置已經在返回的文檔內列出。如果服務器要提出優先選擇,則應該在Location應答頭指明。
?
301? Moved Permanently?
客戶請求的文檔在其他地方,新的URLLocation頭中給出,瀏覽器應該自動地訪問新的URL
?
302? Found?
類似于301,但新的URL應該被視為臨時性的替代,而不是永久性的。注意,在HTTP1.0中對應的狀態信息是“Moved Temporatily”

出現該狀態代碼時,瀏覽器能夠自動訪問新的URL,因此它是一個很有用的狀態代碼。

注意這個狀態代碼有時候可以和301替換使用。例如,如果瀏覽器錯誤地請求http://host/~user(缺少了后面的斜杠),有的服務器返回301,有的則返回302

嚴格地說,我們只能假定只有當原來的請求是GET時瀏覽器才會自動重定向。請參見307
?
303? See Other?
類似于301/302,不同之處在于,如果原來的請求是POSTLocation頭指定的重定向目標文檔應該通過GET提取(HTTP 1.1新)。
?
304? Not Modified?
客戶端有緩沖的文檔并發出了一個條件性的請求(一般是提供If-Modified-Since頭表示客戶只想比指定日期更新的文檔)。服務器告訴客戶,原來緩沖的文檔還可以繼續使用。
?
305? Use Proxy?
客戶請求的文檔應該通過Location頭所指明的代理服務器提取(HTTP 1.1新)。
?
307? Temporary Redirect?
302Found)相同。許多瀏覽器會錯誤地響應302應答進行重定向,即使原來的請求是POST,即使它實際上只能在POST請求的應答是303時 才能重定向。由于這個原因,HTTP 1.1新增了307,以便更加清除地區分幾個狀態代碼:當出現303應答時,瀏覽器可以跟隨重定向的GETPOST請求;如果是307應答,則瀏覽器只能跟隨對GET請求的重定向。(HTTP 1.1新)
?
400? Bad Request?
請求出現語法錯誤。
?
401? Unauthorized?
客戶試圖未經授權訪問受密碼保護的頁面。應答中會包含一個WWW-Authenticate頭,瀏覽器據此顯示用戶名字/密碼對話框,然后在填寫合適的Authorization頭后再次發出請求。
?
403? Forbidden?
資源不可用。服務器理解客戶的請求,但拒絕處理它。通常由于服務器上文件或目錄的權限設置導致。
?
404? Not Found?
無法找到指定位置的資源。這也是一個常用的應答。
?
405? Method Not Allowed?
請求方法(GETPOSTHEADDELETEPUTTRACE等)對指定的資源不適用。(HTTP 1.1新)
?
406? Not Acceptable?
指定的資源已經找到,但它的MIME類型和客戶在Accpet頭中所指定的不兼容(HTTP 1.1新)。
?
407? Proxy Authentication Required?
類似于401,表示客戶必須先經過代理服務器的授權。(HTTP 1.1新)
?
408? Request Timeout?
在服務器許可的等待時間內,客戶一直沒有發出任何請求。客戶可以在以后重復同一請求。(HTTP 1.1新)
?
409? Conflict?
通常和PUT請求有關。由于請求和資源的當前狀態相沖突,因此請求不能成功。(HTTP 1.1新)
?
410? Gone?
所請求的文檔已經不再可用,而且服務器不知道應該重定向到哪一個地址。它和404的不同在于,返回407表示文檔永久地離開了指定的位置,而404表示由于未知的原因文檔不可用。(HTTP 1.1新)
?
411? Length Required?
服務器不能處理請求,除非客戶發送一個Content-Length頭。(HTTP 1.1新)
?
412? Precondition Failed?
請求頭中指定的一些前提條件失敗(HTTP 1.1新)。
?
413? Request Entity Too Large?
目標文檔的大小超過服務器當前愿意處理的大小。如果服務器認為自己能夠稍后再處理該請求,則應該提供一個Retry-After頭(HTTP 1.1新)。
?
414? Request URI Too Long? URI
太長(HTTP 1.1新)。
?
416? Requested Range Not Satisfiable?
服務器不能滿足客戶在請求中指定的Range頭。(HTTP 1.1新)
?
500? Internal Server Error?
服務器遇到了意料不到的情況,不能完成客戶的請求。
?
501? Not Implemented?
服務器不支持實現請求所需要的功能。例如,客戶發出了一個服務器不支持的PUT請求。
?
502? Bad Gateway?
服務器作為網關或者代理時,為了完成請求訪問下一個服務器,但該服務器返回了非法的應答。
?
503? Service Unavailable?
服務器由于維護或者負載過重未能應答。例如,Servlet可能在數據庫連接池已滿的情況下返回503。服務器返回503時可以提供一個Retry-After頭。
?
504? Gateway Timeout?
由作為代理或網關的服務器使用,表示不能及時地從遠程服務器獲得應答。(HTTP 1.1新)
?
505? HTTP Version Not Supported?
服務器不支持請求中所指明的HTTP版本。(HTTP 1.1新)?

===================================================================================

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/250603.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/250603.shtml
英文地址,請注明出處:http://en.pswp.cn/news/250603.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vue --- 前端代理發送http請求

后端 端口在3000使用jsonwebtoken和koa-jwt生成令牌并返回對’/api/userinfo’端口,先驗證令牌是否通過,若通過返回數據 const Koa require(koa); const Router require(koa-router); // 生成令牌、驗證令牌 const jwt require(jsonwebtoken); const jwtAuth require(koa…

python全棧開發-json和pickle模塊(數據的序列化)

一、什么是序列化&#xff1f; 我們把對象(變量)從內存中變成可存儲或傳輸的過程稱之為序列化&#xff0c;在Python中叫pickling&#xff0c;在其他語言中也被稱之為serialization&#xff0c;marshalling&#xff0c;flattening等等&#xff0c;都是一個意思。 為什么要序列化…

Gale-Shapley---婚姻匹配算法算法

原文鏈接&#xff1a;http://blog.csdn.net/cscmaker/article/details/8291131 &#xff08;一&#xff09;問題的引出&#xff1a; 有N男N女&#xff0c;每個人都按照他對異性的喜歡程度排名。現在需要寫出一個算法安排這N個男的、N個女的結婚&#xff0c;要求兩個人的婚姻應該…

大數據排重

注意用來排重的那個集合放到Set中&#xff0c; 可以是HashSet,或者其他Set(推薦使用HashSet),因為Set的contains效率更高&#xff0c;比list高很多 -----------------------------------------------------------------------------------------------------------------------…

大前端成長路徑

路徑(持續更新): 以下是我不同時期的博客鏈接可以和我的GitHub共同食用大家可以對比一下,我學的過程是緩慢型的… learning: 0個月 2018年09月開始接觸前端,前端三劍客一個不知道一個不懂,于是對著W3C、菜鳥教程.一個一個敲開始啃紅寶書《JavaScript高級程序設計》(第3版) le…

工具:meson+ninja(安裝問題解決)

問題1&#xff1a;Python版本問題 報錯信息&#xff1a; NOTICE: You are using Python 3.6 which is EOL. Starting with v0.62.0, Meson will require Python 3.7 or newer ubuntu 18默認的python3是3.6. 解決方案1&#xff1a;從源碼安裝python 3.7 wget https://www.pyth…

ListMapSet的操作和遍歷

List&Map&Set的操作和遍歷 Java的三大集合即&#xff1a;Set、List、Map。 Set&#xff1a;代表無序、不可重復的集合&#xff0c;常用的有HashSet&#xff08;哈希表實現&#xff09;、TreeSet&#xff08;紅黑樹實現&#xff09;&#xff1b;List&#xff1a;代表有序…

PHP中的魔術方法

概述 在面向對象編程中&#xff0c;PHP提供了一系列的魔術方法&#xff0c;這些魔術方法為編程提供了很多便利。PHP中的魔術方法通常以__(兩個下劃線)開始&#xff0c;并且不需要顯示的調用而是由某種特定的條件出發。這篇文章簡單總結了PHP中提供的魔術方法。 開始之前 在總結…

執行caffe的draw_net.py出現“GraphViz's executable dot not found”的解決方法

執行caffe的draw_net.py出現“GraphVizs executable "dot" not found”的解決方法 控制臺輸入如下指令畫網絡圖&#xff1a;python ../../../python/draw_net.py train.prototxt train.png --rankdirTB &#xff08;Top-Bottom形式&#xff0c;縱向圖&#xff09;pyt…

配置 --- vscode自定義代碼段Snippets

目標 在vscode中輸入vbs-vue 然后產生一個自己想要的模板 寫好模板 在線上寫好模板傳送門: https://snippet-generator.app/ 1是標題,對應 2是前綴.對應在vue中使用的快捷鍵 vbs-vue3就是需要顯示的代碼段了 在vscode中配置 1.ctrlshiftp2.選擇 Preferences: Configure U…

centos6安裝composer

需要使用到curl&#xff0c;沒有的話需要 yum -y install curl ###安裝一、下載&#xff1a;curl -sS https://getcomposer.org/installer | php &#xff08;如果是網絡原因多試幾次&#xff09; 二、移動composer.phar移動到環境下讓其變成可執行&#xff1a;mv compose…

透明圖與元素居中

1,定位讓元素居中 1. 透明度 opacity 默認值是1 不透明 0是全透明轉載于:https://www.cnblogs.com/Shinigami/p/9709382.html

配置 --- vscode中react格式化解決方案

選擇右下角的語言 在彈出框搜react選擇 JavaScript React(或者根據需求選擇 TypeScript React) 快捷鍵, windows下 Alt SHIFT F

【商城購物車】購物車邏輯

轉載于:https://www.cnblogs.com/xuzhengzong/p/8746677.html

PHP遞歸實現無限極分類

PHP遞歸實現無限極分類 摘要 今天在編碼的時候要用到二級的欄目分類&#xff0c;所以順便就把無限極分類給整理了一下&#xff0c;采用的是遞歸方法 //實現無限級分類public function getTree(){$categorys Category::all();return $this->makeTree($categorys, cate_id,…

IO NIO

1,Java NIO Java non-blocking IO 即 非阻塞IO,線程在等待的時候&#xff0c;可以做其他的事情。 2,IO 對比NIO IO 是面向流&#xff0c;NIO 是面向緩沖 面向流是指每次從流中讀出一個或者多個字節&#xff0c;直到全部讀出為止 面向緩沖區是指將數據先存到一個緩存區 IO 是阻…

react --- 生命周期 給子組件傳遞數據

子組件 /src/components/LifeCycle.js import React, { Component } from reactexport class LifeCycle extends Component {constructor(props) {super(props);// 常用于初始化狀態(狀態初始化、屬性初始化)console.log("1.組件構建函數執行");}componentWillMoun…

Vue---mock.js 使用

mockjs 概述 在我們的生產實際中&#xff0c;后端的接口往往是較晚才會出來&#xff0c;并且還要寫接口文檔&#xff0c;于是我們的前端的許多開發都要等到接口給我們才能進行&#xff0c;這樣對于我們前端來說顯得十分的被動&#xff0c;于是有沒有可以制造假數據來模擬后端接…

Java 的抽象類

Java 的抽象類 用abstract關鍵字來修飾一個類時&#xff0c;這個類叫做抽象類&#xff1b;用abstract來修飾一個方法時&#xff0c;該方法叫做抽象方法。 抽象方法&#xff1a;只有方法的聲明&#xff0c;沒有方法的實現。以分號結束&#xff1a;abstract int abstractMethod…

react --- 按需加載組件

問題描述 使用 antd庫時使用按鈕,須導入如下 import Button from antd/lib/button import antd/dist/antd.css這樣會導入全局的樣式. 解決方案,配置按需加載 1.安裝 react-app-rewired取代 react-scripts, 可以擴展webapack 的配置, 類似vue.config.jsnpm install react-ap…