圖解HTTP協(xié)議讀書筆記五

圖解HTTP協(xié)議讀書筆記五

與http協(xié)議協(xié)作的web服務器

1.1 用單臺虛擬主機實現(xiàn)多個域名

HTTP/1.1 規(guī)范允許一臺HTTP服務器搭建多個Web站點。比如,提供Web托管服務的提供商,

可以用一臺服務器為多位客戶服務,也可以以每位客戶持有的域名運行各自不同的網(wǎng)站。

這是因為利用了虛擬主機(Virtual Host ,又稱虛擬服務器)的功能。

即使物理層面只有一臺服務器,但只要使用虛擬主機的功能,則可以假想已具有多臺服務器。


客戶端使用HTTP協(xié)議訪問服務器時,會經(jīng)常采用類似www.xxxx.com這樣的主機名和域名

在互聯(lián)網(wǎng)上,域名通過DNS服務映射到IP地址(域名解析)之后訪問目標網(wǎng)站。可見,當請求發(fā)送服務器時,已經(jīng)是以IP地址形式訪問了。

所以,如果一臺服務器內托管了? www.xxx.com和www.yyy.com這兩個域名,當收到請求時就需要弄清楚究竟要訪問哪個網(wǎng)站。

注:若www.xxx.com 和www.yyy.com 同時部署在同一個服務器上(相同的IP地址),使用DNS服務解析域名后,兩者的訪問IP地址會相同。

在相同的IP地址下,由于虛擬主機可以寄存多個不同主機名和域名的Web網(wǎng)站,因此在發(fā)送HTTP請求時,必須在Host首部內玩政指定主機名或域名的URI



1.2 通信數(shù)據(jù)轉發(fā)程序:代理、網(wǎng)關、隧道

HTTP通信時,除客戶端和服務器以外,還有一些用于通信數(shù)據(jù)轉發(fā)的應用程序,例如代理、網(wǎng)關和隧道。它們可以配合服務器工作。

這些應用程序和服務器可以將請求轉發(fā)給同喜線路上的下一站服務器,并且能接收從那臺服務器發(fā)送的響應再轉發(fā)給客戶端。

代理:

代理是一種有轉發(fā)的應用程序,它扮演了位于服務器和客戶端“中間人”的角色,接收由客戶端發(fā)送的請求并轉發(fā)給服務器,同時也接收服務器返回的響應并轉發(fā)給客戶端。

網(wǎng)關:

網(wǎng)關是轉發(fā)其他服務器通信數(shù)據(jù)的服務器,接收從客戶端發(fā)送來的請求時,它就像自己擁有資源的源服務器一樣對請求進行處理。有時客戶端可能都不會察覺,自己的通信目標是一個網(wǎng)關。

隧道:

隧道是在相隔甚遠的客戶端和服務器兩者之間進行中轉,并保持雙方通信連接的應用程序。

1.2.1 代理

代理服務器的基本行為就是接收客戶端發(fā)送的請求后轉發(fā)其他服務器。代理不改變請求的URI,會直接發(fā)送給前方持有資源的目標服務器。

持有資源實體的服務器被稱為資源服務器。從源服務器返回的響應經(jīng)過代理服務器后再傳給客戶端。

在HTTP通信過程中,可以聯(lián)接多臺代理服務區(qū)。

請求和響應的轉發(fā)會經(jīng)過數(shù)臺類似鎖鏈一樣連接起來的代理服務器。

轉發(fā)時,需要附加Via首部字段以標記處經(jīng)過的主機信息。

圖示:


注:通過設置組織內部的代理服務器可做到針對特定URI訪問的控制。

使用代理服務器的理由有:利用緩存技術(后面詳解)減少網(wǎng)絡帶寬的流量,組織內部針對特定網(wǎng)站的訪問控制,以獲取訪問日志為主要目的,等等。

代理會有多種使用方法,按兩種基準分類。一種是是否使用緩存,另一種是是否會修改報文。

緩存代理:

代理轉發(fā)會預先將資源的副本(緩存)保存在代理服務器上。

當代理再次接收到對相同資源的請求時,就可以不從源服務器那里獲取資源,而是將之前緩存的資源作為響應返回。

透明代理:

轉發(fā)請求或響應時,不對報文做任何加工的代理類型被稱為透明代理。反之,對報文內容進行加工的代理被稱為非透明代理。

1.2.2 網(wǎng)關

網(wǎng)關的工作機制和代理十分相似。而網(wǎng)關能使通信線路上的服務器提供非HTTP協(xié)議服務。

利用網(wǎng)關能提高通信的安全性,因為可以在客戶端與網(wǎng)關之間的通信線路上加密以確保連接的安全。

比如,網(wǎng)關可以連接數(shù)據(jù)庫,使用SQL語句查詢數(shù)據(jù)。

另外,在WEB購物網(wǎng)站上進行信用卡結算時,網(wǎng)關可以和信用卡結算系統(tǒng)聯(lián)動。


1.3 保存資源的緩存

緩存是指代理服務器或客戶端本地磁盤內保存的資源副本。利用緩存可減少對源服務器的訪問,因此也就節(jié)省了通信流量和通信時間。

緩存服務器是代理服務器的一種,并歸類在緩存代理類型中。

換句話說,當代理轉發(fā)從服務器返回的響應時,代理服務器將會保存一份資源的副本。

圖示:


緩存服務器的優(yōu)勢在于利用緩存可避免多次從源服務器轉發(fā)資源。因此客戶端可就近從緩存服務器上獲取資源,而資源服務器也不必多次處理相同的請求了。

1.3.1 緩存的有效期限

即便緩存服務器內有緩存,也不能保證每次都會返回對同資源的請求。因為這關系到被緩存資源的有效性問題。

當遇上源服務器上的資源更新時,如果還是使用不變的緩存,那就會演變成返回更新前的“舊”資源了。

即使存在緩存,也會因為客戶端的要求、緩存的有效期等因素,向源服務器確認資源的有效性。

若判斷緩存失效,緩存服務器將會再次從源服務器上獲取“新”資源。

1.3.2 客戶端發(fā)的緩存

緩存不僅可以存在于緩存服務器內,還可以存在客戶端瀏覽器中。以IE為例,把客戶端緩存稱為臨時網(wǎng)絡文件。

瀏覽器緩存如果有效,就不必再向服務器請求相同的資源了,可以直接從本地磁盤內讀取。

另外,和緩存服務器相同的一點是,當判定緩存過期后,會向源服務器確認資源的有效性。

若判斷瀏覽器緩存失效,瀏覽器會再次請求新資源。

原文地址

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容