1. 程式人生 > >HTTP圖解讀書筆記(第五章 與HTTP協作的web伺服器)

HTTP圖解讀書筆記(第五章 與HTTP協作的web伺服器)

一、單臺虛擬主機提供多個域名

 HTTP/1.1 規範允許一臺 HTTP 伺服器搭建多個 Web 站點。這是因為利用了虛擬主機(Virtual Host,又稱虛擬伺服器)的功
能。

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

如果一臺伺服器內託管了 www.tricorder.jp 和 www.hackr.jp 這兩個域名,通過DNS解析到同一個IP地址,所有當收到請求時就要弄清楚究竟要訪問哪個域名,

在相同的 IP 地址下,由於虛擬主機可以寄存多個不同主機名和域名的 Web 網站,因此在傳送請求時必須在Host首部完整指定主機名和域名的URL。

二、通訊資料轉發程式:代理、閘道器、隧道

HTTP 通訊時,除客戶端和伺服器以外,還有一些用於通訊資料轉發的應用程式,例如代理、閘道器和隧道。它們可以配合伺服器工作。

這些應用程式和伺服器可以將請求轉發給通訊線路上的下一站伺服器,並且能接收從那臺伺服器傳送的響應再轉發給客戶端。 

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

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

隧道:隧道是在相隔甚遠的客戶端和伺服器兩者之間進行中轉,並保持雙方通訊連線的應用程式。

代理

源伺服器:持有資源實體的伺服器。

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

在 HTTP 通訊過程中,可級聯多臺代理伺服器。請求和響應的轉發會經過數臺類似鎖鏈一樣連線起來的代理伺服器。轉發時,需要附加Via 首部欄位以標記出經過的主機資訊。

使用代理的理由:利用快取技術減少網路頻寬的流量,組織內部針對特定網站的訪問控制,以獲取訪問日誌為主要
目的,等等

代理分類:

  • 快取代理

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

  • 透明代理

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

閘道器

利用閘道器可以將HTTP請求轉化成其他協議通訊

使用閘道器的好處:提高通訊安全性,因為可以在客戶端與閘道器之間的通訊線路上進行加密,比如閘道器可以連線資料庫,使用sql語句查詢資料庫

隧道

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

 三、儲存資源的快取

 快取是指代理伺服器或客戶端本地磁碟內儲存的資源副本。利用快取可減少對源伺服器的訪問,因此也就節省了通訊流量和通訊時間。

快取的有效期限

客戶端快取

快取不僅可以存在於快取伺服器內,也可以存在客戶端瀏覽器內。瀏覽器快取如果有效,就不必向伺服器請求相同資源了,可以直接從本地磁碟讀取。當快取過期會向源伺服器確認資源的有效性。若判斷失效,瀏覽器會重新向伺服器請求新資源。