與HTTP協作的Web伺服器

hizyk發表於2020-11-24

宣告:本人的所有部落格皆為個人筆記,作為個人知識索引使用,因此在敘述上存在邏輯不通順、跨度大等問題,希望理解。分享出來僅供大家學習翻閱,若有錯誤希望指出,感謝!

與HTTP協作的Web伺服器

虛擬主機實現多個域名

HTTP/1.1允許一臺HTTP伺服器搭建多個Web站點

即使物理層只有一臺伺服器,但只要使用虛擬主機,就可以虛擬為多個伺服器


域名通過DNS服務對映到IP地址,因此當請求傳送到伺服器時,使用的是IP地址。若一臺伺服器內託管了兩個域名,則收到請求時必須區分使用者要訪問哪個域名

若伺服器使用虛擬主機搭載了多個域名,則客戶端在傳送HTTP請求時,必須在Host首部內完整指定主機名或域名的URI

通訊資料轉發程式

HTTP通訊時,除客戶端和伺服器外,還有一些用於通訊資料轉發的應用程式,例如代理、網管、隧道等

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

  • 代理

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

  • 閘道器

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

  • 隧道

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

代理

代理伺服器的基本行為就是接收客戶端傳送的請求後轉發給其他伺服器

代理不改變URI,會直接傳送給前方持有資源的目標伺服器

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


使用代理伺服器的理由:

  • 利用快取技術減少網路頻寬流量
  • 組織內部針對特定網站的訪問控制

快取代理

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

透明代理

請求或轉發響應時,部隊報文做任何加工的代理型別被稱為透明代理,反之被稱為非透明代理

閘道器

閘道器的工作機制與代理十分接近,閘道器能使通訊線路上的伺服器提供非HTTP協議服務

利用閘道器能提高通訊的安全性,因為可以在客戶端與閘道器之間的通訊線路上加密以確保連線的安全

隧道

隧道可按要求建立一條與其他伺服器的通訊鏈路,屆時使用SSL等加密手段進行通訊,隧道的目的是確保客戶端能夠與伺服器進行安全的通訊

隧道本身不回去解析HTTP請求,請求會保持原樣中轉給之後伺服器

隧道會在通訊雙方斷開連線時結束

儲存資源的快取

快取的有效期限

即使存在快取,也會因為客戶端要求、快取的有效期等因素,向源伺服器確認資源的有效性

若判斷快取失效,快取伺服器會再次從源伺服器獲取“新”資源

客戶端的快取

快取可以存在於客戶端的瀏覽器中,瀏覽器快取如果有效,就可以直接從本地磁碟獲取資源

若判斷快取過期,會向源伺服器確認資源的的有效性,若判定瀏覽器快取失效,瀏覽器會再次請求新資源

相關文章