1. 程式人生 > >web伺服器、應用伺服器、web容器、反向代理伺服器區別與聯絡

web伺服器、應用伺服器、web容器、反向代理伺服器區別與聯絡

Web伺服器工作原理

  • HTTP協議基於TCP協議上,是一個應用層協議,用於使用者代理和Web伺服器進行通訊。Web伺服器通常採用一問一答的方式進行工作:
    在使用者代理上使用者發起資源請求,請求內容包括但不限於:指定資源的唯一標識URI,指明動作型別(GET/POST/DELETE/PUT…)
    使用者代理解析使用者輸入URI並從中獲取目標域名,交由DNS伺服器解析。如果URI中指定某IP地址,這無需這步。
    如果與伺服器的會話還沒建立,此時先建立TCP連線,並完成HTTP協商(確定雙方均可接受的處理方式,包括協議版本,是否加密,內容格式等等)。
    使用者代理把請求內容封裝成HTTP資料包向伺服器傳送。
    伺服器接收到資源請求並以之前協商好的方式解包並處理。
    伺服器請求的資源封裝成HTTP資料包並返回給使用者代理。
  • Web伺服器的主要功能是儲存,處理和傳遞網頁給客戶。客戶端和伺服器之間的通訊使用超文字傳輸協議(HTTP)進行。交付的頁面最常見的是HTML文件,除了文字內容之外,還可能包含影象,樣式表和指令碼。

Web容器

  • 相對於Web伺服器,該容器新增或強化了以下模組:
    • 分配執行緒池資源
      容器為每個請求分配一個執行緒進行處理,通常採取執行緒池的方式高效理由CPU算資源。
    • 封裝Request上下文
      一個請求對應一個Request上下文,它主要封裝了使用者請求的主要構成。URL,HTTP請求頭,以及基於請求頭構建的Session,Cookie等物件,方便程式設計使用。
    • 封裝Response上下文
      一個請求對應一個Response上下文,主要用於向用戶代理返回資源。可以在其中寫入輸出流,或者重定向,或者返回錯誤碼等等。
    • URL路由
      在容器裡,執行開發人員設定不同的路由匹配規則,比如讓.HTM返回.HTML,也可以自定義.xyz返回.HTML資源。更加靈活的配置可以參考JAVA MVC或者ASP.NET MVC的配置方案。
    • 動態資源處理模組
      通常在這裡具體的容器和開發語言都有自己的高效開發模型,比如JAVA的Servlet,ASP.NET的Web Form,MVC。
    • 回收資源
      這裡會回收剛才的執行緒資源,為了執行緒複用,除非伺服器空閒一般會將執行緒返回執行緒池。
    • 可以看出,Web容器本身具備了做為一個Web伺服器的功能,事實上通常實現Web容器功能的伺服器就是一個Web伺服器。比如Tomcat , IIS ,Jetty。
  • 主流Web容器:Tomcat , IIS ,Jetty ,WebSphere,WebLogic等等。

應用伺服器

  • 當有人說到“web伺服器”時,你通常要把它認為是以HTTP為核心、web UI為嚮導的應用。當有人說到“應用伺服器”時,你可能想到“高負載、企業級特性、事務和佇列、多通道通訊(HTTP和更多的協議)”。但現在提供這些需求的基本上都是同一個產品。

反向代理伺服器

  • 反向代理的主要作用為:
    加密和SSL加速
    負載均衡
    快取靜態內容
    壓縮
    減速上傳
    安全防火牆
    外網釋出
    突破網際網路封鎖
    解決跨域問題

這裡寫圖片描述