天天看點

《圖解HTTP》學習筆記(五)-與HTTP協作的Web伺服器

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

一台Web伺服器可搭建多個獨立域名的Web網站,也可以作為通信路徑上的中轉伺服器提升傳輸效率。即使實體層面隻有一台伺服器,但隻要使用虛拟主機的功能,則可以聯想已具有多台伺服器。另外,在網際網路上,域名通過DNS服務映射到IP位址(域名解析)之後通路目标網站。

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

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

HTTP通信時,除了用戶端和伺服器以外,還有一些用于通信資料轉發的應用程式,例如代理、網關、隧道,可以配合伺服器工作。

1)代理

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

使用代理伺服器的理由有:利用緩存技術(稍後講解)減少網絡帶寬的流量,組織内部針對特定網站的通路控制,以擷取通路日志為主要目的,等等。

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

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

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

2)網關

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

網關的工作和代理相似,隻是網關能使通信線路上的伺服器提供非HTTP協定服務。利用網關可以提高通信的安全性,因為可以在用戶端和網關之間的通信線路上加密以保證連接配接的安全。

3)隧道

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

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

3、儲存資源的緩存

緩存是指代理伺服器或用戶端本地磁盤内儲存的資源副本。

利用緩存可以減少對源伺服器的通路,節省了通信流量和通信時間。緩存伺服器是代理伺服器的一種,并歸類在緩存代理類型中。

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

緩存伺服器有緩存,但不能保證每次都會傳回對同資源的請求,是以這關系到被緩存資源的有效性問題。即使存在緩存,也會因為用戶端的要求、緩存的有效期等因素,重新向源伺服器确認資源的有效性。若判斷緩存失效,緩存伺服器會再次從源伺服器上擷取“新”資源。

緩存不僅可以存在于緩存伺服器内,還可以存在用戶端浏覽器中。浏覽器緩存如果有效,就不必再向伺服器請求相同的資源了,可以直接從本地磁盤内讀取。

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

繼續閱讀