使用HTTP協(xié)議訪問Web
我們?cè)谑褂镁W(wǎng)頁瀏覽器訪問網(wǎng)頁的時(shí)候,通過輸入U(xiǎn)RL地址蕴轨,當(dāng)成功請(qǐng)求到服務(wù)器時(shí)港谊,WEB瀏覽器就會(huì)顯示相應(yīng)的頁面。
其中發(fā)起請(qǐng)求的是客戶端
接收請(qǐng)求的是服務(wù)端
而他們進(jìn)行通訊的語言我們成為協(xié)議,web訪問采用的是HTTP(HyperText Transfer Protocol 超文本傳輸協(xié)議)
與HTTP密切相關(guān)的IP/TCP/DNS協(xié)議
IP(Internet Protocol 網(wǎng)際協(xié)議) 位于網(wǎng)絡(luò)層橙弱,它的作用是把各種數(shù)據(jù)包傳送給對(duì)方.(而IP協(xié)議又通過ARP協(xié)議來搜索目標(biāo)[ARP(Address Reslution Protocol) 地址解析協(xié)議歧寺,通過IP地址反向查詢對(duì)應(yīng)的MAC地址])。
負(fù)責(zé)域名解析的DNS
計(jì)算機(jī)可以被賦予IP地址棘脐,也可以被賦予域名或主機(jī)名,但是對(duì)于我們來說斜筐,記住長長的IP地址實(shí)在太難為我們了,與IP地址相比蛀缝,一個(gè)有意義的域名更符合我們的記憶習(xí)慣顷链。但是反過來,讓計(jì)算機(jī)去理解名稱也相對(duì)的變得困難屈梁。因此DNS(Domain Name System)協(xié)議孕育而生.
DNS協(xié)議提供的服務(wù)就是:對(duì)用戶而言:將IP地址轉(zhuǎn)換成域名嗤练、對(duì)計(jì)算機(jī)而言就是將域名轉(zhuǎn)碼成IP地址榛了。
URL與URI
URL是URI的子集,而且我們也更熟悉URL(Uniform Resource Locator 統(tǒng)一資源定位符)煞抬。URL正是使用WEB瀏覽器訪問網(wǎng)頁需要輸入的網(wǎng)頁地址霜大。
URI(Uniform Resource Identifier 統(tǒng)一資源標(biāo)識(shí)符),RFC2396分別對(duì)著三個(gè)單詞做了以下的定義:
Uniform: 規(guī)定統(tǒng)一的格式可方便處理多種不同類型的資源.而不用根據(jù)上下文環(huán)境來識(shí)別資源指定的訪問格式革答。另外加入新增的協(xié)議方案(如http:/ftp:等協(xié)議)也更加容易.
Resource:資源的定義是"可標(biāo)識(shí)的任何東西".除了文檔战坤、圖像或服務(wù)等能夠區(qū)別于其他類型的,全都可作為資源残拐。另外資源不僅可以是單一的途茫,也可以是集合。
Identifier: 標(biāo)識(shí)可以標(biāo)識(shí)的對(duì)象溪食。也稱為標(biāo)識(shí)符慈省。
綜上所述:URI就是由某個(gè)協(xié)議方案表示的資源的定位標(biāo)識(shí)符。協(xié)議方案是指訪問資源所使用的協(xié)議類型名稱.
采用HTTP協(xié)議時(shí)眠菇,協(xié)議方案就是HTTP.除此之外边败,還有ftp、telnet等捎废。標(biāo)準(zhǔn)的URI協(xié)議方案有30多種笑窜。
URI用字符串標(biāo)識(shí)某一互聯(lián)網(wǎng)資源,而URL表示資源的地點(diǎn)(互聯(lián)網(wǎng)所在的位置)登疗。RFC3986中列舉了幾種URI的使用方法:
1.ftp://ftp.is.co.za/rfc/hello.txt
2.http://www.***.com/hello.txt
3.tel:+1-816-555-1212
4.telnet://192.168.0.22:80/
HTTP協(xié)議用于服務(wù)端與客戶端的通訊
HTTP協(xié)議和TCP/IP協(xié)議族內(nèi)的其他眾多的協(xié)議相同排截,都是用于客戶端與服務(wù)端之間進(jìn)行通訊的。
訪問資源的一端叫做客戶端辐益,提供資源相應(yīng)的一端叫做服務(wù)端.當(dāng)然實(shí)際情況中断傲,客戶端及服務(wù)端的角色是有可能產(chǎn)生互換的.(即是客戶端也是服務(wù)端),這種情況在P2P中尤為明顯.
HTTP協(xié)議規(guī)定,請(qǐng)求是從客戶端發(fā)起智政,最后服務(wù)端響應(yīng)該請(qǐng)求并返回響應(yīng)數(shù)據(jù)认罩。換句話說,肯定是客戶端開始建立通訊续捂,服務(wù)端在沒有接收到請(qǐng)求數(shù)據(jù)的情況下是不可能發(fā)送響應(yīng)的垦垂。
請(qǐng)求數(shù)據(jù):請(qǐng)求訪問某臺(tái)HTTP服務(wù)器上的index.html資源
1.GET 請(qǐng)求訪問服務(wù)器的類型,成為方法(method)
2.隨后的/index.html 指定了訪問的資源
3.HTTP/1.1 指明了客戶端使用的HTTP協(xié)議版本
響應(yīng)數(shù)據(jù)一般是由協(xié)議版本牙瓢、狀態(tài)碼劫拗、狀態(tài)的原因短語、響應(yīng)首部字段矾克、以及實(shí)體內(nèi)容組成
HTTP協(xié)議是一種無狀態(tài)協(xié)議页慷,協(xié)議不會(huì)對(duì)請(qǐng)求數(shù)據(jù)及響應(yīng)數(shù)據(jù)進(jìn)行狀態(tài)保存以及持久化.
告知服務(wù)器意圖的HTTP方法
Get 獲取資源 (QUERY)
請(qǐng)求訪問已被URI識(shí)別的資源。指定的資源經(jīng)過服務(wù)器的解析處理返回響應(yīng)內(nèi)容.
Post 修改資源(MODIFY)
類似于數(shù)據(jù)庫操作中的修改操作
PUT(ADD)
類似于數(shù)據(jù)庫操作中的增加操作
HEAD 獲取報(bào)文首部
HEAD方法和GET方法一樣,不過HEAD方法僅獲取報(bào)文首部酒繁,而不返回報(bào)文的主體內(nèi)容滓彰。主要用于確認(rèn)URI的有效性及資源的更新日期等.
DELETE 刪除操作
類似于數(shù)據(jù)庫的DELETE刪除操作。
OPTIONS 詢問支持的方法
OPTIONS 方法用來查詢針對(duì)請(qǐng)求的URI指定的資源支持的方法
TRACE 追蹤
TRACE 方法可以讓web服務(wù)器將之前的請(qǐng)求通訊環(huán) 告知給 客戶端.發(fā)送請(qǐng)求時(shí)欲逃,在Max-Forward 首部中填入數(shù)值,沒經(jīng)過一個(gè)服務(wù)器端就將數(shù)字減1饼暑,當(dāng)該數(shù)字剛好減到0時(shí)稳析,就停止傳輸,最后接收到該請(qǐng)求的服務(wù)器返回狀態(tài)嗎200作為響應(yīng)弓叛。
客戶端通過trace方法可以知道請(qǐng)求是如何被加工修改(篡改)的彰居,
CONNECT 要求用隧道協(xié)議連接代理
CONNECT要求在與代理通訊服務(wù)器通訊時(shí)建立隧道,實(shí)現(xiàn)用隧道協(xié)議進(jìn)行TCP通訊撰筷。主要使用(SSL(Security Socket layer 安全套接層)和TLS(Transport layer Security 傳輸層安全))協(xié)議對(duì)通訊內(nèi)容進(jìn)行加密后經(jīng)過網(wǎng)絡(luò)隧道傳輸.
CONNECT 方法的格式如下:
CONNECT 代理服務(wù)器名:端口號(hào) http版本
HTTP方法一覽
其中LINK及UNLINE 在HTTP/1.1版本上已不再支持陈惰。
建立持久連接節(jié)省通訊量
在HTTP初始版本中,沒建立一次HTTP通訊后就要斷開一次HTTP連接,
以當(dāng)年的情形上看毕籽,因?yàn)閭鬏數(shù)膬?nèi)容基本上是內(nèi)容容量較小的文本抬闯,因此在當(dāng)時(shí)上看來并沒什么問題,但是隨著互聯(lián)網(wǎng)的發(fā)展关筒,一個(gè)頁面經(jīng)常包含大量的多媒體信息溶握,在每次請(qǐng)求信息時(shí),會(huì)造成無謂的請(qǐng)求連接與斷開蒸播,增加通訊的開銷.