




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
HTTP協(xié)議基礎(chǔ)
2021/5/911、HTTP與WEB服務(wù)HTTP應(yīng)用層協(xié)議是Web的核心。HTTP協(xié)議運(yùn)行在客戶程序和服務(wù)器程序中。不同端系統(tǒng)上的客戶程序和服務(wù)器程序通過交換HTTP消息彼此交流。HTTP定義Web客戶(即瀏覽器)如何從web服務(wù)器請(qǐng)求Web頁面,以及服務(wù)器如何把Web頁面?zhèn)魉徒o客戶。2021/5/92Web頁面(webpage,也稱為文檔)由多個(gè)對(duì)象構(gòu)成。對(duì)象(object)僅僅是可由單個(gè)URL尋址的文件,例如HTML文件、JPG圖像、GIF圖像、JAVA小應(yīng)用程序、語音片段等。例如,如果一個(gè)Web頁面包含HTML文本和5個(gè)JPEG圖像,那么它由6個(gè)對(duì)象構(gòu)成,即基本H1ML文件加5個(gè)圖像。2021/5/93瀏覽器是web的用戶代理,它顯示所請(qǐng)求的Web頁面,并提供大量的導(dǎo)航與配置特性。Web瀏覽器還實(shí)現(xiàn)HTTP的客戶端Web服務(wù)器存放可由URL尋址的Web對(duì)象,web服務(wù)器還實(shí)現(xiàn)HTTP的服務(wù)器端。2021/5/942、Http工作流程HTTP客戶端啟動(dòng)TCP連接(創(chuàng)建插口)到服務(wù)器,端口80。一旦建立連接,瀏覽器進(jìn)程和服務(wù)器進(jìn)程就可以通過各自的套接字來訪問。http報(bào)文(應(yīng)用層協(xié)議報(bào)文)在瀏覽器(httpclient)和Web服務(wù)器(httpserver)之間進(jìn)行交換??蛻舳颂捉幼帧?蛻敉约旱奶捉幼职l(fā)送HTTP請(qǐng)求消息,也從自己的套接字接收HTTP響應(yīng)消息。2021/5/95服務(wù)器從自己的套接字接收HTTP請(qǐng)求消息,也往自己的套接字發(fā)送HTTP響應(yīng)消息。關(guān)閉TCP連接注意:在向客戶發(fā)送所請(qǐng)求文件的同時(shí),服務(wù)器并沒有存儲(chǔ)關(guān)于該客戶的任何狀態(tài)信息。即便某個(gè)客戶在幾秒鐘內(nèi)再次請(qǐng)求同一個(gè)對(duì)象,服務(wù)器也不會(huì)響應(yīng)說:自己剛剛給它發(fā)送了這個(gè)對(duì)象。
所以http是“無狀態(tài)(stateless)”的服務(wù),不保留任何訪問過的請(qǐng)求信息2021/5/96當(dāng)用戶請(qǐng)求一個(gè)Web頁面(譬如說點(diǎn)擊某個(gè)超鏈接)時(shí),瀏覽器把請(qǐng)求該頁面中各個(gè)對(duì)象的HTTP請(qǐng)求消息發(fā)送給服務(wù)器。服務(wù)器收到請(qǐng)求后,以運(yùn)送含有這些對(duì)象HTTP響應(yīng)消息作為響應(yīng)。2021/5/973、HTTP連接的類型非持久連接和持久連接
HTTP既可以使用非持久連接(nonpersistentconnection),也可以使用持久連接(persistentconnection)。HTTP/1.0使用非持久連接,HTTP/1.1默認(rèn)使用持久連接。2021/5/983.1非持久連接
非持久連接情況下從服務(wù)器到客戶傳送一個(gè)Web頁面的步驟。假設(shè)該貝面由1個(gè)基本HTML文件和10個(gè)JPEG圖像構(gòu)成,而且所有這些對(duì)象都存放在同一臺(tái)服務(wù)器主機(jī)中。再假設(shè)該基本HTML文件的URL為:/somepath/index.html。
2021/5/99下面是具體步騾:
1.HTTP客戶初始化一個(gè)與服務(wù)器主機(jī)中的HTTP服務(wù)器的TCP連接。HTTP服務(wù)器使用默認(rèn)端口號(hào)80監(jiān)聽來自HTTP客戶的連接建立請(qǐng)求。
2.HTTP客戶經(jīng)由與TCP連接相關(guān)聯(lián)的本地套接字發(fā)出—個(gè)HTTP請(qǐng)求消息。這個(gè)消息中包含路徑名/somepath/index.html。2021/5/910
3.HTTP服務(wù)器經(jīng)由與TCP連接相關(guān)聯(lián)的本地套接字接收這個(gè)請(qǐng)求消息,再從服務(wù)器主機(jī)的內(nèi)存或硬盤中取出對(duì)象/somepath/index.html,經(jīng)由同一個(gè)套接字發(fā)出包含該對(duì)象的響應(yīng)消息。
4.HTTP服務(wù)器告知TCP關(guān)閉這個(gè)TCP連接(不過TCP要到客戶收到剛才這個(gè)響應(yīng)消息之后才會(huì)真正終止這個(gè)連接)。2021/5/9115.HTTP客戶經(jīng)由同一個(gè)套接字接收這個(gè)響應(yīng)消息。TCP連接隨后終止。該消息標(biāo)明所封裝的對(duì)象是一個(gè)HTML文件。客戶從中取出這個(gè)文件,加以分析后發(fā)現(xiàn)其中有10個(gè)JPEG對(duì)象的引用。
6.給每一個(gè)引用到的JPEG對(duì)象重復(fù)步騾1-4。2021/5/9123.2持久連接持久連接情況下,服務(wù)器在發(fā)出響應(yīng)后讓TCP連接繼續(xù)打開著。同一對(duì)客戶/服務(wù)器之間的后續(xù)請(qǐng)求和響應(yīng)可以通過這個(gè)連接發(fā)送。通常,HTTP服務(wù)器在某個(gè)連接閑置一段特定時(shí)間后關(guān)閉它,而這段時(shí)間通常是可以配置的。持久連接分為不帶流水線(withoutpipelining)和帶流水線(withpipelining)兩個(gè)版本。如果是不帶流水線的版本,那么客戶只在收到前一個(gè)請(qǐng)求的響應(yīng)后才發(fā)出新的請(qǐng)求。2021/5/913HTTP/1.1的默認(rèn)模式使用帶流水線的持久連接。這種情況下,HTTP客戶每碰到一個(gè)引用就立即發(fā)出一個(gè)請(qǐng)求,因而HTTP客戶可以一個(gè)接一個(gè)緊挨著發(fā)出各個(gè)引用對(duì)象的請(qǐng)求。服務(wù)器收到這些請(qǐng)求后,也可以一個(gè)接一個(gè)緊挨著發(fā)出各個(gè)對(duì)象。2021/5/9143.3流水線和非流水線方式流水線方式指沒有收到上一個(gè)請(qǐng)求的對(duì)象就發(fā)送新的對(duì)象的請(qǐng)求非流水線方式指必須要等到上一個(gè)請(qǐng)求的對(duì)象到達(dá)之后再發(fā)送新的對(duì)象的請(qǐng)求2021/5/9154、HTTP消息格式HTTP規(guī)范1.0[RPcl945]和HTTP1.1[RFC2616]定義了HTTP消息的格式。HTTP消息分為請(qǐng)求消息和響應(yīng)稍息兩類。
2021/5/9164.1HTTP請(qǐng)求消息
下面是一個(gè)典型的HTTP請(qǐng)求消息:
GET/somedir/page.htmlHTTP/1.1
Host:
Connection:close
User-agent:Mozilla/4.0
Accept-language:zh-cn
(額外的回車符和換行符)2021/5/917首先,這個(gè)消息是用普通的ASCII文本書寫的。其次,這個(gè)消息共有5行(每行以一個(gè)回車符和一個(gè)換行符結(jié)束),最后一行后面還有額外的一個(gè)回車特和換行符。請(qǐng)求行有3個(gè)寧段:方法字段、URL字段、HTTP版本宇段。2021/5/918方法字段有若干個(gè)值可供選擇,包括GET、POST和HEAD。HTTP請(qǐng)求消息絕大多數(shù)使用GET方法,頭部行Host:定存放所請(qǐng)求對(duì)象的主機(jī)。請(qǐng)求消息中包含頭部Connection:close是在告知服務(wù)器本瀏覽器不想使用持久連接;服務(wù)器發(fā)出所請(qǐng)求的對(duì)象后應(yīng)關(guān)閉連接。2021/5/919User-agent頭部行指定用戶代理,也就是產(chǎn)生當(dāng)前請(qǐng)求的瀏覽器的類型。本例的用戶代理是Mozilla/4.0,它是Nelscape瀏覽器的一個(gè)版本。2021/5/920HTTP請(qǐng)求標(biāo)準(zhǔn)格式Request方法URL版本首部字段名首部行:值首部字段名值:…實(shí)體主體(通常不用)請(qǐng)求行空格回車換行:CRLFCRLFCRLFCRLF請(qǐng)求報(bào)文的類型是由它所采用的方法決定的。2021/5/921附屬體不在GET方法中使用,而是在POST方法中使用。POST方法適用于需由用戶填寫表單的場合,如往google搜索引擎中填入待搜索的詞。用戶提交表單后,HEAD方法與GET方法類似,兩者的差別只是服務(wù)器在對(duì)HEAD方法的響應(yīng)消息中去掉了所請(qǐng)求的對(duì)象,其他內(nèi)容則與對(duì)GET方法的響應(yīng)消息一樣。HEAD方法通常用于HTTP服務(wù)器軟件開發(fā)人員進(jìn)行調(diào)試。2021/5/9224.2HTTP響應(yīng)消息
下面是一個(gè)典型的HTTP響應(yīng)消息:
HTTP/1.12000K
Connectlon:close
Date:Thu,13Oct200503:17:33GMT
Server:Apache/2.0.54(Unix)
Last—Nodified:Mon,22Jun199809;23;24GMT
Content—Length:682l
Content—Type:text/html
(數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)…………)
2021/5/923HTTP響應(yīng)標(biāo)準(zhǔn)格式Response版本狀態(tài)碼短語首部字段名首部行:值首部字段名值:…實(shí)體主體(有些響應(yīng)報(bào)文不用)狀態(tài)行空格回車換行:CRLFCRLFCRLFCRLF響應(yīng)報(bào)文的開始行是狀態(tài)行。狀態(tài)行包括三項(xiàng)內(nèi)容,即HTTP的版本,狀態(tài)碼,以及解釋狀態(tài)碼的簡單短語。
開始行2021/5/9245HTTP常用狀態(tài)碼1xx表示通知信息的,如請(qǐng)求收到了或正在進(jìn)行處理。2xx表示成功,如接受或知道了。3xx表示重定向,表示要完成請(qǐng)求還必須采取進(jìn)一步的行動(dòng)。4xx表示客戶的差錯(cuò),如請(qǐng)求中有錯(cuò)誤的語法或不能完成。5xx表示服務(wù)器的差錯(cuò),如服務(wù)器失效無法完成請(qǐng)求。2021/5/925●2000K;請(qǐng)求成功,所請(qǐng)求信息在響應(yīng)消息中返回。
●301MovedPermanently:所請(qǐng)求的對(duì)象己永久性遷移;新的URL在本響應(yīng)消息的Location:頭部指出。客戶軟件會(huì)自動(dòng)請(qǐng)求這個(gè)新的URL。
●400BadRequest;表示服務(wù)器無法理解相應(yīng)請(qǐng)求的普通錯(cuò)誤的狀態(tài)碼
2021/5/926●404NotFound:服務(wù)器上不存在所請(qǐng)求的文檔。
●HTTPVersionNotSupport:服務(wù)器不支持所請(qǐng)求的HTTP協(xié)議版本。2021/5/927Cookies:保存“狀態(tài)”服務(wù)器產(chǎn)生一個(gè)#,服務(wù)器認(rèn)識(shí)這個(gè)#,以備不時(shí)之需:認(rèn)證記憶用戶的前序訪問,先前的選擇服務(wù)器在響應(yīng)報(bào)文中發(fā)送“cookie”給客戶端Set-cookie:1678453客戶端可以在后繼的請(qǐng)求中發(fā)送“cookie”cookie:1678453clientserver普通http請(qǐng)求報(bào)文普通http響應(yīng)報(bào)文+Set-cookie:#普通http請(qǐng)求報(bào)文cookie:#普通http響應(yīng)報(bào)文普通http請(qǐng)求報(bào)文cookie:#普通http響應(yīng)報(bào)文cookie-特定的cookie-特定的2021/5/928ConditionalGET:客戶端緩存機(jī)制目的:如果客戶端緩存了最新的請(qǐng)求對(duì)象,則服務(wù)器不必重復(fù)發(fā)送客戶端:在http請(qǐng)求報(bào)文中聲明所緩存拷貝的生成日期If-modified-since:<date>服務(wù)器:如果客戶端緩存的拷貝是最新的,則在響應(yīng)報(bào)文中不發(fā)請(qǐng)求的對(duì)象:HTTP/1.0304NotModifiedclientserverhttp請(qǐng)求報(bào)文If-modified-since:<date>http響應(yīng)報(bào)文HTTP/1.0304NotModified對(duì)象未經(jīng)修改http請(qǐng)求報(bào)文If-modified-since:<date>http響應(yīng)報(bào)文HTTP/1.1200OK<data>對(duì)象已經(jīng)修改2021/5/929用telnet測試http(客戶端操作)1.用Tel
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 地埂黃花施工方案
- 吉林大型溫室工程施工方案
- 疫情期間保障工程施工方案
- 云南石雕八角亭施工方案
- 甘肅移動(dòng)式u型渠施工方案
- 都勻換熱器機(jī)組施工方案
- 鶴壁硅pu籃球場施工方案
- 同花順:2024年年度財(cái)務(wù)報(bào)告
- 2025年銅及銅合金材合作協(xié)議書
- 通風(fēng)管道改造施工方案
- 苔花如米小“艷過”牡丹開——名著導(dǎo)讀之《簡愛》
- 《西方服裝發(fā)展史》PPT課件(完整版)
- 《食管裂孔疝》PPT課件(完整版)
- 家庭醫(yī)生工作室和家庭醫(yī)生服務(wù)點(diǎn)建設(shè)指南
- 魯班尺和丁蘭尺速查表
- C語言上機(jī)考試
- 飽和蒸汽-水溫度、壓力、比焓、比熵、比容、汽化潛熱對(duì)照表(史上最全、最細(xì))G
- 企業(yè)年會(huì)搞笑相聲劇本《治病》
- 為夢(mèng)想插上翅膀主題班會(huì)PPT授課課件
- JJF-1069-2000-法定計(jì)量檢定機(jī)構(gòu)考核規(guī)范
- 如何上好自習(xí)課主題班會(huì)PPT學(xué)習(xí)教案
評(píng)論
0/150
提交評(píng)論