二、支持服務(wù)
自IIS 6.0發(fā)布以來,它的某些新特性一直是人們關(guān)注和議論的焦點,成為眾人矚目的明星,但另一些Internet支持服務(wù)雖然不是經(jīng)常有人說起,卻同樣值得關(guān)注,其中之一就是POP3服務(wù)和POP3服務(wù)Web管理器。我們無從得知微軟為何不在“應(yīng)用程序服務(wù)器”組件清單中列出POP3服務(wù),但是繼SMTP服務(wù)之后(SMTP服務(wù)隨同POP3服務(wù)一起安裝),管理員們盼望POP3服務(wù)已經(jīng)很久了,他們一直在期盼著用一個簡單的POP3服務(wù)來替代龐大的Microsoft Exchange Server。
統(tǒng)一描述、發(fā)現(xiàn)和集成協(xié)議(Universal Description, Discovery, and Integration,即UDDI)服務(wù)是Windows 2003提供的又一種新的功能,它也與IIS有關(guān),但默認(rèn)不安裝(注意,Windows 2003 Web版不能安裝UDDI)。UDDI是一種產(chǎn)業(yè)標(biāo)準(zhǔn)(即不是微軟的發(fā)明),能夠通過廣告發(fā)布IIS服務(wù)器提供的Web服務(wù)――這里“廣告”一詞的含義與日常生活中的廣告不同,它是指一種讓客戶程序(通常是Web瀏覽器)獲知Web服務(wù)(通常是ASP.NET應(yīng)用)各種細(xì)節(jié)的方式。UDDI仍在發(fā)展之中,但一些企業(yè)已經(jīng)在內(nèi)部采用UDDI,以便開發(fā)者將自己的代碼發(fā)布給其他協(xié)作開發(fā)的人。有關(guān)UDDI的更多知識,可以在下列網(wǎng)站找到:http://www.uddi-china.org/(中文),http://www.uddi.org(英文),http://www.uddicentral.com(英文)。
最后一種重要的支持服務(wù)是后臺智能傳送服務(wù),即 Background Intelligent Transfer Service或BITS。BITS是一種后臺文件傳輸機(jī)制和隊列管理器,也稱作節(jié)流傳輸服務(wù)。BITS控制文件請求,減少帶寬消耗并改善最終用戶的體驗。針對IIS啟用BITS可保證Web服務(wù)器的服務(wù)質(zhì)量,如果沒有BITS,當(dāng)100個用戶同時下載一個500 MB的文件,服務(wù)器的帶寬可能就被消耗殆盡,導(dǎo)致其他訪問Web服務(wù)的用戶頻繁地遇到超時錯誤。如果BITS就象廣告說的那樣有效,可以料想它將是一種非常實用的服務(wù)。Windows 2003發(fā)布之后,按照計劃,BITS還將移植到Win2K上。關(guān)于BITS的更多信息,請參見http://www.microsoft.com/windows.netserver/techinfo/overview/bits.mspx。
三、全新的內(nèi)核 從體系結(jié)構(gòu)上看,IIS 5.0和IIS 4.0其實是一樣的:它們都是在用戶模式下運行的發(fā)布Web內(nèi)容的應(yīng)用程序,或者在Inetinfo進(jìn)程之內(nèi)以System帳戶運行,或者在Inetinfo進(jìn)程之外以IWAM用戶運行。雖然在較重的負(fù)載下,IIS 5.0也有相當(dāng)出色的表現(xiàn);不過從IIS 6.0開始,我們對IIS底層結(jié)構(gòu)的看法應(yīng)該改變了。為了使IIS不僅能夠輕松地支持1000個Web網(wǎng)站,而且能夠支持10000個甚至更多的網(wǎng)站,同時還要提高Web服務(wù)器的安全性和可靠性,微軟放棄了原有的IIS內(nèi)核,重新構(gòu)造了一個。
另一個促使微軟重新構(gòu)建IIS內(nèi)核的原因是,微軟(以及其他廠商)認(rèn)識到,Web服務(wù)器的性能和可靠性問題絕大部分是由于質(zhì)量低劣的Web應(yīng)用造成。IIS 5.0通過帶緩沖池的Out of Process容器減輕這類問題。在IIS 5.0中,在Out of Process池中運行的應(yīng)用一旦崩潰,一般不會波及到IIS本身,因為應(yīng)用程序在Inetinfo之外的進(jìn)程中運行,但運行在Out of Process池之內(nèi)的所有Web應(yīng)用都會終止――在默認(rèn)情況下,所有的應(yīng)用程序都在該池之中運行。在這種情況下,排解故障很不容易,因為要確定哪一個應(yīng)用程序?qū)е铝藛栴}非常困難。IIS 6.0將監(jiān)聽請求、創(chuàng)建和監(jiān)視Web網(wǎng)站、運行Web服務(wù)這些不同的任務(wù)隔離了開來,這一新型體系可望解決IIS 5.0存在的問題。從理論上看,新的體系將極大地改善可用性、安全和性能;從實際情況看,根據(jù)微軟和Beta測試者的報告,新的體系令穩(wěn)定性和性能有了奇跡般地提高。IIS 6.0的內(nèi)核體系主要建立在三個組件之上:W3SVC,http.sys,以及W3Core。
■ W3SVC
W3SVC也許是IIS 6.0體系中最不令人注意的組件,不過這并不說明它不重要。W3SVC的任務(wù)是根據(jù)配置數(shù)據(jù)的設(shè)置創(chuàng)建和監(jiān)視工作線程,由工作線程運行Web網(wǎng)站應(yīng)用。在IIS 5.0中,與IIS 6.0 W3SVC組件最接近的是IIS管理服務(wù),IIS管理服務(wù)是Inetinfo的一部分;
因此,如果Inetinfo出現(xiàn)問題,IIS管理服務(wù)也會出現(xiàn)問題,而且此時的IIS管理服務(wù)不能再重新啟動Inetinfo或其他故障的應(yīng)用程序。在IIS 6.0中,W3SVC作為一個獨立的進(jìn)程運行,Web應(yīng)用的故障不可能波及W3SVC,因為W3SVC之內(nèi)根本沒有第三方的代碼運行。W3SVC總是處于運行狀態(tài),因此它能夠監(jiān)視Web應(yīng)用的健康狀況,并在必要時采取行動。由于這一策略,服務(wù)器能夠根據(jù)用戶指定的參數(shù)監(jiān)視和重新啟動應(yīng)用程序。
■ http.sys
IIS 6.0體系設(shè)計中最重大的變化是加入了http.sys驅(qū)動程序,http.sys驅(qū)動程序的任務(wù)是處理HTTP請求,而且它在內(nèi)核模式下執(zhí)行操作。不要小看這一改變,將處理HTTP請求的任務(wù)從IIS 5.0、IIS 4.0的用戶模式改變到IIS 6.0的內(nèi)核模式標(biāo)志著新一代IIS服務(wù)器的誕生。
在Win 2K和NT 4.0中,IIS在用戶模式下運行。運行在用戶模式下的應(yīng)用程序不直接與硬件通信,它們直接調(diào)用的是一些標(biāo)準(zhǔn)過程,這些標(biāo)準(zhǔn)過程或者將數(shù)據(jù)傳入內(nèi)核模式的組件(例如網(wǎng)卡驅(qū)動程序,圖形子系統(tǒng)),或者調(diào)用內(nèi)核模式組件的函數(shù),以此完成保存文件、設(shè)置IP地址、將HTML文件發(fā)送到網(wǎng)絡(luò)之類的任務(wù)。
用戶模式和內(nèi)核模式之間的轉(zhuǎn)換是一項開銷很大的操作,服務(wù)器首先從內(nèi)核模式的TCP/IP棧將傳入的HTTP請求傳遞給用戶模式的Winsock,由Winsock將請求傳遞給IIS。從內(nèi)核模式到用戶模式的切換很快發(fā)生,但不可避免地給處理過程帶來瞬間的延遲。當(dāng)負(fù)載較大時,這種延遲不斷累加,同時由于這種轉(zhuǎn)換是必不可少的,所以管理員根本沒有辦法優(yōu)化處理過程。
IIS 6.0的https.sys內(nèi)核模式驅(qū)動程序極大地減少了用戶模式和內(nèi)核模式之間的切換次數(shù)。http.sys監(jiān)聽著HTTP請求,決定由哪一個用戶模式的進(jìn)程來處理該請求,或者是否由驅(qū)動程序本身返回用戶請求的內(nèi)容。
IIS 6.0在用戶模式下運行,完全依賴內(nèi)核模式的http.sys作為接收用戶請求的服務(wù)器引擎。因此,http.sys必須能夠在任何時候作出相應(yīng),必須具有極高的可靠性。用戶代碼可能導(dǎo)致進(jìn)程出錯,所以微軟把http.sys設(shè)計成不執(zhí)行任何用戶代碼,這樣,即使應(yīng)用程序出現(xiàn)了故障,也不會影響到IIS 6.0本身,IIS 6.0仍能夠照常監(jiān)聽HTTP請求。
如果要從內(nèi)核模式的緩沖區(qū)返回靜態(tài)的應(yīng)答,一個高速的、內(nèi)核模式的、不允許運行應(yīng)用程序代碼的HTTP處理器是十分理想的,它減少了切換到用戶模式的昂貴開銷,能夠從內(nèi)核模式的緩沖區(qū)快速返回應(yīng)答。IIS 6.0的http.sys就管理著這樣一個緩沖區(qū),而且使用了高度優(yōu)化的啟發(fā)式緩沖區(qū)算法來確定哪些內(nèi)容要放入緩沖區(qū),例如,http.sys可能只緩沖那些出現(xiàn)了一次以上請求的內(nèi)容。
由于http.sys直接從應(yīng)答緩沖區(qū)提取靜態(tài)內(nèi)容,不必再切換到用戶模式,所以與IIS 5.0的性能相比,IIS 6.0的整體性能有了顯著提升。根據(jù)微軟的資料顯示,WebBench基準(zhǔn)測試表明IIS 6.0返回靜態(tài)內(nèi)容的速度要比IIS 5.0快150%。即使以IIS 5.0的隔離模式運行IIS 6.0服務(wù)器(這時,IIS 6.0的體系結(jié)構(gòu)與IIS 5.0的相似),同樣也能從http.sys驅(qū)動程序的應(yīng)答緩沖區(qū)和其他改進(jìn)之處獲益。
另外,微軟在http.sys驅(qū)動程序中采用了許多優(yōu)化的算法,使其能夠?qū)⒄埱笾苯愚D(zhuǎn)發(fā)到適當(dāng)?shù)墓ぷ鬟M(jìn)程。在IIS 4.0和IIS 5.0中,必須通過多個步驟才能確定進(jìn)程的哪一個實例擁有了應(yīng)當(dāng)接收當(dāng)前請求的Web應(yīng)用,但在IIS 6.0中,http.sys注冊了所有IIS 6.0應(yīng)用,賦予每一個進(jìn)程一個句柄,IIS內(nèi)部利用這些句柄來標(biāo)識注冊的應(yīng)用程序要用到的一個或多個名稱空間。因此,當(dāng)http.sys接收到一個HTTP請求,它能夠很快地將請求從內(nèi)核模式的http.sys傳遞到正確的用戶模式的Web應(yīng)用。
http.sys驅(qū)動程序還要執(zhí)行其他一些任務(wù),其中包括:
?、?將傳入的URL與各種長度、格式方面的規(guī)則進(jìn)行比較。
?、?管理傳入請求的隊列。
⑶ 擔(dān)負(fù)著記錄IIS Web網(wǎng)站日志信息的任務(wù)(從而提高了記錄日志的性能)。
?、?實施帶寬限制策略以及支持TCP/IP級的管理。
?、?實現(xiàn)客戶證書請求服務(wù)(但不支持安全套接字層――SSL)。
由于http.sys是一個操作系統(tǒng)的驅(qū)動程序,而不是一個IIS組件,因此該驅(qū)動程序的配置在注冊表而不是IIS配置數(shù)據(jù)中進(jìn)行。當(dāng)前,還有許多http.sys的注冊表設(shè)置項目尚無正式的說明文檔,它可能意味著微軟不鼓勵用戶修改這些設(shè)置,因為這些設(shè)置項目將來可能會有變化。http.sys驅(qū)動程序的注冊表設(shè)置項目位于
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/HTTP下面,在這里可添加各種注冊鍵(默認(rèn)配置中不包含這些注冊鍵),諸如:
⑴ EnableNonUTF8:如果加入EnableNonUTF8子鍵,并將它的值設(shè)置成0,http.sys只接受UTF-8編碼的URL。UTF-8的全稱是Universal Character Set(UCS)Transformation Format 8,這是一種字符集標(biāo)準(zhǔn),標(biāo)準(zhǔn)全文在http://www.ietf.org/rfc/rfc2279.txt,它允許使用多國語言的字符集。默認(rèn)情況下,EnableNonUTF8的值是1,表示IIS接受UTF-8、ANSI、雙字節(jié)字符集(DBCS)編碼的URL。
?、?PercentUAllowed:當(dāng)這個子鍵設(shè)置成1時(默認(rèn)值),http.sys認(rèn)可那些部分字符用%uNNNN表示的URL,其中NNNN是一組表示實際字符的數(shù)字。當(dāng)PercentUAllowed設(shè)置成0時,IIS 6.0將拒絕那些部分字符用這種方式表示的URL。
?。NNNN是一種不太常用的Unicode符號,不要將它與常見的UTF-8表示形式混淆。在UTF-8表示形式中,%20表示一個空格,例如http://www.iisanswers.com/new article.htm相當(dāng)于http://www.iisanswers.com/new%20article.htm,兩者之間的轉(zhuǎn)換由IE瀏覽器自動完成,不管EnableNonUTF8和PercentUAllowed設(shè)置成了什么值,IIS 6.0都會接受。
這兩項設(shè)置,再加上其他可以在IIS 6.0文檔中找到的設(shè)置項目,從一個側(cè)面反映了IIS 6.0在URL解析方面的改進(jìn)。在IIS 5.0中,一些重大的安全問題與Web服務(wù)器解析URL的方式有密切的關(guān)系,現(xiàn)在微軟終于解決了原先存在的缺陷,同時作出了一些改進(jìn),允許管理員更加明確地定義IIS 6.0解析URL的規(guī)則。在天生具有國際化特點的Internet上,多國語言并存,這些改進(jìn)之處尤其具有重要意義。
關(guān)于Unicode的更多信息,請參見http://www.unicode.org;關(guān)于IIS 5.0缺陷的更多信息,請參見 http://www.wiretrip.net/rfp/p/doc.asp/i5/d57.htm。在Windows Server 2003 Resource Kit中可以找到一個幫助配置http.sys的工具。
■ W3Core
默認(rèn)情況下,IIS 6.0在工作進(jìn)程隔離模式下運行,如圖五所示。在這種模式中,對于每一個Web應(yīng)用,IIS 6.0都用一個獨立的w3wp.exe的實例來運行它。w3wp.exe也稱為工作進(jìn)程(Worker Process),或W3Core。

