一、目錄
二、http協(xié)議簡介
1.http簡介
http是超文本傳輸協(xié)議的縮寫(Hyper Text Transfer Protocol),是從萬維網(wǎng)服務(wù)器傳送到本地瀏覽器的傳送協(xié)議
2.http的工作原理
HTTP的協(xié)議工作于客戶端——服務(wù)端的框架上,即客戶端向服務(wù)端發(fā)送請求,服務(wù)端接收請求后向客戶端發(fā)送響應(yīng)信息
3.http的特點
1.http是無連接的:無連接的含義是限制每次連接值處理一個請求,服務(wù)器處理完客戶端的請求后,并受到客戶的應(yīng)道后即斷開連接。
2.http是媒體獨立的:這意味著只要客戶端和服務(wù)端知道如何處理數(shù)據(jù)內(nèi)容,任何類型的數(shù)據(jù)類型都可以通過http協(xié)議發(fā)送,客戶端和服務(wù)端都知道使用合適的MIMR-type內(nèi)容類型
3.http是無狀態(tài)的:Http是無狀態(tài)協(xié)議:指對事物處理沒有記憶能力。
三、http協(xié)議的響應(yīng)步驟
七步驟:
1.建立TPC連接
在HTTP工作開始之前, Web瀏覽器首先要通過網(wǎng)絡(luò)與Web服務(wù)器建立連接, 該連接是通過TCP來完成的, 該協(xié)議與IP協(xié)議共同構(gòu)建Internet, 即著名的TCP/IP協(xié)議族, 因此Internet又被稱作是TCP/IP網(wǎng)絡(luò).
HTTP是比TCP更高層次的應(yīng)用層協(xié)議,根據(jù)規(guī)則,有低層協(xié)議建立之后才能進行更高層協(xié)議的連接, 因此, 首先要建立TCP連接, 一般TCP連接的端口號是80.
tcp/ip 連接就是我們比較熟悉的三次握手
2、Web瀏覽器向Web服務(wù)器發(fā)送請求命令
一旦建立了TCP連接,Web瀏覽器就會向web服務(wù)器發(fā)送請求命令
3.Web瀏覽器發(fā)送請求頭信息
瀏覽器發(fā)送其請求命令后,還要以頭信息的形式向web服務(wù)器發(fā)送一些別的信息,這些信息用來描述瀏覽器自己,之后瀏覽器發(fā)送一空白行來通知服務(wù)器,表示它已經(jīng)結(jié)束了該頭信息的發(fā)送. 若是post請求, 還會在發(fā)送完請求頭信息之后發(fā)送請求體.
4.Web服務(wù)器的應(yīng)答
客戶機向服務(wù)機發(fā)出請求后,服務(wù)器會向客戶機會送應(yīng)答
應(yīng)答的第一部分是協(xié)議的版本號和應(yīng)答狀態(tài)碼
5.Web服務(wù)器向瀏覽器發(fā)送應(yīng)答頭信息
正如客戶端會隨同請求發(fā)送關(guān)于自身的信息一樣,服務(wù)器也會隨同應(yīng)答向用戶發(fā)送關(guān)于它自己的數(shù)據(jù)及被請求的文檔. 最后以一個空白行來表示頭信息發(fā)送到此結(jié)束.
6.Web服務(wù)器向瀏覽器發(fā)送數(shù)據(jù)
Web服務(wù)器向瀏覽器發(fā)送頭信息后, 它就以Content-Type應(yīng)答頭信息所描述的格式發(fā)送用戶所請求的實際數(shù)據(jù)
7.Web服務(wù)器關(guān)閉TCP連接
一般情況下, 一旦Web服務(wù)器向瀏覽器發(fā)送了請求數(shù)據(jù), 它就要關(guān)閉TCP連接. 如果瀏覽器或者服務(wù)器在其頭信息加入了這行代碼
Connection:keep-alive
TCP連接在發(fā)送后將仍然保持打開狀態(tài). 于是, 瀏覽器可以繼續(xù)通過相同的連接發(fā)送請求. 保持連接節(jié)省了為每個請求建立新連接所需的時間, 還節(jié)約了網(wǎng)絡(luò)帶寬.。
四、http的消息結(jié)構(gòu)
1.客戶端請求消息
客戶端發(fā)送一個HTTP請求到服務(wù)器的請求消息包括以下格式:請求行(request line)、請求頭部(header)、空行和請求數(shù)據(jù)四部分。
示例:
GET/sample.jspHTTP/1.1 //請求行
Accept:image/gif.image/jpeg,*/* //請求頭部
Accept-Language:zh-cn
Connection:Keep-Alive
Host:localhost
User-Agent:Mozila/4.0(compatible'MEIS5.01;window NT5.0)
Accept-Encoding:gzip,deflate
//空行
username=jingqiao&password=1234 //請求數(shù)據(jù)
請求的第一行是“方法URL議/版本”:GET/sample.jsp HTTP/1.1:
以上代碼中“GET”代表請求方法,“/sample.jsp”表示URI,“HTTP/1.1代表協(xié)議和協(xié)議的版本。
根據(jù)HTTP標準,HTTP請求可以使用多種請求方法。例如:HTTP1.1支持7種請求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。在Internet應(yīng)用中,最常用的方法是GET和POST。
URL完整地指定了要訪問的網(wǎng)絡(luò)資源,通常只要給出相對于服務(wù)器的根目錄的相對目錄即可,因此總是以“/”開頭,最后,協(xié)議版本聲明了通信過程中使用HTTP的版本。
請求頭包含許多有關(guān)的客戶端環(huán)境和請求正文的有用信息。例如,請求頭可以聲明瀏覽器所使用的語言,請求正文的長度
2.服務(wù)端響應(yīng)消息
HTTP響應(yīng)也由四個部分組成:狀態(tài)行,消息報頭,空行和響應(yīng)正文。
示例:
HTTP/1.1 200 OK //
Server:Apache Tomcat/5.0.12 //
Date:Mon.60ct2003 13:23:42 GMT
Content-Length:112
//空行
<html> //
<head>
<title>HTTP響應(yīng)示例<title>
</head>
<body>
Hello HTTP!
</body>
</html>
狀態(tài)行:他表示通信所用的協(xié)議是HTTP1.1服務(wù)器已經(jīng)成功地處理了客戶端發(fā)送的請求(200表示成功)
HTTP/1.1 200 OK
3.響應(yīng)頭信息
這一節(jié)介紹上面請求,響應(yīng)的請求頭中各參數(shù)的含義:
五、Http協(xié)議版本
Http到現(xiàn)在一共經(jīng)歷了3個版本的演化,,第一個HTTP協(xié)議誕生于1989年3月
1.Http 0.9
HTTP 0.9是第一個版本的HTTP協(xié)議,已過時。它的組成極其簡單,只允許客戶端發(fā)送GET這一種請求,且不支持請求頭。由于沒有協(xié)議頭,造成了HTTP 0.9協(xié)議只支持一種內(nèi)容,即純文本。不過網(wǎng)頁仍然支持用HTML語言格式化,同時無法插入圖片。
HTTP 0.9具有典型的無狀態(tài)性,每個事務(wù)獨立進行處理,事務(wù)結(jié)束時就釋放這個連接。由此可見,HTTP協(xié)議的無狀態(tài)特點在其第一個版本0.9中已經(jīng)成型。一次HTTP 0.9的傳輸首先要建立一個由客戶端到Web服務(wù)器的TCP連接,由客戶端發(fā)起一個請求,然后由Web服務(wù)器返回頁面內(nèi)容,然后連接會關(guān)閉。如果請求的頁面不存在,也不會返回任何錯誤碼。
2.Http 1.0
HTTP協(xié)議的第二個版本,第一個在通訊中指定版本號的HTTP協(xié)議版本,至今仍被廣泛采用。相對于HTTP 0.9 增加了如下主要特性
請求和響應(yīng)支持頭域
響應(yīng)對象以一共響應(yīng)狀態(tài)行開始
響應(yīng)對象不止限于超文本
開始支持POST方法,支持GET,HEAD方法
支持長連接(但默認還是短連接),緩存機制,以及身份認證
3.Http 1.1
HTTP協(xié)議的第三個版本是HTTP 1.1,是目前使用最廣泛的協(xié)議版本 。HTTP 1.1是目前主流的HTTP協(xié)議版本.
HTTP 1.1引入了許多的關(guān)鍵的性能優(yōu)化:keepalive連接,chunked編碼傳輸,字節(jié)范圍請求,請求流水線等
a.keepalive連接
允許HTTP設(shè)備在事務(wù)處理結(jié)束之后將TCP連接保持在打開的狀態(tài),一遍未來的HTTP請求重用現(xiàn)在的連接,直到客戶端或服務(wù)器端決定將其關(guān)閉為止。
在HTTP1.0中使用長連接需要添加請求頭 Connection: Keep-Alive,而在HTTP 1.1 所有的連接默認都是長連接,除非特殊聲明不支持( HTTP請求報文首部加上Connection: close )
b.chunked編碼傳輸
該編碼將實體分塊傳送并逐塊標明長度,直到長度為0塊表示傳輸結(jié)束, 這在實體長度未知時特別有用(比如由數(shù)據(jù)庫動態(tài)產(chǎn)生的數(shù)據(jù))
c.字節(jié)請求范圍
HTTP1.1支持傳送內(nèi)容的一部分。比方說,當客戶端已經(jīng)有內(nèi)容的一部分,為了節(jié)省帶寬,可以只向服務(wù)器請求一部分。該功能通過在請求消息中引入了range頭域來實現(xiàn),它允許只請求資源的某個部分。在響應(yīng)消息中Content-Range頭域聲明了返回的這部分對象的偏移值和長度。如果服務(wù)器相應(yīng)地返回了對象所請求范圍的內(nèi)容,則響應(yīng)碼206(Partial Content)
d.其他功能
請求頭和響應(yīng)消息都支持Host頭域
新增了一些方法
緩存處理,在1.0的基礎(chǔ)上增加了新特性,引入了實體標簽。
4.Http 2.0
HTTP 2.0是下一代HTTP協(xié)議,目前應(yīng)用還非常少。主要特點有:
a.多路復用(二進制分幀)
HTTP 2.0最大的特點: 不會改動HTTP 的語義,HTTP 方法、狀態(tài)碼、URI 及首部字段,等等這些核心概念上一如往常,卻能致力于突破上一代標準的性能限制,改進傳輸性能,實現(xiàn)低延遲和高吞吐量。而之所以叫2.0,是在于新增的二進制分幀層。在二進制分幀層上, HTTP 2.0 會將所有傳輸?shù)男畔⒎指顬楦〉南⒑蛶?并對它們采用二進制格式的編碼 ,其中HTTP1.x的首部信息會被封裝到Headers幀,而我們的request body則封裝到Data幀里面。
b.頭部壓縮
當一個客戶端向相同服務(wù)器請求許多資源時,像來自同一個網(wǎng)頁的圖像,將會有大量的請求看上去幾乎同樣的,這就需要壓縮技術(shù)對付這種幾乎相同的信息。
c.隨時復位
Http1.1一個缺點就是當Http信息由一定長度大小數(shù)據(jù)傳輸時,你不能方便地隨時停止它,中斷TCP連接的代價是昂貴的。使用HTTP2的RST_STREAM將能方便停止一個信息傳輸,啟動新的信息,在不中斷連接的情況下提高帶寬利用效率。
d.服務(wù)器端推流: Server Push
客戶端請求一個資源X,服務(wù)器端判斷也許客戶端還需要資源Z,在無需事先詢問客戶端情況下將資源Z推送到客戶端,客戶端接受到后,可以緩存起來以備后用。
e.優(yōu)先權(quán)和依賴
每個流都有自己的優(yōu)先級別,會表明哪個流是最重要的,客戶端會指定哪個流是最重要的,有一些依賴參數(shù),這樣一個流可以依賴另外一個流。優(yōu)先級別可以在運行時動態(tài)改變,當用戶滾動頁面時,可以告訴瀏覽器哪個圖像是最重要的,你也可以在一組流中進行優(yōu)先篩選,能夠突然抓住重點流。
六、http協(xié)議的請求方法
根據(jù)HTTP標準,HTTP請求可以使用多種請求方法。
HTTP1.0定義了三種請求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五種請求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
七、http協(xié)議的狀態(tài)碼
當瀏覽者訪問一個網(wǎng)頁時,瀏覽者的瀏覽器會向網(wǎng)頁的服務(wù)器發(fā)送請求。當瀏覽器就收并顯示網(wǎng)頁前,此網(wǎng)頁的服務(wù)器會返回一個包含HTTP狀態(tài)碼的信息頭(server header)用于響應(yīng)瀏覽器的請求
1.http狀態(tài)碼分類
http狀態(tài)碼由三個十進制數(shù)組組成,第一個十進制數(shù)組定義了狀態(tài)碼的類型,后兩個數(shù)字沒有分類的作用,http狀態(tài)碼分為5種狀態(tài)文章來源:http://www.zghlxwxcb.cn/news/detail-458028.html
2.http狀態(tài)碼列表
文章來源地址http://www.zghlxwxcb.cn/news/detail-458028.html
到了這里,關(guān)于安卓網(wǎng)絡(luò)請求1————Http協(xié)議的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!