網際網路資訊服務

微软的網絡服務器软件,包含在最新版本的微軟視窗

網際網路資訊服務(英語:Internet Information Services,簡稱IIS),在中國大陸被稱為Internet信息服務,是由微軟公司提供的基於運行Microsoft Windows網際網路基本服務。最初是Windows NT的可選包,隨後成為Windows 2000Windows XP Professional和Windows Server 2003的可選元件,但在Windows XP/Vista/7/8/10 家用版本上並沒有IIS。

Internet Information Services
開發者Microsoft
當前版本10(2015年7月29日,​9年前​(2015-07-29
編程語言C++[1]
操作系統Microsoft Windows
語言多語言
類型網頁伺服器
許可協議專有軟件
網站www.iis.net

IIS包括FTP/FTPSNNTP、和HTTP/HTTPSSMTP等服務。 IIS可設定的內容包括:虛擬目錄及存取權限、預設文件名稱、以及是否允許瀏覽目錄。

各種版本

編輯
IIS版本 Windows版本 備註
IIS 1.0 Windows NT 3.51 Service Pack 3
IIS 2.0 Windows NT 4.0
IIS 3.0 Windows NT 4.0 Service Pack 3
  1. 開始支援ASP的執行環境
  2. 有ASP原始碼洩漏的Bug(Url後加字元)
IIS 4.0 Windows NT 4.0 Option Pack
  1. 支援ASP 3.0
  2. 有ASP原始碼洩漏的Bug(Url後加:$data
IIS 5.0 Windows 2000
  1. 在安裝相關版本的.NetFrameWork的RunTime之後,可支援ASP.NET 1.0/1.1/2.0的執行環境
IIS 5.1 Windows XP Professional
IIS 6.0 Windows Server 2003
Windows XP Professional x64 Edition
IIS 7.0[2] Windows Vista
Windows Server 2008
  1. 在Home Basic中無Web Server與FTP Server
  2. Home Premium有Web Server但是不支援FTP Server
  3. IISRESET -reboot被移除。這代表無法透過此指令做電腦重新開機,但IISRESET的其他指令參數則功能照舊,不受影響。
IIS 7.5 Windows 7
Windows Server 2008 R2
IIS 8.0 Windows 8
Windows Server 2012
IIS 8.5 Windows 8.1
Windows Server 2012 R2
IIS 10 Windows 10
Windows Server 2016
詳見此處。[3]

IIS即為InetInfo.exe進程。aspx頁面映射到該進程的aspnet ISAPI.DLL上。對aspx頁面,aspnet ISAPI.DLL創建aspnet_wp.exe工作者進程(Worker Process)。IIS進程與工作者進程之間的通信,採用命名管道

工作者進程初始化時加載CLR。一台服務器只運行一個aspnet_wp.exe工作者進程進程。每個ASP.NET應用程序在工作者進程中有自己單獨的AppDomain。AppDomain有自己單獨的context,實現了安全隔離。

IIS 6服務器通過運行於核心態的協議偵聽器組件Http.sys來接受客戶的http請求。然後查看該請求的Application屬於哪個應用池,把請求發到相應的應用池的隊列中。 如果該應用池不存在,則創建它。應用池通過工作進程隔離來分割ASP.NET應用程序,防止彼此間的干擾。

每個應用池對應一個運行在用戶態下的w3wp.exe工作者進程。在IIS Metabase 中維護着 Application Pool 和worker process的Mapping。工作者進程初始化時,加載ASP.NET ISAPI DLL,該DLL加載CLR。WAS(Web Administrative service)負責調度工作者進程將執行應用池隊列中哪個http請求。

IIS 7服務器通過運行於核心態的組件Http.sys(HTTP 協議堆棧)來接受客戶的http請求。再通過Process(Web Process Activation service,WAS)與WWW Publishing Service(W3SVC)兩個用戶態的系統服務來查詢、調度對應的應用程序池(Application Pool)開啟W3WP.exe工作者進程。

W3WP.exe工作者進程中可選擇經典模式或集成模式來執行ASP.NET應用。

  • 經典模式:與IIS 6處理方式一樣根據網頁的類型,分派給各自的 IIS ISAPI extension;ASP.NET扮演了一個ISAPI過濾插件器的角色,aspx由aspnet_isapi.dll進入CLR處理再返回給流水線。
  • 集成模式:已經預加載了CLR,所有的HTTP請求(包括html, php等)都要經過Web Server Core(IIS Core)的有序的若干步驟(稱為事件)。當請求完成Web Server Core的所有事件,會給HTTP.sys返回http響應。

IIS Express

編輯

IIS Express是IIS的輕量化版本,能夠被安裝在Windows XP Service Pack 3與之後版本的Microsoft Windows。IIS 7.5 Express只支援HTTPHTTPS[4]。 IIS Express可以單獨下載安裝[5]或是為Microsoft WebMatrix安裝的一部分[6]。另外,Visual Studio 在編寫網頁 / 網站並測試運行時也使用 IIS Express 提供虛擬站點服務,避免直接打開本地網頁時頁面上的 JavaScript 由於安全設置而被屏蔽。

在命令行使用IIS Express:
增加一個site:

"C:\Program Files\IIS Express\appcmd.exe" add site /name:MyNewSite1 /bindings:"http://localhost:58128" /physicalPath:"D:\MyPrograms\WebApplication1\WebApplication1"

查看site列表:

"C:\Program Files\IIS Express\appcmd.exe" list site

啟動site:

"C:\Program Files\IIS Express\iisexpress.exe"  /siteid:3

或者

"C:\Program Files\IIS Express\iisexpress.exe"  /site:<站点名>

啟動一個臨時網站:

 "C:\Program Files\IIS Express\iisexpress.exe" /path:"G:\01code\04MVC\01bamin\Code\BaminSolution\BM.Admin" /port:8899 /clr:v4.0 /systray:true

IIS Express 默認只支持本地連接,不能用ip去訪問。開啟/關閉外部連接:

netsh http add urlacl url=http://* :{端口号}/ user=everyone
netsh http delete urlacl url=http://* :{端口号}/

IIS Express配置文件默認位於「我的文檔\IIS Express\Config\」。其中,applicationhost.config是核心配置文件,包含了site的定義、應用程序和應用程序池以及整個WEB服務器的配置。

兼容性

編輯

IIS是在Windows操作系統平台下開發的,這也限制了它只能在這種操作系統下運行。在Windows XP Professional中IIS的一些功能做出了限制,以與Windows Server 2003有所區隔。

安全性

編輯

IIS的發展伴隨著安全漏洞;而隨著IIS 6.0的發佈,這種情況有所好轉。在低於6.0的版本中,其使用者權限是系統用戶;而在IIS 6.0中,引入了網絡服務帳戶,這是一個限制用戶。這樣,即使服務遭到了破壞,也不會造成系統的癱瘓。

擴充性

編輯
FTP Publishing Service[7]
可提供FTP或FTPS的架站服務
Administration Pack[8]
管理者套件
Database Manager[9]
Web版的資料庫管理介面
Dynamic IP Restrictions[10]
防止網站受到DDoS(分散式阻斷服務)或是惡意產生大量並行流量的用戶端攻擊
Windows Media Services[11]
URL Rewrite Module[12]
URL複寫模組,可隱藏真實的URL格式
Search Engine Optimization Toolkit[13]
搜尋引擎最佳化套件
Web Deployment Tool[14]
網站發佈工具
WebDAV

Extension[15]

允許管理員指定自定義的WebDAV的每個URL的基礎上的安全設置。
PHP For Windows[16]
為IIS加上PHP網頁的執行能力

參考文獻

編輯
  1. ^ Lextrait, Vincent. The Programming Languages Beacon, v10.0. 2010-02-12 [2010-02-12]. (原始內容存檔於2012-05-30). 
  2. ^ 模組化的IIS 7與.NET能力整合. [2008-11-17]. (原始內容存檔於2019-07-11). 
  3. ^ 《What’s new in IIS 10 – Microsoft Internet Information Services 10 New Features》,by benjaminperkins, March 6, 2017. [2019-05-18]. (原始內容存檔於2019-06-09). 
  4. ^ IIS Express FAQ. The Official Microsoft IIS Site. Microsoft corporation. January 14, 2011 [January 27, 2011]. (原始內容存檔於2012-08-30). 
  5. ^ Download details: Internet Information Services (IIS) 7.5 Express. Microsoft Download Center. Microsoft corporation. January 10, 2011 [January 27, 2011]. (原始內容存檔於2011-06-24). 
  6. ^ IIS Express Overview. The Official Microsoft IIS Site. Microsoft corporation. January 14, 2011 [January 27, 2011]. (原始內容存檔於2012-08-30). 
  7. ^ FTP Publishing Service. [2013-03-27]. (原始內容存檔於2021-02-26). 
  8. ^ Administration Pack. [2013-03-27]. (原始內容存檔於2020-11-12). 
  9. ^ Database Manager. [2013-03-27]. (原始內容存檔於2021-01-27). 
  10. ^ Dynamic IP Restrictions. [2013-03-27]. (原始內容存檔於2021-04-11). 
  11. ^ cWindows Media Services. [2013-03-27]. (原始內容存檔於2020-11-13). 
  12. ^ URL Rewrite Module. [2013-03-27]. (原始內容存檔於2021-04-21). 
  13. ^ Search Engine Optimization Toolkit. [2013-03-27]. (原始內容存檔於2021-03-01). 
  14. ^ Web Deployment Tool. [2013-03-27]. (原始內容存檔於2021-03-27). 
  15. ^ WebDAV Extension. [2013-03-27]. (原始內容存檔於2020-09-06). 
  16. ^ PHP For Windows: Binaries and sources Releases. [2013-03-27]. (原始內容存檔於2021-04-30). 

外部連結

編輯

參見

編輯