天天看點

HTTP學習記錄(五)與HTTP協作的web伺服器第五章  與HTTP協作的web伺服器

第五章  與HTTP協作的web伺服器

上一篇:HTTP學習記錄(四) 傳回結果的HTTP狀态碼

下一篇:HTTP學習記錄(六-1)HTTP首部

1、用單台虛拟主機實作多個域名

HTTP/1.1規範允許一台HTTP伺服器搭建多個web站點。比如,提供微網誌托管服務的供應商,可以用一台伺服器為多位客戶服務,也可以以每位客戶持有的域名運作各自不同的網站。這是因為利用了虛拟主機(或稱虛拟伺服器)的功能。幾時實體層面隻有一台伺服器,但隻要使用虛拟主機的功能,則可以假想已具有多台伺服器。

在網際網路上,域名通過DNS服務映射到IP位址(域名解析之後)通路目标網站。可見,當請求發送到伺服器時,已經是IP位址形式通路了。是以,如果一台伺服器内托管了www.tricorder和www.hackr.jp這兩個域名,當收到請求時就需要弄清楚究竟要通路哪個域名。

HTTP學習記錄(五)與HTTP協作的web伺服器第五章  與HTTP協作的web伺服器

在相同的IP位址下,由于虛拟主機可以寄存多個不同主機名和域名的web網站,是以,在發送HTTP請求時,必須在host首部内完整指定主機名或域名的URI。

2、通信資料轉發程式:代理、網關、隧道

HTTP通信時,除用戶端和伺服器以外,還有一些用于通信資料轉發的應用程式,例如代理、網關和隧道。他們可以配合服務工作。這些應用程式和伺服器可以将請求轉發給通信線路上的下一站伺服器,并且能接收從伺服器發送的響應在轉發給用戶端。

代理

代理是一種有轉發功能的應用程式,它扮演了位于伺服器和用戶端“中間人”的角色,接收由用戶端發送的請求并轉發給伺服器,同時也接受伺服器傳回的響應并轉發給用戶端。

網關

網關是轉發其他伺服器通信資料的伺服器,接收從用戶端發送來的請求時,它就像自己擁有資源的源伺服器一樣對請求進行處理。有時用戶端可能都不會察覺,自己的通信目标是一個網關。

隧道

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

(1)代理

HTTP學習記錄(五)與HTTP協作的web伺服器第五章  與HTTP協作的web伺服器

代理伺服器的基本行為就是接收用戶端發送的請求後轉發給其他伺服器。代理不改變請求URI,會直接發送給前方持有資源的目标伺服器。

持有資源實體的伺服器被稱為源伺服器。從源伺服器傳回的響應經過代理伺服器後再傳給用戶端。

HTTP學習記錄(五)與HTTP協作的web伺服器第五章  與HTTP協作的web伺服器

在HTTP通信過程中,可級聯多台代理伺服器。請求和響應的轉發會經過數台類似鎖鍊一樣連接配接起來的代理伺服器。轉發時,需要附加Via首部字段以标記出經過的主機資訊。

HTTP學習記錄(五)與HTTP協作的web伺服器第五章  與HTTP協作的web伺服器

使用代理伺服器的理由:利用緩存技術減少網絡寬帶的流量,組織内部針對特定網站的通路控制,以擷取通路日志為主要目的等等。代理有多種使用方法,按兩種基準分類。一種是是否使用緩存,一種是是否會修改封包。

緩存代理

代理轉發響應時,緩存代理會預先将資源的副本儲存到代理伺服器上。當代理再次接收到對相同資源的請求時,就可以不從源伺服器那裡擷取資源,而是将之前緩存的資源作為響應傳回。

透明代理

轉發請求或響應時,不對封包做任何加工的代理類型被稱為透明代理。反之,對封包内容進行加工的代理被稱為非透明代理。

(2)網關

HTTP學習記錄(五)與HTTP協作的web伺服器第五章  與HTTP協作的web伺服器

網關的工作機制和代理十分相似。而網關能使通信線路上的伺服器提供非HTTP協定服務。利用網關能提高通信的安全性,因為可以在用戶端與網關之間的通信線路上加密以確定連接配接的安全。比如,網關可以連接配接資料庫,使用SQL語言查詢資料。另外,在web購物網站上進行信用卡結算時,網關可以和信用卡結算系統關聯。

(3)隧道

隧道可按要求建立起一條與其他伺服器的通信線路,屆時使用SSL等加密手段進行通信。隧道的目的是確定用戶端能與伺服器進行安全的通信。隧道本身不會去解析HTTP請求。就就是說,請求保持原樣中轉給之後的伺服器。隧道會在通信雙方斷開連接配接時結束。

HTTP學習記錄(五)與HTTP協作的web伺服器第五章  與HTTP協作的web伺服器

3、儲存資源的緩存

緩存是指代理伺服器或者用戶端本地磁盤内儲存的資源副本。利用緩存可減少對源伺服器的通路,是以也就節省了通信流量和通信時間。緩存伺服器是代理伺服器的一種,并歸類在緩存代理類型中。換句話說,當代理轉發從伺服器傳回的響應時,代理伺服器将會儲存一份資源的副本。

HTTP學習記錄(五)與HTTP協作的web伺服器第五章  與HTTP協作的web伺服器

緩存伺服器的優勢在于利用緩存可避免多次從源伺服器轉發資源。是以,用戶端可就近從緩存伺服器上擷取資源,而源伺服器也不必多次處理相同的請求了。

(1)緩存的有限期限

即便緩存伺服器内有緩存,也不能保證每次都會傳回對同資源的請求。因為這關系到被緩存的有效性的問題。當遇上源伺服器上的資源更新時,如果還是使用不變的緩存,那就會演變成傳回更新前的“舊”資源了。即使存在緩存也會因為用戶端的要求、緩存的有效期等因素,向源伺服器确認資源的有效性。若判斷緩存失敗,緩存伺服器将會再次從源伺服器上擷取“新”資源。

HTTP學習記錄(五)與HTTP協作的web伺服器第五章  與HTTP協作的web伺服器

(2)用戶端的緩存

緩存不僅可以存在緩存伺服器内,還可以存在用戶端浏覽器中。以IE浏覽器為例,把用戶端緩存稱為臨時網絡檔案。浏覽器緩存如果有效,就不必再向伺服器請求相同的資源了,可以直接從本地磁盤内讀取。

另外,和緩存伺服器相同的一點是,當判定緩存過期後,會向源伺服器确認資源的有效性。若判斷浏覽器緩存失敗,浏覽器會再次請求新資源。

HTTP之前出現的協定

FTP協定:傳輸檔案時使用的協定。其曆史久遠,可追溯到1973年前後,比tcp/ip協定族的出現還要早。雖然在1995年被HTTP的流量(traffic)超越,但時至今日,仍被廣泛沿用。

NNTP協定:用于netNews電子會議室内傳送消息的協定。在1986年前後出現,屬于比較古老的一類協定。現在web交換資訊已成主流,是以該協定已經不怎麼使用了。

Archie協定:搜尋anonymous FTP公開的檔案資訊的協定。1990年前後出現,現在已不常使用。

WAIS:以關鍵詞檢索多個資料庫使用的協定。1991年前後出現,由于現在已被HTTP協定替代,已不怎麼使用了。

Gopher:查找與網際網路連接配接的計算機内資訊的協定。1991年前後出現,由于現在已被HTTP協定替代,已不怎麼使用了