摘要:瀏覽器負(fù)責(zé)發(fā)送請(qǐng)求,并進(jìn)一步解析返回的信息,以向用戶提供明確的響應(yīng)。所以是依賴于面向連接進(jìn)行消息傳遞,但是連接不是必須的。客戶端和服務(wù)器連接要保存一段時(shí)間支持代理連接還提供了與身份認(rèn)證狀態(tài)管理和緩存等機(jī)制相關(guān)的請(qǐng)求頭和響應(yīng)頭。
一、概述
1、什么是HTTP
HTTP是一種可以獲取HTML這樣的網(wǎng)絡(luò)資源的一種通訊協(xié)議protocol。是在WEB上進(jìn)行數(shù)據(jù)交換的基礎(chǔ),是一種客戶端--服務(wù)器協(xié)議。HTTP是一種可擴(kuò)展的應(yīng)用層協(xié)議,通過(guò)TCP或者TLS-加密的TCP連接來(lái)發(fā)送。
2、基于HTTP的組件系統(tǒng)
HTTP是一種client-server協(xié)議:請(qǐng)求通過(guò)一個(gè)實(shí)體被發(fā)出,實(shí)體也就是用戶代理(大部分指的是瀏覽器,也可以是一個(gè)爬取網(wǎng)頁(yè)生成維護(hù)機(jī)器索引的機(jī)器爬蟲(chóng))
如圖:client--->proxy---->protoxy--->server
client<---proxy<---protoxy<---server
在用戶發(fā)起服務(wù)器請(qǐng)求時(shí),會(huì)被服務(wù)器處理,并返回一個(gè)消息---response
實(shí)際上。在一個(gè)瀏覽器和處理請(qǐng)求的服務(wù)器間,還有路由器、調(diào)制解調(diào)器。由于web開(kāi)發(fā)基于web的層次設(shè)計(jì)。那些在網(wǎng)絡(luò)層和傳輸層的細(xì)節(jié)都被隱藏了。HTTP位于最上冊(cè)的應(yīng)用層。雖然底層很重要,但對(duì)前端來(lái)說(shuō),底層的大多數(shù)和HTTP無(wú)關(guān)
3、客戶端:
user-agent 就是能夠?yàn)橛脩舭l(fā)起的為的工具。瀏覽器總是作為發(fā)起一個(gè)請(qǐng)求的實(shí)體,永遠(yuǎn)不是服務(wù)器。要展現(xiàn)一個(gè)網(wǎng)頁(yè),瀏覽器首先發(fā)送一個(gè)請(qǐng)求來(lái)獲取頁(yè)面的HTML文檔,再解析文檔中的資源信息發(fā)送其他請(qǐng)求,獲取可執(zhí)行腳本或CSS樣式來(lái)進(jìn)行頁(yè)面布局渲染,以及一些其它頁(yè)面資源(如圖片和視頻等)。然后,瀏覽器將這些資源整合到一起,展現(xiàn)出一個(gè)完整的文檔,也就是網(wǎng)頁(yè)。瀏覽器執(zhí)行的腳本可以在之后的階段獲取更多資源,并相應(yīng)地更新網(wǎng)頁(yè)。
瀏覽器負(fù)責(zé)發(fā)送HTTP請(qǐng)求,并進(jìn)一步解析HTTP返回的信息,以向用戶提供明確的響應(yīng)。
4、Web服務(wù)端
在客戶端通信過(guò)程的另一端,是有Web Server來(lái)服務(wù)并提供客戶端所請(qǐng)求的文檔。
5、代理(Proxies)
在瀏覽器和服務(wù)器之間,很多設(shè)備轉(zhuǎn)發(fā)了HTTP消息,由于Web棧層次結(jié)構(gòu)的原因,T它們大多出現(xiàn)在傳輸層、網(wǎng)絡(luò)層和物理層上,對(duì)于HTTP應(yīng)用層而言就是透明的,還有一部分是表現(xiàn)在應(yīng)用層上的,被稱為代理(Proxies).代理既可以表現(xiàn)的透明,也可以表現(xiàn)的不透明(“改變請(qǐng)求”不會(huì)通過(guò)他們)。
代理的作用:緩存、過(guò)濾、家長(zhǎng)控制、負(fù)載均衡、認(rèn)證、日志記錄
二、HTTP的基本性質(zhì)
HTTP是簡(jiǎn)單的、可擴(kuò)展的、無(wú)狀態(tài)可會(huì)話的、連接。
注解:在互聯(lián)網(wǎng)中,最常用的傳輸層協(xié)議:TCP是可靠的、UDP不是。所以HTTP是依賴于面向連接TCP進(jìn)行消息傳遞,但是連接不是必須的。
HTTP/1.0為每個(gè)請(qǐng)求/響應(yīng)都打開(kāi)一個(gè)TCP連接,這就導(dǎo)致了2個(gè)缺點(diǎn):打開(kāi)一個(gè)TCP連接需要多次往返消息傳遞,因此速度慢,如果多個(gè)消息周期性發(fā)送時(shí),這樣就會(huì)變得更加高效:暖連接比冷連接更高效。
HTTP/1.1引入了流水線和持久連接:底層的TCP連接可以通過(guò)Connection頭部來(lái)被控制。HTTP/2.0則是通過(guò)在一個(gè)連接復(fù)用消息的方式來(lái)讓這個(gè)鏈接始終為暖連接
三、HTTP特性
緩存:服務(wù)器端告訴代理和客戶端哪些文檔需要緩存,緩存多久,而客戶端也可以命令中間的緩存代理來(lái)忽略存儲(chǔ)的文檔。
開(kāi)放同源限制:為防止網(wǎng)絡(luò)竊聽(tīng)和其他隱私的泄露,瀏覽器強(qiáng)制對(duì)Web網(wǎng)站做了分割限制,只有來(lái)源相同的網(wǎng)頁(yè)才可以獲取網(wǎng)站的全部信息
認(rèn)證:基本的認(rèn)證可以直接通過(guò)HTTP提供,使用Authenticate相似的頭部即可,或使用HTTP Cookies來(lái)設(shè)置指定的對(duì)話
代理和隧道:通常情況下,服務(wù)器/客戶端是處于內(nèi)網(wǎng)的,對(duì)外網(wǎng)是隱藏自己真實(shí)的IP的,因此HTTP請(qǐng)求就是要通過(guò)代理越過(guò)這個(gè)網(wǎng)絡(luò)屏障,但是并非所有的代理都是HTTP代理.
會(huì)話:使用HTTP Cookies允許你用一個(gè)服務(wù)器端的狀態(tài)發(fā)起請(qǐng)求,就創(chuàng)建了會(huì)話。
三、HTTP流---客戶端和服務(wù)器交互過(guò)程
打開(kāi)一個(gè)TCP連接---->發(fā)送一個(gè)HTTP報(bào)文--->讀取服務(wù)器端返回的報(bào)文信息--->關(guān)閉連接或?yàn)楹罄m(xù)的請(qǐng)求重用連接 HTTP流水線已被HTTP/2的幀替代
四、HTTP報(bào)文
1、有兩種HTTP報(bào)文類型:請(qǐng)求與回應(yīng)
請(qǐng)求:
回應(yīng):
HTTP/1.0與HTTP/1.1的區(qū)別
1、支持虛擬主機(jī)技術(shù),在一個(gè)WEB服務(wù)器上同時(shí)并存多個(gè)域名網(wǎng)站;
2、支持持久化連接:三次握手、四次揮手??蛻舳撕头?wù)器連接要保存一段時(shí)間Conection:Keep-alive
3、支持代理連接
4、HTTP 1.1還提供了與身份認(rèn)證、狀態(tài)管理和Cache緩存等機(jī)制相關(guān)的請(qǐng)求頭和響應(yīng)頭。
用戶在瀏覽器中輸入www.baidu.com直到看到頁(yè)面之間發(fā)生了什么?
①操作系統(tǒng)訪問(wèn)DNS服務(wù)器,把域名轉(zhuǎn)換為IP地址
②瀏覽器發(fā)起HTTP請(qǐng)求
③找到指定資源,可能訪問(wèn)數(shù)據(jù)庫(kù),構(gòu)建并返回HTTP響應(yīng)消息
④瀏覽器接收并解析消息
⑤瀏覽器緩存接收響應(yīng)的內(nèi)容,解析并渲染相應(yīng)內(nèi)容
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/52940.html
摘要:瀏覽器負(fù)責(zé)發(fā)送請(qǐng)求,并進(jìn)一步解析返回的信息,以向用戶提供明確的響應(yīng)。所以是依賴于面向連接進(jìn)行消息傳遞,但是連接不是必須的。客戶端和服務(wù)器連接要保存一段時(shí)間支持代理連接還提供了與身份認(rèn)證狀態(tài)管理和緩存等機(jī)制相關(guān)的請(qǐng)求頭和響應(yīng)頭。 一、概述 1、什么是HTTP HTTP是一種可以獲取HTML這樣的網(wǎng)絡(luò)資源的一種通訊協(xié)議protocol。是在WEB上進(jìn)行數(shù)據(jù)交換的基礎(chǔ),是一種客戶端--服務(wù)器...
摘要:瀏覽器負(fù)責(zé)發(fā)送請(qǐng)求,并進(jìn)一步解析返回的信息,以向用戶提供明確的響應(yīng)。所以是依賴于面向連接進(jìn)行消息傳遞,但是連接不是必須的??蛻舳撕头?wù)器連接要保存一段時(shí)間支持代理連接還提供了與身份認(rèn)證狀態(tài)管理和緩存等機(jī)制相關(guān)的請(qǐng)求頭和響應(yīng)頭。 一、概述 1、什么是HTTP HTTP是一種可以獲取HTML這樣的網(wǎng)絡(luò)資源的一種通訊協(xié)議protocol。是在WEB上進(jìn)行數(shù)據(jù)交換的基礎(chǔ),是一種客戶端--服務(wù)器...
近來(lái)正在回顧PHP的文件上傳。在此做個(gè)記錄。 文件上傳作業(yè) table{border:0;cellspacing: 0;cellpadding:0} table tr td{text-align: center;height: 25px;line-height: 25px;width: 200px; border: 1px sol...
閱讀 1887·2021-09-28 09:36
閱讀 2440·2021-09-08 09:35
閱讀 3075·2019-08-30 15:53
閱讀 1563·2019-08-30 14:08
閱讀 676·2019-08-29 18:40
閱讀 2855·2019-08-29 13:57
閱讀 2715·2019-08-29 13:55
閱讀 693·2019-08-26 13:45