熱點推薦:
您现在的位置: 電腦知識網 >> 操作系統 >> Windows服務器 >> 正文

深入剖析Windows IIS 6.0(2)

2022-06-13   來源: Windows服務器 

  全新的內核
  從體系結構上看IIS 和IIS 其實是一樣的它們都是在用戶模式下運行的發布Web內容的應用程序或者在Inetinfo進程之內以System帳戶運行或者在Inetinfo進程之外以IWAM用戶運行雖然在較重的負載下IIS 也有相當出色的表現不過從IIS 開始我們對IIS底層結構的看法應該改變了為了使IIS不僅能夠輕松地支持個Web網站而且能夠支持個甚至更多的網站同時還要提高Web服務器的安全性和可靠性微軟放棄了原有的IIS內核重新構造了一個
  
  另一個促使微軟重新構建IIS內核的原因是微軟(以及其他廠商)認識到Web服務器的性能和可靠性問題絕大部分是由於質量低劣的Web應用造成IIS 通過帶緩沖池的Out of Process容器減輕這類問題在IIS 在Out of Process池中運行的應用一旦崩潰一般不會波及到IIS本身因為應用程序在Inetinfo之外的進程中運行但運行在Out of Process池之內的所有Web應用都會終止——在默認情況下所有的應用程序都在該池之中運行在這種情況下排解故障很不容易因為要確定哪一個應用程序導致了問題非常困難IIS 將監聽請求創建和監視Web網站運行Web服務這些不同的任務隔離了開來這一新型體系可望解決IIS 存在的問題從理論上看新的體系將極大地改善可用性安全和性能從實際情況看根據微軟和Beta測試者的報告新的體系令穩定性和性能有了奇跡般地提高IIS 的內核體系主要建立在三個組件之上WSVChttpsys以及WCore
  
  ■ WSVC
  WSVC也許是IIS 體系中最不令人注意的組件不過這並不說明它不重要WSVC的任務是根據配置數據的設置創建和監視工作線程由工作線程運行Web網站應用在IIS 與IIS WSVC組件最接近的是IIS管理服務IIS管理服務是Inetinfo的一部分因此如果Inetinfo出現問題IIS管理服務也會出現問題而且此時的IIS管理服務不能再重新啟動Inetinfo或其他故障的應用程序在IIS WSVC作為一個獨立的進程運行Web應用的故障不可能波及WSVC因為WSVC之內根本沒有第三方的代碼運行WSVC總是處於運行狀態因此它能夠監視Web應用的健康狀況並在必要時采取行動由於這一策略服務器能夠根據用戶指定的參數監視和重新啟動應用程序
  
  ■ httpsys
  IIS 體系設計中最重大的變化是加入了httpsys驅動程序httpsys驅動程序的任務是處理HTTP請求而且它在內核模式下執行操作不要小看這一改變將處理HTTP請求的任務從IIS IIS 的用戶模式改變到IIS 的內核模式標志著新一代IIS服務器的誕生
  
  在Win K和NT IIS在用戶模式下運行運行在用戶模式下的應用程序不直接與硬件通信它們直接調用的是一些標准過程這些標准過程或者將數據傳入內核模式的組件(例如網卡驅動程序圖形子系統)或者調用內核模式組件的函數以此完成保存文件設置IP地址將HTML文件發送到網絡之類的任務
  
  用戶模式和內核模式之間的轉換是一項開銷很大的操作服務器首先從內核模式的TCP/IP棧將傳入的HTTP請求傳遞給用戶模式的Winsock由Winsock將請求傳遞給IIS從內核模式到用戶模式的切換很快發生但不可避免地給處理過程帶來瞬間的延遲當負載較大時這種延遲不斷累加同時由於這種轉換是必不可少的所以管理員根本沒有辦法優化處理過程
  
  IIS 的內核模式驅動程序極大地減少了用戶模式和內核模式之間的切換次數httpsys監聽著HTTP請求決定由哪一個用戶模式的進程來處理該請求或者是否由驅動程序本身返回用戶請求的內容
  
  IIS 在用戶模式下運行完全依賴內核模式的httpsys作為接收用戶請求的服務器引擎因此httpsys必須能夠在任何時候作出相應必須具有極高的可靠性用戶代碼可能導致進程出錯所以微軟把httpsys設計成不執行任何用戶代碼這樣即使應用程序出現了故障也不會影響到IIS 本身IIS 仍能夠照常監聽HTTP請求
  
  如果要從內核模式的緩沖區返回靜態的應答一個高速的內核模式的不允許運行應用程序代碼的HTTP處理器是十分理想的它減少了切換到用戶模式的昂貴開銷能夠從內核模式的緩沖區快速返回應答IIS 的httpsys就管理著這樣一個緩沖區而且使用了高度優化的啟發式緩沖區算法來確定哪些內容要放入緩沖區例如httpsys可能只緩沖那些出現了一次以上請求的內容
  
  由於httpsys直接從應答緩沖區提取靜態內容不必再切換到用戶模式所以與IIS 的性能相比IIS 的整體性能有了顯著提升根據微軟的資料顯示WebBench基准測試表明IIS 返回靜態內容的速度要比IIS 即使以IIS 的隔離模式運行IIS 服務器(這時IIS 的體系結構與IIS 的相似)同樣也能從httpsys驅動程序的應答緩沖區和其他改進之處獲益
  
  另外微軟在httpsys驅動程序中采用了許多優化的算法使其能夠將請求直接轉發到適當的工作進程在IIS 和IIS 必須通過多個步驟才能確定進程的哪一個實例擁有了應當接收當前請求的Web應用但在IIS httpsys注冊了所有IIS 應用賦予每一個進程一個句柄IIS內部利用這些句柄來標識注冊的應用程序要用到的一個或多個名稱空間因此當httpsys接收到一個HTTP請求它能夠很快地將請求從內核模式的httpsys傳遞到正確的用戶模式的Web應用
  
  httpsys驅動程序還要執行其他一些任務其中包括
  ⑴ 將傳入的URL與各種長度格式方面的規則進行比較
  ⑵ 管理傳入請求的隊列
  ⑶ 擔負著記錄IIS Web網站日志信息的任務(從而提高了記錄日志的性能)
  ⑷ 實施帶寬限制策略以及支持TCP/IP級的管理
  ⑸ 實現客戶證書請求服務(但不支持安全套接字層——SSL)
  
  由於httpsys是一個操作系統的驅動程序而不是一個IIS組件因此該驅動程序的配置在注冊表而不是IIS配置數據中進行當前還有許多httpsys的注冊表設置項目尚無正式的說明文檔它可能意味著微軟不鼓勵用戶修改這些設置因為這些設置項目將來可能會有變化httpsys驅動程序的注冊表設置項目位於HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP下面在這裡可添加各種注冊鍵(默認配置中不包含這些注冊鍵)諸如
  ⑴ EnableNonUTF如果加入EnableNonUTF子鍵並將它的值設置成httpsys只接受UTF編碼的URLUTF的全稱是Universal Character Set(UCS)Transformation Format 這是一種字符集標准標准全文在它允許使用多國語言的字符集默認情況下EnableNonUTF的值是表示IIS接受UTFANSI雙字節字符集(DBCS)編碼的URL
  ⑵ PercentUAllowed當這個子鍵設置成時(默認值)httpsys認可那些部分字符用%uNNNN表示的URL其中NNNN是一組表示實際字符的數字當PercentUAllowed設置成IIS 將拒絕那些部分字符用這種方式表示的URL
  
  %uNNNN是一種不太常用的Unicode符號不要將它與常見的UTF表示形式混淆在UTF表示形式中表示一個空格例如相當於兩者之間的轉換由IE浏覽器自動完成不管EnableNonUTF和PercentUAllowed設置成了什麼值IIS 都會接受
  
  這兩項設置再加上其他可以在IIS 文檔中找到的設置項目從一個側面反映了IIS 在URL解析方面的改進在IIS 一些重大的安全問題與Web服務器解析URL的方式有密切的關系現在微軟終於解決了原先存在的缺陷同時作出了一些改進允許管理員更加明確地定義IIS 解析URL的規則在天生具有國際化特點的Internet上多國語言並存這些改進之處尤其具有重要意義
  
  關於Unicode的更多信息請參見關於IIS 缺陷的更多信息請參見 在Windows Server Resource Kit中可以找到一個幫助配置httpsys的工具
  
  ■ WCore
  
  默認情況下IIS 在工作進程隔離模式下運行如圖五所示在這種模式中對於每一個Web應用IIS 都用一個獨立的wwpexe的實例來運行它wwpexe也稱為工作進程(Worker Process)或WCore
  
 

  

  因此工作進程隔離模式不存在進程內(InProcess)應用程序存在的問題有效地提高了可靠性和安全性可靠性的提高是因為一個Web應用的故障不會影響到其他Web應用也不會影響httpsys每一個Web應用由WSVC單獨地監視其健康狀況安全性的提高是由於應用程序不再象IIS 和IIS 的進程內應用那樣用System帳戶運行默認情況下wwpexe的所有實例都在一個權限有限的網絡服務帳戶下運行如圖六所示必要時還可以將工作進程配置成用其他用戶帳戶運行
  
 

  

  如果緩沖區溢出攻擊成功入侵了一個Web應用攻擊者只能訪問當時運行工作進程的帳戶有權訪問的資源默認的網絡服務帳戶不能寫入Inetpub文件夾執行權限也極其有限所以象CodeRed蠕蟲之類的攻擊根本不可能得逞
  某些Web應用特別是有些Internet Server API(ISAPI)篩選器在進程外運行時可能會遇到問題在IIS 和IIS ISAPI篩選器總是在Inetinfo之內運行它們
From:http://tw.wingwit.com/Article/os/fwq/201311/29845.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.