1. 程式人生 > >圖解HTTP學習記錄(五)

圖解HTTP學習記錄(五)

與HTTP協作的Web伺服器

用單臺虛擬機器實現多個域名

HTTP/1.1 規範允許一臺 HTTP 伺服器搭建多個 Web 站點。即使物理層面只有一臺伺服器,但只要使用虛擬主機的功能,則可以假想已具有多臺伺服器。

在網際網路上,域名通過 DNS 服務對映到 IP 地址(域名解析)之後訪問目標網站。可見,當請求傳送到服務
器時,已經是以 IP 地址形式訪問了。

所以,如果一臺伺服器內託管了 www.tricorder.jp 和 www.hackr.jp 這兩個域名,當收到請求時就需要弄清楚
究竟要訪問哪個域名。

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

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

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

  • 代理

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

  • 閘道器

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

  • 隧道

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


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


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

使用代理伺服器的理由有:利用快取技術(稍後講解)減少網路頻寬的流量,組織內部針對特定網站的訪問
控制,以獲取訪問日誌為主要目的,等等。
代理有多種使用方法,按兩種基準分類。一種是是否使用快取,另一種是是否會修改報文。


  • 快取代理

代理轉發響應時,快取代理(Caching Proxy)會預先將資源的副本(快取)儲存在代理伺服器上。
當代理再次接收到對相同資源的請求時,就可以不從源伺服器那裡獲取資源,而是將之前快取的資源作為響
應返回。
  • 透明代理
    轉發請求或響應時,不對報文做任何加工的代理型別被稱為透明代理(Transparent Proxy)。反之,對報文
    內容進行加工的代理被稱為非透明代理。
  • 閘道器

    閘道器的工作機制和代理十分相似。而閘道器能使通訊線路上的伺服器提供非 HTTP 協議服務。
    利用閘道器能提高通訊的安全性,因為可以在客戶端與閘道器之間的通訊線路上加密以確保連線的安全。

    隧道

    隧道可按要求建立起一條與其他伺服器的通訊線路,屆時使用 SSL 等加密手段進行通訊。

    隧道的目的是確保
    客戶端能與伺服器進行安全的通訊。
    隧道本身不會去解析 HTTP 請求。也就是說,請求保持原樣中轉給之後的伺服器。隧道會在通訊雙方斷開連
    接時結束