web伺服器、應用伺服器、web容器、反向代理伺服器區別與聯絡
阿新 • • 發佈:2018-11-12
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加速
負載均衡
快取靜態內容
壓縮
減速上傳
安全防火牆
外網釋出
突破網際網路封鎖
解決跨域問題