圖五
因此,工作進(jìn)程隔離模式不存在進(jìn)程內(nèi)(In-Process)應(yīng)用程序存在的問題,有效地提高了可靠性和安全性??煽啃缘奶岣呤且驗橐粋€Web應(yīng)用的故障不會影響到其他Web應(yīng)用,也不會影響http.sys,每一個Web應(yīng)用由W3SVC單獨地監(jiān)視其健康狀況。安全性的提高是由于應(yīng)用程序不再象IIS 5.0和IIS 4.0的進(jìn)程內(nèi)應(yīng)用那
樣用System帳戶運行,默認(rèn)情況下,w3wp.exe的所有實例都在一個權(quán)限有限的“網(wǎng)絡(luò)服務(wù)”帳戶下運行,如圖六所示,必要時,還可以將工作進(jìn)程配置成用其他用戶帳戶運行。

圖六
如果緩沖區(qū)溢出攻擊成功入侵了一個Web應(yīng)用,攻擊者只能訪問當(dāng)時運行工作進(jìn)程的帳戶有權(quán)訪問的資源,默認(rèn)的網(wǎng)絡(luò)服務(wù)帳戶不能寫入Inetpub文件夾,執(zhí)行權(quán)限也極其有限,所以象CodeRed蠕蟲之類的攻擊根本不可能得逞。
某些Web應(yīng)用,特別是有些Internet Server API(ISAPI)篩選器,在進(jìn)程外運行時可能會遇到問題。在IIS 5.0和IIS 4.0中,ISAPI篩選器總是在Inetinfo之內(nèi)運行,它們的設(shè)計目標(biāo)本來就不是在進(jìn)程外運行,正是由于這個原因,某些篩選器在IIS 6.0的工作進(jìn)程隔離模式中運行時可能會出現(xiàn)問題――特別地,調(diào)用SF_READ_RAW_DATA或SF_SEND_RAW_DATA的篩選器尤其明顯。為此,IIS 6.0還提供了第二種操作模式,稱為IIS 5.0隔離模式。如果ISAPI篩選器不能在工作進(jìn)程隔離模式下正常運行,在IIS 5.0隔離模式下應(yīng)該沒有問題。在這第二種操作模式中,應(yīng)用程序仍舊能夠從IIS 6.0的許多改進(jìn)中獲益,例如http.sys驅(qū)動程序帶來的性能、可靠性的提高。
在IIS 6.0文檔中,可以看到一種叫做“應(yīng)用程序池”的新特性。一個應(yīng)用程序池包含一個或者一組工作進(jìn)程,而且應(yīng)用程序池是可以命名的。應(yīng)用程序池可以從下列角度理解:在IIS 5.0中,我們可以將應(yīng)用程序保護(hù)設(shè)置為低級(IIS進(jìn)程)、中級(緩沖池)、高級(隔離),這個功能雖然很有用,但如果我們想要在一個池(一個dllhost.exe的實例)中運行兩個應(yīng)用程序,在另一個池(另一個dllhost.exe的實例?)中運行另外兩個應(yīng)用,該怎么辦?IIS 5.0沒有提供命名dllhost.exe實例的途徑,因而也就不能將兩個特定的應(yīng)用放入某個池運行。IIS 6.0的應(yīng)用程序池允許指定名稱,如圖七,通過網(wǎng)站“屬性”對話框的“主目錄”頁,可以方便地將Web網(wǎng)站或目錄放入應(yīng)用程序池。

