菜鳥面試必知的 http 知識(shí)(六)—— web的結(jié)構(gòu)組件

我們通常認(rèn)為網(wǎng)絡(luò)連接直接發(fā)生在客戶端和服務(wù)器之間。但實(shí)際上網(wǎng)絡(luò)請(qǐng)求從客戶端發(fā)出后,會(huì)經(jīng)過層層關(guān)卡到達(dá)服務(wù)器。服務(wù)器收到請(qǐng)求后,返回的響應(yīng)依舊會(huì)經(jīng)過層層關(guān)卡返回給客戶端。本篇文章介紹了網(wǎng)絡(luò)請(qǐng)求和響應(yīng)會(huì)經(jīng)過哪些關(guān)卡,以及這些關(guān)卡的作用分別是什么?

下面是本文的提綱:
  1. 代理
    位于客戶端和服務(wù)器之間的 HTTP 中間實(shí)體

  2. 緩存
    HTTP 的倉(cāng)庫(kù),使常用頁(yè)面的副本可以保存在離客戶端更近的地方

  3. 網(wǎng)關(guān)
    連接其他應(yīng)用程序的特殊 Web 服務(wù)器

  4. 隧道
    對(duì) HTTP 通信報(bào)文進(jìn)行盲轉(zhuǎn)發(fā)的特殊代理

  5. Agent 代理
    發(fā)起自動(dòng) HTTP 請(qǐng)求的半智能 Web 客戶端


1 - 代理

代理位于客戶端和服務(wù)器之間,接受所有客戶端的HTTP請(qǐng)求,并將這些請(qǐng)求轉(zhuǎn)發(fā)給服務(wù)器。對(duì)于用戶來說,這些應(yīng)用程序就是一個(gè)代理,代表用戶訪問服務(wù)器

web結(jié)構(gòu)組件——代理
1.1 代理服務(wù)器的部署
出口代理和訪問(入口)代理
  • a. 出口代理
    可以將代理固定在本地網(wǎng)絡(luò)的出口點(diǎn),以便控制本地網(wǎng)絡(luò)與大型因特網(wǎng)之間的流量。可以在公司網(wǎng)絡(luò)中使用代理,提供針對(duì)公司外部惡意黑客的防火墻保護(hù)。

  • b. 訪問(入口)代理
    代理常被放在ISP(Internet Service Provider)訪問點(diǎn)上,用以處理來自客戶的聚合請(qǐng)求。ISP使用緩存代理來存儲(chǔ)常用文檔的副本,以提高用戶的下載速度,降低因特網(wǎng)帶寬耗費(fèi)。

反向代理和網(wǎng)絡(luò)交換代理
  • c. 反向代理
    外部所有的請(qǐng)求都會(huì)發(fā)送給代理,代理轉(zhuǎn)發(fā)給某臺(tái)服務(wù)器。在這里,代理可以進(jìn)行負(fù)載均衡,把請(qǐng)求分配給空閑或者處理能力強(qiáng)的機(jī)器,也可以進(jìn)行統(tǒng)一安全性檢查。

  • d. 網(wǎng)絡(luò)交換代理
    通過緩存來減輕因特網(wǎng)節(jié)點(diǎn)的擁塞,并對(duì)流量進(jìn)行監(jiān)視。

2 - 緩存

Web緩存(Web cache)或代理緩存(proxy cache)是一種特殊HTTP代理服務(wù)器,可以將經(jīng)過代理傳送的常用文檔復(fù)制保存下來。下一個(gè)請(qǐng)求同一文檔的客戶端就可以享受緩存的私有副本所提供的服務(wù)了。這樣做的目的是因?yàn)榭蛻舳藦母浇木彺嫦螺d文檔會(huì)比從遠(yuǎn)程Web服務(wù)器下載快得多。

web結(jié)構(gòu)組件——緩存
2.1 緩存處理請(qǐng)求的過程

Web緩存的基本工作原理大多很簡(jiǎn)單,對(duì)一條HTTP GET報(bào)文的基本緩存處理過程包括以下7個(gè)步驟(如圖所所示):

緩存命中
  1. 接收——緩存從網(wǎng)絡(luò)中讀取抵達(dá)的請(qǐng)求報(bào)文
  2. 解析——緩存對(duì)報(bào)文進(jìn)行解析,提取出URL和各種首部
  3. 査詢——緩存査看是否有本地副本可用,如果沒有,就獲取一份副本,并將其保存在本地
  4. 新鮮度檢測(cè)——緩存査看已緩存副本是否足夠新鮮,如果不是,就詢問服務(wù)器是否有任何更新
  5. 創(chuàng)建響應(yīng)——緩存會(huì)用新的首部和已緩存的主體來構(gòu)建一條響應(yīng)報(bào)文
  6. 發(fā)送——緩存通過網(wǎng)絡(luò)將響應(yīng)發(fā)回給客戶端
  7. 日志——緩存可選地創(chuàng)建一個(gè)日志文件條目來描述這個(gè)事務(wù)

3 - 網(wǎng)關(guān)

