與HTTP協作的Web服務器
用單臺虛擬主機實現多個域名
HTTP/1.1允許一臺HTTP服務搭建多個Web站點。比如提供Web託管(Web Hosting Service)的供應商、可以用一臺服務器爲多位客戶服務。也可以爲每位客戶持有的域名運行各自不同的網站。
即使物理層面只有一臺服務器,只要有虛擬主機的功能,則可以假象已具有多臺服務器。
一臺服務器託管了不同的域名,使用DNS服務解析域名後,兩者的訪問IP地址會相同。
因此在發送HTTP請求時,必須在Host首部內完整指定主機名或域名的URI.
通信數據轉發程序:代理、網關、隧道
HTTP通信時,除客戶端和服務器端,還有一些用於通信數據轉發的應用程序,如代理、網關、隧道,可配合服務器工作。
這些應用程序和服務器可將請求轉發給通信線路上的下一站服務器,並且能接受從那臺服務器發送的響應再轉發給客戶端。
代理
扮演位於服務器和客戶端“中間人”的角色,接受由客戶端發送的請求並轉發給服務器,同時也接受服務器返回的響應並轉發給客戶端。
代理服務器的基本行爲就是上述。代理不改變請求URI,直接發送給前方持有資源的目標服務器。反之亦同。
通信過程中,可級聯多臺代理服務器。請求和響應轉會經過數臺似鎖鏈一樣連接起來的代理服務器。轉發時,需要附加Via首部字段儀表及出經過的主機信息。
使用代理服務器的原因:利用緩存技術減少網絡帶寬的流量,組織內部針對特定網站的訪問控制,以獲取訪問日誌爲主要目的。。。。
代理使用方法有兩種基類:1.是否使用緩存 2.是否修改報文
緩存代理
代理轉發響應時,緩存代理(Caching Proxy)會預先將資源的副本(緩存)保存在代理服務器上。
當代理再次接受到對相同資源的請求時,就可以不從源服務器那裏獲取資源,直接將緩存的資源作爲響應返回。
透明代理
轉發請求或響應時,透明代理(Transparent Proxy)不對報文做任何加工。反之,對報文內容加工的則是非透明代理。
網關
網關是轉發其他服務器通信數據的服務器,接受從客戶端發送來的請求時,它就像自己擁有資源的源服務器一樣對請求處理。
利用網關可以提高通信的安全性,因爲可在客戶端與網關之間的通信線路上加密以確保連接的安全。如網關連接數據庫,使用SQL語句查詢。
隧道
隧道是在相隔甚遠的客戶端和服務器之間進行中轉,並保存雙方通信連接的應用程序。
隧道按要求建立一條與其他服務器的通信路線,使用了SSL(Secure Sockets Layer)等加密手段進行通信。目的是確保客戶端能與服務器進行安全的通信。
隧道本身不會解析HTTP。並在通信雙方斷開連接時結束。
保存資源的緩存
緩存是指代理服務器或客戶端本地磁盤內保存的資源副本。利用緩存可減少對源服務器的訪問,因此也就節省了通信流量和通信時間。
緩存服務器是代理服務器的一種。
緩存服務器的優勢在於利用緩存避免多次從源服務器轉發資源。
緩存的有效期限
緩存服務器上有緩存,由於具有時效性,不保證每次都會返回對同資源的請求。
源服務器上資源更新,換粗就會演變爲“舊”資源。
客戶端的要求、緩存的有效期也會影響資源的有效性。若判斷資源失效,則從源服務器獲取“新”資源。
客戶端的緩存
客戶端緩存稱爲臨時網絡文件(Temporary Internet File)
瀏覽器緩存如果有效,就可以從本地磁盤讀取。
和緩存服務器相同,判斷緩存失效後會再次請求新資源。
在HTTP之前出現的協議
FTP(File Transport Protocol)
傳輸文件使用的協議。被HTTP的流量(Traffic)超越,但現在仍在使用。
NNTP(Network News Transfer Protocol)
用於NetNews電子會議室內傳送消息的協議。利用Web交換信息後,不怎麼使用。
Archie
搜索anonymous FTP公開的文件信息的協議,不怎麼使用。
WAIS(Wide Area Information Servers)
以關鍵詞檢索多個數據庫使用的協議。被HTTP協議取代,不怎麼使用。
Gopher
查找與互聯網連接的計算機信息協議。被HTTP協議取代,不怎麼使用。