圖七
四、應(yīng)用程序池詳解 前面我們了解了IIS 6.0體系結(jié)構(gòu)的關(guān)鍵組件,下面來看看有關(guān)應(yīng)用程序池的一些問題。應(yīng)用程序池的“屬性”對話框有四頁――回收,性能,運行狀況,標(biāo)識,如圖六所示。在這些選項頁中,最引人注目的恐怕就是“回收”頁,使用該選項頁可以管理工作進(jìn)程的回收。在工作進(jìn)程隔離模式中,
IIS可以配置成定期重新啟動應(yīng)用程序池中的工作進(jìn)程,從而更好地管理那些有錯誤的工作進(jìn)程。這確保了池中的應(yīng)用程序運行正常,并且可以恢復(fù)丟失的系統(tǒng)資源。為了回收工作進(jìn)程,失敗工作進(jìn)程接收請求的能力將被限制,直到它處理完存儲在請求隊列中的所有剩余請求。為了排出當(dāng)前請求,可以給予進(jìn)程配置限制。同一命名空間組的替換工作進(jìn)程在舊的工作進(jìn)程停止前啟動,從而防止服務(wù)中斷。舊的進(jìn)程完成其未決的請求,然后正常關(guān)閉,或者如果在達(dá)到了配置的時間限制、請求數(shù)、設(shè)置的時間計劃,或當(dāng)達(dá)到指定的內(nèi)存用量限制后仍沒有關(guān)閉,則明確地終止進(jìn)程。默認(rèn)情況下,應(yīng)用程序池每隔1740分鐘(29小時)回收一次。
W3SVC根據(jù)“運行狀況”頁的選項來判斷應(yīng)用程序池運行是否正常,包括:每隔指定的時間Ping工作進(jìn)程,時間按秒計,默認(rèn)值30秒;啟動時間限制(工作進(jìn)程必須在指定的時間內(nèi)開始);關(guān)閉時間限制(工作進(jìn)程必須在指定的時間內(nèi)關(guān)閉);是否啟動快速失敗保護(hù)(如果在指定的時間段內(nèi)一定數(shù)目的工作進(jìn)程發(fā)生失敗,則禁用應(yīng)用程序池)。另外,ISAPI應(yīng)用程序(包括ASP.NET和asp.dll)可以聲明自己不再適合提供服務(wù),要求回收。
默認(rèn)情況下,當(dāng)IIS 6.0回收一個池時,它會使用一種稱為overlapped recycle的回收技術(shù)。在這種回收模式下,失敗的工作進(jìn)程仍會保持運行狀態(tài),同時創(chuàng)建一個新的工作進(jìn)程。IIS 6.0把新傳入的請求傳遞給新的工作進(jìn)程,但不拆除老的工作進(jìn)程,直至老的工作進(jìn)程處理完它隊列中的請求,或者遇到超時錯誤。在此期間,TCP/IP連接不會丟失,因為有http.sys保持著連接的有效性。當(dāng)失敗的工作進(jìn)程超時出錯時,下一個請求傳遞給工作進(jìn)程的請求是新的請求,因此原來保存在進(jìn)程中的會話信息就會丟失。所有這類回收操作都自動進(jìn)行,無需管理員干預(yù),而且在大多數(shù)情況下,不會造成明顯的服務(wù)中斷現(xiàn)象。如有必要,可以將配置數(shù)據(jù)屬性LogEventOnRecycle的值設(shè)置為1,指示W(wǎng)3SVC執(zhí)行回收操作時生成一條事件日志記錄。
對于那些不能以多個實例運行的應(yīng)用程序,overlapped recycle回收技術(shù)可能引起問題。如果遇到這類問題,可以將配置數(shù)據(jù)屬性DissallowOverlappingRotation的值設(shè)置成True(1),關(guān)閉某個應(yīng)用程序池回收操作時的進(jìn)程“重疊”現(xiàn)象。另外,對于失敗的工作進(jìn)程,有時我們可能不想將它拆除,仍舊保留該進(jìn)程,以便檢測和尋找發(fā)生問題的根源,這時可以將配置數(shù)據(jù)屬性O(shè)rphanActionExe設(shè)置成執(zhí)行文件的名字,使得工作進(jìn)程成為“孤兒”時執(zhí)行文件仍保持運行狀態(tài)。
另一個與應(yīng)用程序池有關(guān)的特性是,IIS 6.0允許將應(yīng)用程序池配置成一個Web園(Web Garden)。要理解Web園的概念,可以設(shè)想這樣一種情形:假設(shè)有一個IIS 5.0服務(wù)器和三個Web網(wǎng)站,每一個Web網(wǎng)站運行著相同的應(yīng)用程序,如果IIS 5.0能夠自動按照圓形循環(huán)的模式將請求依次發(fā)送給這些功能上等價、實際上分離的Web網(wǎng)站,將負(fù)載分離到三個不同的進(jìn)程,就可以構(gòu)成一個小型的Web農(nóng)場(Web Farm)――這就是Web園。
在IIS 6.0的Web園中,我們不必創(chuàng)建額外的Web網(wǎng)站,只要指定用于某個應(yīng)用程序池的工作進(jìn)程的數(shù)量就可以了。具體的配置步驟是:打開應(yīng)用程序池的“屬性”對話框,轉(zhuǎn)到“性能”頁,在“Web園”下面的“最大工作進(jìn)程數(shù)”輸入框中輸入進(jìn)程數(shù)量,如圖八。當(dāng)服務(wù)器的負(fù)載較小,不需要額外的工作進(jìn)程時,IIS 6.0在一定的時間后(默認(rèn)20分鐘,可配置)自動縮減實際的工作進(jìn)程數(shù)量;如果負(fù)載變大,需要額外的工作進(jìn)程,IIS 6.0再次增加工作進(jìn)程數(shù)量。這一切操作都自動進(jìn)行,不需要管理員干預(yù)。