網(wǎng)關(guān)(gateway)是一種特殊的服務(wù)器,作為其他服務(wù)器的中間實(shí)體使用。通常用于將HTTP流量轉(zhuǎn)換為其他的協(xié)議。網(wǎng)關(guān)接受請(qǐng)求時(shí)就好像自己是資源端服務(wù)器一樣。客戶端可能并不知道自己正在與一個(gè)網(wǎng)關(guān)進(jìn)行通信。
例如,一個(gè)HTTP/FTP網(wǎng)關(guān)會(huì)通過HTTP請(qǐng)求接受對(duì)FTP URI的請(qǐng)求,但通過FTP協(xié)議來獲取文檔。得到的文檔會(huì)被封裝成一條HTTP報(bào)文,發(fā)送給客戶端。

web結(jié)構(gòu)組件——網(wǎng)關(guān)

網(wǎng)關(guān)和代理的區(qū)別是,代理連接的是兩個(gè)或多個(gè)使用相同協(xié)議的應(yīng)用程序,而網(wǎng)關(guān)連接的則是兩個(gè)或多個(gè)使用不同協(xié)議的端點(diǎn)。

3.1 網(wǎng)關(guān)的3個(gè)實(shí)例

下圖顯示了三個(gè)網(wǎng)關(guān)的示例:


三個(gè)網(wǎng)關(guān)的示例
  • 在圖a中,網(wǎng)關(guān)收到了對(duì)FTP URL的HTTP請(qǐng)求。然后網(wǎng)關(guān)打開FTP連接,并向FTP服務(wù)器發(fā)布適當(dāng)?shù)拿?。然后將文檔和正確的HTTP首部通過HTTP回送;
  • 在圖b中,網(wǎng)關(guān)通過SSL收到了一條加密的Web請(qǐng)求,網(wǎng)關(guān)會(huì)對(duì)請(qǐng)求進(jìn)行解密,然后向目標(biāo)服務(wù)器轉(zhuǎn)發(fā)一條普通的HTTP請(qǐng)求??梢詫⑦@些安全加速器直接放在(通常處于同一場(chǎng)所的)Web服務(wù)器前面,以便為原始服務(wù)器提供髙性能的加密機(jī)制;
  • 在圖c中,網(wǎng)關(guān)通過應(yīng)用程序服務(wù)器網(wǎng)關(guān)API,將HTTP客戶端連接到服務(wù)器端的應(yīng)用程序上去。在網(wǎng)上的電子商店購(gòu)物,査看天氣預(yù)報(bào),或者獲取股票報(bào)價(jià)時(shí),訪問的就是應(yīng)用程序服務(wù)器網(wǎng)關(guān)。這也是網(wǎng)關(guān)最常見的用途,客戶端無須關(guān)注服務(wù)器實(shí)現(xiàn),只需要按照API或CGI發(fā)送規(guī)定格式的內(nèi)容,就可以獲取相應(yīng)的內(nèi)容。

4 - 隧道

隧道(tunnel)是建立起來之后,就會(huì)在兩條連接之間對(duì)原始數(shù)據(jù)進(jìn)行盲轉(zhuǎn)發(fā)的 HTTP 應(yīng)用程序。HTTP 隧道通常用來在一條或多條 HTTP 連接上轉(zhuǎn)發(fā)非 HTTP 數(shù)據(jù),轉(zhuǎn)發(fā)時(shí)不會(huì)窺探數(shù)據(jù)。HTTP 隧道的一種常見用途是通過 HTTP 連接承載加密的安全套接字層(SSL, Secure Sockets Layer)流量,這樣 SSL 流量就可以穿過只允許 Web 流量通過的防火墻了
如圖所示,HTTP/SSL 隧道收到一條 HTTP 請(qǐng)求,要求建立一條到目的地址和端口的輸出連接,然后在 HTTP 信道上通過隧道傳輸加密的 SSL 流量,這樣就可以將其盲轉(zhuǎn)發(fā)到目的服務(wù)器上去了。

web結(jié)構(gòu)組件——隧道

5 - Agent代理

用戶 Agent 代理(或者簡(jiǎn)稱為 Agent 代理)是代表用戶發(fā)起 HTTP 請(qǐng)求的客戶端程序。所有發(fā)布 Web 請(qǐng)求的應(yīng)用程序都是 HTTP Agent 代理。到目前為止,我們只提到過一種 HTTP Agent 代理:Web 瀏覽器,但用戶 Agent 代理還有很多其他類型,比如網(wǎng)絡(luò)爬蟲。
爬蟲屬于Web機(jī)器人,而得到最廣泛使用的Web機(jī)器人都是因特網(wǎng)搜索引擎。因特網(wǎng)搜索引擎可以幫助用戶找到世界范圍內(nèi)涉及任意主題的文檔。

web結(jié)構(gòu)組件——Agent代理


大家好,我是彬彬醬,目前在騰訊從事Web后端開發(fā)。
菜鳥必知的 http 知識(shí)專題整理了關(guān)于網(wǎng)絡(luò)的基礎(chǔ)知識(shí),適合大家進(jìn)行入門級(jí)學(xué)習(xí),這個(gè)專題現(xiàn)包含下列文章:
菜鳥必知的 http 知識(shí)(一)—— TCP 握手協(xié)議
菜鳥必知的 http 知識(shí)(二)—— HTTP 協(xié)議特點(diǎn)
菜鳥必知的 http 知識(shí)(三)—— 請(qǐng)求和響應(yīng)報(bào)文
菜鳥必知的 http 知識(shí)(四)—— HTTP 和 HTTPS
菜鳥必知的 http 知識(shí)(五)—— 新技術(shù)的出現(xiàn)
菜鳥必知的 http 知識(shí)(六)—— web的結(jié)構(gòu)組件


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容