圖八
兩個新的配置數(shù)據(jù)屬性――SMPAffinitze和SMPAffinitzeCPUMask――允許配置為工作進(jìn)程指派的特定處理器:將SMPAffinitized屬性設(shè)置成true表示應(yīng)該把分配給應(yīng)用程序池的特定工作進(jìn)程指派給特定的CPU,SMPProcessorAffinityMask屬性用來配置十六進(jìn)制的處理器掩碼,該十六進(jìn)制處理器掩碼指出應(yīng)用程序池中的工作進(jìn)程應(yīng)該綁定到哪個CPU。
寫到這里,文章的篇幅似乎已經(jīng)太長了。本文主要從體系結(jié)構(gòu)的角度介紹IIS 6.0的新特性,并且盡力做到全面,至少要比通常見到的介紹更完善一些。文章的第二部分將涵蓋更多的IIS 6.0新特性,你會發(fā)現(xiàn)許多新特性正是自己長久以來盼望的。
前文介紹了IIS 6.0的安裝和Web服務(wù)器的新型體系結(jié)構(gòu)。IIS 6.0新特性的數(shù)量多得令人驚奇,其中一些特性是如此引人注目,以至于人們的大部分注意力都被它們吸引。在這第二篇介 紹IIS 6.0的文章中,我們不僅將了解這些已成為“明星”的特性,還將關(guān)注一下IIS 6.0各種較少有人注意卻同樣重要的改進(jìn)之處。
一、安全 微軟一次又一次地做著同樣一件事情――某個軟件產(chǎn)品出了問題,飽受人們詬病,于是趕緊發(fā)布新的版本將問題解決。例如,發(fā)布Windows NT 4.0之后,因穩(wěn)定性問題而飽受批評;于是微軟發(fā)布了Windows 2000,新操作系統(tǒng)的穩(wěn)定性頗受好評,但Win 2K服務(wù)器默認(rèn)安裝的IIS 5.0卻成了巨大的安全隱患,需要下大力氣加以整治才能解決問題。IIS 6.0默認(rèn)不安裝,如果按照缺省方式安裝,Web服務(wù)器只能提供靜態(tài)內(nèi)容服務(wù)。因此,從這個角度看,即使以后IIS 6.0應(yīng)用引擎和組件突然出現(xiàn)了問題,IIS 6.0還是極大地降低了安全風(fēng)險。另外,Windows Server 2003還有一個新的組策略“禁止安裝IIS”,有了該組策略,我們就可以禁止Windows 2003在活動目錄(AD)森林中禁止不準(zhǔn)備作Web服務(wù)器用的機(jī)器上安裝IIS 6.0,防止網(wǎng)絡(luò)上出現(xiàn)根本無用的、不安全的IIS 6.0服務(wù)器。不過,目前這個組策略只對Windows 2003服務(wù)器有效,不能防止Windows XP Pro和Win 2K的機(jī)器安裝IIS 5.0。
當(dāng)然,由于剛剛安裝好的IIS 6.0不支持動態(tài)內(nèi)容,所以出現(xiàn)了第二個人們經(jīng)常會問的問題:“為什么我的服務(wù)器不能運行ASP?”(前文提到,第一個人們經(jīng)常會問的問題是:“IIS 6.0可以在Win 2K服務(wù)器上運行嗎”?答案是“不”)。要想在IIS 6.0上運行程序,必須使用IIS 6.0的一種新特性,即Web服務(wù)擴(kuò)展,或Web Service Extension(這個名字似乎意味著它與XML Web服務(wù)有某種關(guān)系,實際情況并非如此。)
如果要為某個程序啟用Web服務(wù)擴(kuò)展,首先打開IIS管理器(在“控制面板”→“管理工具”中。以前叫做Internet服務(wù)管理器或ISM),如圖一,點擊“添加一個新的Web服務(wù)擴(kuò)展”,啟動向?qū)?chuàng)建一個新的規(guī)則。為規(guī)則指定一個名字,然后找到想要啟用的執(zhí)行文件。另外,/system32/inetsrv下有一個iisext.vbs腳本,它也能夠配置并管理運行帶有IIS 6.0的Windows Server 2003的Web服務(wù)擴(kuò)展、應(yīng)用程序和單獨的文件。管理員可以使用此腳本來啟用和列出應(yīng)用程序;添加和刪除應(yīng)用程序依賴性;啟用、禁用和列出 Web 服務(wù)擴(kuò)展;添加、刪除、啟用、禁用和列出單獨文件。

圖一
在圖一中,注意“所有未知ISAPI擴(kuò)展”和“所有未知CGI擴(kuò)展”這兩種Web服務(wù)擴(kuò)展。默認(rèn)情況下,這兩種擴(kuò)展是禁用的,意味著除非明確地允許一個應(yīng)用在IIS 6.0上運行,否則它就不能運行。如果一個用戶請求了某個沒有啟用的文件,IIS 6.0將向用戶返回404錯誤――文件或目錄沒有找到,同時在W3SVC日志中記錄“
404.2文件或目錄無法找到:鎖定策略禁止該請求”。在IIS 6.0中,404.2和其他子狀態(tài)代碼是W3SVC日志文件的一項可選功能,用來幫助排解故障、疑難(IIS 5.0和IIS 4.0中也有子狀態(tài)代碼,不過不會在日志文件中記錄,但可以將它們轉(zhuǎn)到定制的錯誤頁面,便于根據(jù)子狀態(tài)代碼執(zhí)行特殊的處理)。IIS 6.0的子狀態(tài)代碼很有用,它們提供了描述問題的詳細(xì)信息,例如:403.20,禁止訪問:Passport登錄失??;403.18,禁止訪問:無法在當(dāng)前應(yīng)用程序池中執(zhí)行請求的URL;404.3,文件或目錄無法找到:MIME映射策略禁止該請求;500.19,服務(wù)器錯誤:該文件的數(shù)據(jù)在配置數(shù)據(jù)庫中配置不正確。所有這些錯誤和其他錯誤都映射到定制的錯誤頁面,錯誤頁面不會把子狀態(tài)代碼發(fā)送給用戶,攻擊者無法獲知具體的錯誤信息。
另一個安全方面的改進(jìn)之處是IIS 6.0允許指派一個加密服務(wù)提供者(Cryptographic Service Provider,CSP),能夠?qū)⒒谟布陌踩捉幼謱樱⊿SL)加速器集成到IIS 6.0,從而把加密任務(wù)從服務(wù)器的通用CPU轉(zhuǎn)移到了專門為加密操作而優(yōu)化的專用設(shè)備,有利于提高性能和可靠性。
二、配置數(shù)據(jù)
在IIS 5.0和IIS 4.0中,配置數(shù)據(jù)庫采用二進(jìn)制文件結(jié)構(gòu),但I(xiàn)IS 6.0放棄了這一做法。IIS 6.0的配置數(shù)據(jù)由兩個XML文件構(gòu)成:一個是Metabase.xml,包含IIS 6.0服務(wù)器的配置信息;另一個是mbschema.xml,包含配置數(shù)據(jù)的模式定義。IIS管理器提供了一項新的功能,允許保存配置數(shù)據(jù)副本,只要右擊Web網(wǎng)站,然后選擇“所有任務(wù)”→“將配置保存到一個文件”,然后指定配置數(shù)據(jù)副本的文件名字和保存路徑即可。按照這種方式保存配置數(shù)據(jù)時,IIS 6.0利用系統(tǒng)的機(jī)器碼(Machine Key)加密配置數(shù)據(jù)的某些部分,因此,配置數(shù)據(jù)的副本只對創(chuàng)建該副本的機(jī)器有用。
不過,在“將配置保存到一個文件”對話框中,我們可以選中“用密碼對配置進(jìn)行加密”選項,然后指定密碼,用密碼來保護(hù)導(dǎo)出的配置文件。如果提供了密碼,IIS 6.0將用密碼來替代機(jī)器碼,以后只要提供同一個密碼,就可以將配置數(shù)據(jù)導(dǎo)入到另一個服務(wù)器。另外,我們可以使用命令行腳本iisback.vbs(在systemroot/System32中)創(chuàng)建和管理遠(yuǎn)程或本地計算機(jī)的IIS配置的備份副本,管理員可以使用此腳本工具創(chuàng)建其IIS配置的備份副本,從備份副本還原IIS配置以及列出和刪除備份副本。
有些時候,我們只要保存某個應(yīng)用程序池、Web網(wǎng)站或虛擬目錄的配置,而不是保存全部的配置信息,這時可以按照如下步驟操作:右擊要保持配置信息的對象,選擇菜單“所有任務(wù)”→“將配置保存到一個文件”,如圖二所示,如果準(zhǔn)備將配置數(shù)據(jù)導(dǎo)入到另一個服務(wù)器,必須提供加密文件的密碼。

圖二
如果右擊一個應(yīng)用程序池、Web網(wǎng)站組或單個網(wǎng)站,然后選擇“新建”→“應(yīng)用程序池(來自文件)”,或者“新建”→“網(wǎng)站”→“來自文件”,或者“新建”→“虛擬目錄(來自文件)”,就可以從保存的配置文件創(chuàng)建新的應(yīng)用程序池、Web網(wǎng)站或虛擬目錄。因此,必要的時候,我們可以只創(chuàng)建和配置一個對象,利用“將配置保存到一個文件”功能導(dǎo)出對象
的配置信息,然后利用“新建”→“虛擬目錄(來自文件)”等功能將配置信息導(dǎo)入到多個Web網(wǎng)站。這就是說,我們可以先精心配置一個模板,然后用它來創(chuàng)建和配置新的網(wǎng)站。當(dāng)然,出現(xiàn)問題時,配置信息副本還可以用來恢復(fù)網(wǎng)站的設(shè)置。
由于IIS 6.0配置信息是可移植的,它還有另外一個好處,這就是方便了升級。假設(shè)我們升級時不能直接在Win 2K/IIS 5.0上安裝Windows 2003/IIS 6.0,必須換一臺機(jī)器,這時就要解決如何將IIS 5.0不可移植的配置數(shù)據(jù)轉(zhuǎn)移到新的IIS 6.0服務(wù)器的問題。利用IIS 6.0配置數(shù)據(jù)的可移植性,解決辦法是:首先安裝好新的Windows 2003服務(wù)器,為原來的Win 2K服務(wù)器做一個完整的備份,然后在Win 2K服務(wù)器上安裝第二個Windows 2003服務(wù)器將它升級,導(dǎo)出第二個Windows 2003服務(wù)器的配置數(shù)據(jù)(用密碼加密),然后將配置數(shù)據(jù)導(dǎo)入到新的Windows 2003服務(wù)器。新安裝的Windows 2003服務(wù)器必須作一些調(diào)整,例如允許IUSR帳戶等,但至少現(xiàn)在不必重新執(zhí)行全部配置操作了。
IIS 6.0的配置數(shù)據(jù)是標(biāo)準(zhǔn)的文本文件(XML文件),所以可以用記事本之類的文本編輯器打開和編輯。如果修改了IIS 5.0或IIS 4.0的配置數(shù)據(jù),有時必須重新啟動IIS,如果系統(tǒng)上網(wǎng)站的數(shù)量很多,可能需要不少時間,例如ISP的服務(wù)器就屬于這類情況。為了解決這個問題,IIS 6.0支持一種“運行時允許編輯”功能?!斑\行時允許編輯”功能按照如下方式啟用:在IIS管理器中,右擊服務(wù)器,選擇菜單“屬性”,然后選中“允許直接編輯配置數(shù)據(jù)庫”選項,如圖三所示。啟用了這個功能之后,如果我們用記事本打開配置數(shù)據(jù)文件,插入一個虛擬目錄的配置,然后保存并關(guān)閉配置文件,IIS 6.0幾乎立即就能根據(jù)配置文件的設(shè)置作相應(yīng)的修改,根本無需重新啟動。

圖三
既然允許直接編輯配置文件,因配置文件不合法造成的服務(wù)器、應(yīng)用程序故障也必然增多。為此,IIS 6.0提供了配置文件歷史版本目錄,即/system32/inetsrv/history,每次修改配置數(shù)據(jù)或重新啟動IIS 6.0,IIS 6.0都會在該目錄中保存一份原有的配置數(shù)據(jù)。
三、IIS管理器 每次產(chǎn)品重大升級,人們都會試圖從用戶界面尋找令人激動的新功能。IIS 6.0的管理器確實有了變化,不過改動之處出乎意料地少。
其中一個改動之處雖小,但很實用。如果在IIS管理器中右擊一個文件夾,現(xiàn)在可以選擇“權(quán)限”菜單打開文件夾的“安全”對話框。在這個對話
框中可以設(shè)置文件夾的NTFS授權(quán),不必再離開IIS管理器。雖然這是一個小小的改動,也許它今年會為全世界所有的IIS管理員總共節(jié)省數(shù)千小時的工作時間。
右擊一個Web網(wǎng)站,選擇“屬性”,轉(zhuǎn)到“目錄安全性”頁,點擊“安全通信”下面的“編輯”按鈕,在這里可以找到另一個重要的改動之處――安全通信屬性頁允許配置SSL、證書信任列表(CTL)、客戶證書。在IIS 5.0和IIS 4.0中,除非在Web網(wǎng)站上安裝一個證書,否則不能訪問該屬性頁,這一限制令人不快,因為從技術(shù)上看,配置CTL、客戶證書并不要求服務(wù)器上安裝了證書,換句話說,在IIS 5.0中我們安裝證書的唯一用途可能就是因為用戶界面需要它。IIS 6.0改正了這一多余的要求,現(xiàn)在我們不必在Web服務(wù)器上安裝證書也可以訪問和使用該屬性頁了。
四、通配符應(yīng)用程序 如果你熟悉IIS 5.0和IIS 4.0的ISAPI篩選器,可能也熟悉它們的缺點。ISAPI篩選器不僅編寫困難,而且由于它們在Inetinfo進(jìn)程內(nèi)運行,如果編寫時不小心留下了一點錯誤,很容易導(dǎo)致災(zāi)難性的后果,出錯的代碼可能造成整個IIS崩潰。另外,ISAPI篩選器不能擁有常規(guī)ISAPI DLL擁有的功能。當(dāng)然,不管怎樣,在IIS 5.0和IIS 4.0中,ISAPI篩選器仍是一種非常有用的組件,是唯一可以針對所有進(jìn)入Web服務(wù)器或Web網(wǎng)站的請求執(zhí)行操作的代碼。
IIS 6.0提供了一種更加靈活的新型機(jī)制來提供通常由ISAPI篩選器提供的服務(wù),它就是ISAPI截取器(Interceptor),或者稱為通配符應(yīng)用程序(Wildcard Application)。通配符應(yīng)用程序的配置方式是:在IIS管理器中右擊Web網(wǎng)站,選擇菜單“屬性”,轉(zhuǎn)到“主目錄”頁面,點擊“應(yīng)用程序設(shè)置”下面的“配置”按鈕,出現(xiàn)“應(yīng)用程序配置”對話框,如圖四所示。在對話框的“映射”頁中,我們可以將一個或多個ISAPI DLL配置成通配符應(yīng)用程序。對于每一個接收到的請求,IIS 6.0將調(diào)用這里列出的各個通配符應(yīng)用程序。除了針對所有網(wǎng)站配置通配符應(yīng)用程序,還可以針對單個網(wǎng)站或在目錄層次上配置通配符應(yīng)用程序。由于這些ISAPI截取器是標(biāo)準(zhǔn)的ISAPI應(yīng)用程序,它們具有普通ISAPI應(yīng)用程序具備的所有功能,包括訪問消息正文的能力,而不僅僅象ISAPI篩選器那樣訪問消息頭。

圖四
通配符應(yīng)用程序可以做到開發(fā)者要做的任何事情,諸如URL定制、驗證身份、記錄特殊的日志信息、檢測攻擊企圖、創(chuàng)建內(nèi)容,等等。通配符應(yīng)用程序結(jié)束處理后,它把請求轉(zhuǎn)交給適當(dāng)?shù)奶幚硪妫ɡ缣幚鞟SP頁面的asp.dll),由處理引擎進(jìn)一步處理請求。另外,通配符應(yīng)用程序還可以通過調(diào)用為ISAPI應(yīng)用程序新增的ExecuteURL功能
,將請求傳遞到同一個應(yīng)用程序池中的任意頁面。
新增的ISAPI通配符應(yīng)用程序為創(chuàng)造性的應(yīng)用程序設(shè)計大開方便之門。例如,IIS 6.0的URL授權(quán)功能就是作為一個ISAPI通配符應(yīng)用程序(urlauth.dll)實現(xiàn)。URL授權(quán)功能允許IIS 6.0根據(jù)一系列的規(guī)則授予對某個URL的訪問權(quán),例如用戶是否為某個組的成員、地理位置,以及其他在數(shù)據(jù)庫或AD中與用戶有關(guān)的信息。有關(guān)ISAPI通配符應(yīng)用程序和URL授權(quán)的更多信息,請參見IIS 6.0的幫助文檔。
五、日志功能 服務(wù)器的日志功能很少成為首要的關(guān)注對象,但卻是日復(fù)一日的服務(wù)器管理和監(jiān)視工作不可或缺的助手。IIS 6.0在日志功能方面有許多重大的改進(jìn),但遺憾的是,W3SVC日志事件仍不能以本地時間記錄。
在IIS 6.0中,記錄日志的功能已經(jīng)改為由http.sys實現(xiàn),http.sys在內(nèi)核模式下運行。這一改進(jìn)加快了日志寫入速度,同時避免了多個工作進(jìn)程爭用同一日志文件。某些特殊的情況下,http.sys會遇到錯誤,這時它應(yīng)該但卻不能將日志信息寫入Web網(wǎng)站的日志,例如,工作進(jìn)程正在被回收,禁止http.sys處理用戶請求,或者用戶試圖連接到服務(wù)器,但請求中只提供了IIS所需信息的一部分。如果出現(xiàn)這類情況,http.sys將把事件寫入一個新的日志文件httperr.log。
在排解故障、優(yōu)化IIS 6.0的過程中,httperr.log日志文件是十分重要的。默認(rèn)情況下,httperr.log文件保存在/system32/logfiles目錄,但可以修改,修改方法是找到HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/HTTP/Parameters注冊子鍵,在它下面添加一個名為ErrorLoggingDir的字符串值,在ErrorLoggingDir中設(shè)置保存日志文件的完整路徑。在httperr.log日志文件中可以找到的信息包括:所有的503(服務(wù)不可用)錯誤,空閑連接超時,解析URL時出現(xiàn)的各種錯誤,最后10個提交給失敗的應(yīng)用程序池的請求。
IIS 6.0還擁有一種稱為二進(jìn)制日志的功能,啟用這個功能后,IIS 6.0將把Web網(wǎng)站的所有日志信息寫入一個二進(jìn)制格式的日志文件,日志文件的擴(kuò)展名是.ibl。要啟用二進(jìn)制日志功能,只要把配置文件的W3SVCC/CentralBinaryLoggingEnabled條目設(shè)置成ture(1)即可。對于ISP來說,這個功能應(yīng)該非常有用。ISP的每臺機(jī)器上可能有1000甚至更多的Web網(wǎng)站,如果每個Web網(wǎng)站每天生成一個日志文件,日志文件的總數(shù)很快會達(dá)到一個天文數(shù)字。微軟最近發(fā)布的Log Parser 2.0工具能夠讀取二進(jìn)制日志文件并生成報告,這個工具可以從http://download.microsoft.com/download/iis50/utility/2.0/nt5xp/en-us/setup.exe下載。Log Parser 2.0還能夠讀取前面介紹的httperr.log文件并生成報告。
從很久以前開始,IIS就允許指定本地服務(wù)器上保存日志文件的目錄了。不過,雖然IIS 5.0和IIS 4.0的IIS管理器允許在指定日志文件路徑的時候輸入一個遠(yuǎn)程服務(wù)器的通用命名規(guī)范(UNC)的路徑,但Web服務(wù)器實際上不會把日志保存到遠(yuǎn)程服務(wù)器。只有IIS 6.0才真正支持日志文件路徑的UNC路徑名。
六、網(wǎng)站ID 對于IIS服務(wù)器來說,唯一標(biāo)識一個網(wǎng)站的不是網(wǎng)站的名稱,而是網(wǎng)站的ID數(shù)值。當(dāng)我們在IIS 5.0和IIS 4.0中創(chuàng)建一個新的網(wǎng)站,Web服務(wù)器將下一個可用的數(shù)字順序號指定給網(wǎng)站(即,Web服務(wù)器給默認(rèn)站點指定的數(shù)字是1,下一個網(wǎng)站是2,接下來是2、3、4,等等),這個數(shù)
字就是網(wǎng)站的唯一ID。如果要訪問一個網(wǎng)站的日志文件,首先必須知道該網(wǎng)站的ID,因為日志文件保存在/W3SVC/<網(wǎng)站的ID編號>目錄。如果Web服務(wù)器上運行著一個以上的網(wǎng)站,僅僅依靠日志文件的路徑名稱根本無法判斷哪一個日志目錄屬于哪一個網(wǎng)站。另外,無論是在編寫管理腳本時,還是在修改配置數(shù)據(jù)文件時,網(wǎng)站ID都是必不可少的,例如,在IIS配置數(shù)據(jù)文件中指定ADSI(活動目錄服務(wù)接口,Active Directory Service Interface)路徑時往往要指定正確的網(wǎng)站ID。
盡管如此,在IIS 5.0和IIS 4.0中,從IIS管理器無法直接找到網(wǎng)站的ID編號。為此,IIS 6.0的管理器在網(wǎng)站清單中增加了一個新的“標(biāo)識符”列,該列的內(nèi)容就是網(wǎng)站的ID編號。不過,即使IIS 6.0 Web服務(wù)器上只有二三個網(wǎng)站,網(wǎng)站的ID也可能很大,例如387660891(因此該網(wǎng)站的日志文件路徑是/W3SVC/387660891),不必奇怪,IIS 6.0不再按照順序指定網(wǎng)站的ID了――它根據(jù)網(wǎng)站的名字計算出網(wǎng)站的ID。
如果你編寫了一些腳本程序輔助管理,這些腳本要求使用原有的網(wǎng)站ID順序生成方式,可以禁用IIS 6.0新式的ID生成方式,具體的操作步驟是:找到HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/InetMgr/Parameters注冊子鍵,創(chuàng)建一個REG_DWORD值IncrementalSiteIDCreation,將它設(shè)置為2(注意,默認(rèn)情況下,該鍵不存在)。
七、異步CGI處理 IIS 5.0和IIS 4.0以同步方式運行CGI(Common Gateway Interface,通用網(wǎng)關(guān)接口)進(jìn)程,這實際上意味著每次只有一個線程能夠訪問一個CGI進(jìn)程,所以IIS 5.0和IIS 4.0對CGI支持的可伸縮性不佳。IIS 6.0能夠異步運行CGI進(jìn)程,所以如果一個線程調(diào)用了一個CGI應(yīng)用程序,它不必再等待CGI進(jìn)程處理完畢和返回信息。異步CGI改善了IIS服務(wù)器運行CGI Web應(yīng)用程序的性能,使得IIS能夠運行更多執(zhí)行關(guān)鍵任務(wù)的基于CGI的應(yīng)用程序。
當(dāng)Web服務(wù)器接收到包含CGI程序名和程序所需參數(shù)的URL時,CGI程序開始執(zhí)行。如果將CGI程序編譯為可執(zhí)行 (.exe)文件,則必須提供包含程序執(zhí)行權(quán)限的目錄,以便用戶可以運行程序。如果CGI程序以腳本形式(例如Perl腳本)編寫,則既可為目錄提供執(zhí)行權(quán)限,也可為其提供腳本權(quán)限。另外,如果要使用腳本權(quán)限,必須將腳本解釋程序標(biāo)記為腳本引擎。
必須注意的是,默認(rèn)情況下,IIS_WPG組不具備啟動CGI進(jìn)程的權(quán)限。如果創(chuàng)建了新帳戶并將其添加到IIS_WPG組,還必須授予此帳戶兩種啟動CGI進(jìn)程的用戶權(quán)限,即“調(diào)整進(jìn)程的內(nèi)存配額”和“替換進(jìn)程級令牌”。
八、帶寬限制 在IIS 5.0和IIS 4.0中,Web網(wǎng)站屬性對話框的“性能”頁允許啟用帶寬限制功能,指定允許網(wǎng)站占用的最大帶寬。不過,這個功能不一定起作用,因為IIS 5.0和IIS 4.0不能直接操作服務(wù)器的網(wǎng)卡。
IIS 6.0則不同,第一次啟用帶寬限制功能時,Windows 2003自動安裝QoS數(shù)據(jù)包計劃程序供IIS服務(wù)器調(diào)用。QoS數(shù)據(jù)包計劃程序使得服務(wù)器能夠控制服務(wù)質(zhì)量(即QoS),因此安裝期間Windows 2003將臨時地停止所有網(wǎng)絡(luò)服務(wù)。配置好QoS數(shù)據(jù)包計劃程序后,IIS才真正有了擔(dān)負(fù)起控制網(wǎng)站帶寬限制所需的驅(qū)動程序――對于ISP來說,這無疑是一個好消息。允許設(shè)置的最小帶寬限制值是1024 Byte/秒。不要忘了檢查一下網(wǎng)卡是否在Windows 2003硬件兼容清單(HCL)中,因為只有最新的網(wǎng)卡才支持QoS功能。
要配置QoS數(shù)據(jù)包計劃程序,首先必須創(chuàng)建一個組策略控制臺。點擊“開始”→“運行”,輸入“mmc”,然后點擊“確定”。在控制臺窗口中,選擇菜單“文件”→“添加/刪除管理單元”,點擊“添加”,在“添加獨立管理單元”對話框中,選擇“組策略對象編輯器”,然后依次點擊“添加”、“完成”、“關(guān)閉”、“確定”?,F(xiàn)在依次擴(kuò)展控制臺中的“本
地計算機(jī)策略”、“計算機(jī)配置”、“管理模板”、“網(wǎng)絡(luò)”,顯示出“QoS數(shù)據(jù)包計劃程序”,如圖五所示。

圖五
啟用帶寬限制之前,請使用系統(tǒng)監(jiān)視器檢查“網(wǎng)絡(luò)接口”對象中的總字節(jié)數(shù)/秒或當(dāng)前帶寬計數(shù)器。如果希望比較傳入和傳出流量,請檢查發(fā)送的字節(jié)數(shù)/秒和接收的字節(jié)數(shù)/秒,再比較“網(wǎng)絡(luò)接口”對象的值和網(wǎng)絡(luò)連接的總帶寬。對于“正?!钡呢?fù)載,服務(wù)器使用的帶寬不應(yīng)超過其全部可用帶寬的50%。如果服務(wù)器有較大的高峰負(fù)載,請將正常負(fù)載保持在50%以下,剩下的帶寬可在高峰期使用。
帶寬限制可以是針對全局WWW服務(wù)的(即對所有網(wǎng)站都有效),也可以是針對單個網(wǎng)站的。設(shè)置全局WWW服務(wù)最大帶寬不會替代已為服務(wù)器上的單個網(wǎng)站設(shè)定的最大帶寬。單個站點根據(jù)已設(shè)置的最大值來限制帶寬,而全局設(shè)置限制所有其他未限制帶寬的網(wǎng)站。另外,全局WWW服務(wù)帶寬限制設(shè)置不會影響FTP站點或FTP服務(wù)。
九、默認(rèn)設(shè)置的變化 在IIS 6.0中,許多配置項目的默認(rèn)值已經(jīng)與IIS 5.0或IIS 4.0的不同。例如,默認(rèn)的連接超時時間已經(jīng)從900秒減少到120秒,另外,EnableParentPaths設(shè)置默認(rèn)關(guān)閉。還有其他一些新的設(shè)置項目也會影響服務(wù)器的性能和行為,包括:
?、?如果某種文件類型沒有在MimeMap配置屬性中映射,所有對該類文件的請求將被拒絕。
⑵ 默認(rèn)情況下,所有工作進(jìn)程會在1740分鐘后自動回收,回收期間會話信息可能丟失。
?、?運行CGI應(yīng)用程序的用戶上下文必須是一個IIS_WPG組的成員。
?、?Windows 2003不安裝Collaboration Data Objects for Windows NT Server(CDONTS)。微軟建議開發(fā)者改用CDO for Windows 2000(CDOSYS)對象。
?、?ASP請求默認(rèn)限制在204800字節(jié)之下,每一個域限制在100 KB之下。IIS 5.0和IIS 4.0沒有這方面的限制。
?、?默認(rèn)情況下,http.sys僅接受標(biāo)題小于16 KB的請求。
本文關(guān)于IIS 6.0的介紹就到這里結(jié)束,雖然文章很長,但還是不可能做到面面俱到,例如,還沒有提及受到廣泛關(guān)注的Passport驗證和摘要驗證方面的改進(jìn),本文的重點放在一些具有突破性意義的IIS 6.0新特性以及幾種較少有人提及的功能,以此證明IIS 6.0改進(jìn)的廣泛性、深入性。從許多方面來看,IIS 6.0的風(fēng)頭甚至蓋過了Windows 2003――而且許多人認(rèn)為,IIS 6.0確實有資格占據(jù)舞臺的中央。