IIS چیست؟ IIS یکی از محصولهای قدیمی مایکروسافت است که در سیستمعامل ویندوز برای تبادل محتوای استاتیک و داینامیک وبسایتها استفاده میشود. اگر وبسایتتان را روی سرویسهای ویندوزی میزبانی میکنید، یکی از بهترین گزینههای پیش روی شما «وب سرور IIS» است. این سرویس ویندوزی مانند وب سرورهای دیگر وقتی درخواستی ازطریق مرورگر به وبسایتها ارسال میشود، درخواستهای کاربران را دریافت و باتوجهبه نوع درخواست، پاسخ مناسبی را برای آنها ارسال میکند. آیآیاس سالهایسال است که تلاش میکند فرزند خوبی برای سرورها باشد و اطلاعات موردنیاز را از سرور دریافت و با سرعت بالایی به کاربران ارائه کند.
مایکروسافت اولین نسخه وب سرور IIS 1.0 را در سال ۱۹۹۵ بهعنوان یک افزونه برای ویندوز NT 3.51 منتشر کرد. این وب سرور امکانات ابتدایی داشت و آن زمان از HTTP و FTP پشتیبانی میکرد. با استقبال کاربران از این وب سرور، نسخه جدید IIS 2.0 با ویندوز NT 4.0 روانه بازار شد تا ویژگیهای جدیدی را به کاربران ارائه دهد. به همین ترتیب، مایکروسافت برای جلب رضایت کاربران بهروزرسانیهای زیادی از این وب سرور ارائه کرده است که میتوانید در انواع نسخههای ویندوز سرور از آنها استفاده کنید. آخرین نسخه آیآیاس در سال ۲۰۱۶ با نام تجاری 10 IIS منتشرشده که عملکرد، امنیت و ویژگیهای کمنظیری دارد و روی ویندوز ۱۰ و ویندوز سرور ۲۰۱۶ و ۲۰۱۹ اجرا میشود.
قبل از آنکه شروع به استفاده از IIS کنید بهتر است با مزایا و معایب آن آشنا شوید. اگر میخواهید درباره سرویس پرطرفدار مایکروسافت بیشتر بدانید تا انتهای این مقاله از آموزش ویندوز بلاگ پارس پک ما همراه باشید.
IIS چیست؟
IIS (مخفف Internet Information Services) وب سرور پایدار و پرطرفداری است که روی پلتفرم مایکروسافت NET. در سیستمعامل ویندوز اجرا میشود. IIS ابزار قابل نصب روی سرورها است و میتوانید آن را روی تمامی محصولهای Microsoft Windows Server نصب کنید. باتوجهبه محبوبیت وب سرور IIS مایکروسافت این سرویس را با نسخههای حرفهای محصولهای خود مانند Windows 10 Pro سازگار کرده است تا امکان استفاده از آن در تمامی محصولهای ویندوزی فراهم باشد.
وب سرور آیآیاس وظیفه پاسخگویی به درخواستهایی را دارد که کاربران ازطریق مرورگر به وبسایتها ارسال میکنند. بنابراین، صفحههای وب، فایلهای متنی، تصویری، ویدئویی و… وبسایتها با استفاده از IIS دراختیار کاربران قرار میگیرد. وب سرور IIS برای میزبانی وب اپلیکیشنها از فناوریهای مختلفی همچون فریمورک ASP.NET و زبان برنامهنویسی PHP استفاده میکند.
اگرچه میتوان این وب سرور ویندوزی را روی سیستمعاملهای لینوکس یا مک به کمک ابزاری به نام Mono اجرا کرد، اما استفاده از آن در سیستمعاملهای غیرویندوزی پایداری و امنیت بالایی ندارد، چراکه IIS برای مایکروسافت داتنت طراحیشده و پیادهسازی آن در ویندوز قابل اعتمادتر است.
وب سرور IIS برای وبسایتهایی مناسب است که با زبانهای برنامهنویسی ASP طراحی شدهاند؛ درمقابل آن وب سرور Nginx و Apache قرار دارند که تحت لینوکس هستند و برای زبانهای برنامهنویسی PHP طراحی شدهاند.
IIS با کدام زبانهای برنامهنویسی و فریمورکها کار میکند؟
IIS با فریمورک NET. سازگار است. اما از زبانها و فریمورکهای دیگری میتوان برای بهرهمندی از قابلیتهای IIS استفاده کرد. در جدول زیر میتوانید لیستی از آنها را مشاهده کنید:
زبانهای برنامهنویسی | فناوریها |
JScript ،PerlScript و VBScript | ASP |
زبانهای برنامهنویسی سازگار با NET. مانند C# و Visual Basic .NET | ASP.NET |
COM مانند C ،Visual C++ ،Visual Basic و Java | کامپوننتهای ASP |
C یا Visual C++ | ISAPI |
Perl و C ،Visual C++ ،Visual Basic | CGI |
به وب سروری امن و مطمئن برای میزبانی برنامهها و فایلهایتان در ویندوز سرور نیاز دارید؟ از وب سرور IIS استفاده کنید. آیآیاس روی سیستمعامل ویندوز اجرا میشود و از سری محصولهای مایکروسافت است. از این وب سرور برای تبادل محتوای وب با کاربران استفاده میشود و محتواهای ذخیرهشده در ویندوز سرور را باتوجهبه نوع درخواست با سرعت بالایی به کاربران ارائه میدهد.
با نحوه کار وب سرور بیشتر آشنا شوید
برای درک بهتر IIS بهتر است با مفهوم وب سرور و نحوه کار آن آشنا شوید. وب سرور نرمافزار کامپیوتری است که نحوه دسترسی کاربران به محتوای وبسایتها را مدیریت میکند. وب سرور درخواستهای کاربران را ازطریق پروتکل شبکه HTTP (پروتکلی که مرورگرها برای نمایش محتوای صفحههای وب از آن استفاده میکنند) یا نوع امن آن HTTPS از مرورگر دریافت میکند و پاسخ درخواستها را در قالب صفحههای وب به مرورگر ارائه میدهد تا به کاربران نمایش دهد. درصورتیکه پاسخ مناسبی برای ارائه به کاربران وجود نداشته باشد، پیغام خطای ۴۰۴ یا موارد مشابه را برمیگرداند. به زبان ساده، این وب سرورها هستند که صفحههای وبسایتها را به شما نمایش میدهند.
بدین ترتیب، وظیفه اصلی وب سرورها دریافت درخواستهای کاربران و ارائه پاسخ مناسب بهصورت صفحههای وب HTML، فایلهای CSS، جاوا اسکریپت و انواع دادههای متنی، تصویری و ویدئویی و… به مرورگر کاربران است. علاوهبر پروتکل HTTP و HTTPS، وب سرورها از پروتکل SMTP (مخفف Simple Mail Transfer Protocol) برای ارسال ایمیل، FTP (مخفف File Transfer Protocol) برای انتقال و ذخیرهسازی فایل و… پشتیبانی میکنند.
IIS چه کاری انجام میدهد؟
IIS میزبانی برنامهها و فایلهای وبسایتها را برعهده دارد و زمانیکه کاربران آدرس وبسایت را در مرورگر جستوجو میکنند، صفحهها و دادههای درخواستی از وب سرور آیآیاس خوانده و پردازش میشود. درواقع، آیآیاس را میتوان بهعنوان یک واسطه در نظر گرفت که مسئول پردازش پیغامهای کاربران از درگاههای پیشفرض TCP است. برای مثال، ترافیک ورودی از پورتهای ۴۴۳ و ۸۰ دریافت (۴۴۳ پورت پیشفرص HTTPS و ۸۰ پورت پیشفرض HTTP است.) و بهوسیله وب سرور IIS پردازش میشود.
فرض کنید میخواهید محتوای «IIS چیست» پارس پک را مشاهده کنید. زمانیکه آدرس صفحه «IIS چیست» پارس پک را در مرورگر جستوجو میکنید، درخواستی به وب سرور IIS ارسال میشود. باتوجهبه اینکه وبسایت پارسپک از پروتکل HTTPS استفاده میکند، درخواست شما از پورت ۴۴۳ برای پردازش وارد وب سرور آیآیاس میشود. درصورتیکه محتوای درخواستی شما در سرور وجود داشته باشد، وب سرور IIS صفحه درخواستی شما را بههمراه تمام محتوای متنی، تصویری و.. آن به مرورگر میفرستد و مرورگرتان نیز صفحه درخواستی را به شما نمایش میدهد. این تمام کاری است که وب سرور IIS انجام میدهد.
نحوه پردازش درخواستها در IIS
یک وب سرور معمولی، میتواند از دو مدل برای پردازش درخواستهای وب استفاده کند:
۱. درخواستها را براساس مدل تک رشتهای (Single-Thread) پردازش کند.
۲. برای هر درخواست جداگانه، یک رشته جدید (Thread-Per-Request) ایجاد کند.
مدل پردازشی IIS سیستم ایجاد رشته جدید برای هر درخواست یا Thread-Per-Request است که معمولاً به یک Thread Pool دسترسی پیدا کرده و برای هر درخواست یک رشته جدید ایجاد میکند.
براساس این سیستم درخواستها براساس سیستم درخواست/پاسخ (Request-Response) ساده پردازش میشوند. بهگونهای که کاربر درخواستی به وب سرور ارسال میکند و پاسخی برای او ارسال میشود.
معمولاً ارتباط اینترنتی بین سرویس گیرنده و وب سرور توسط پروتکل HTTP یا بهصورت امن HTTPS انجام میشود.
IIS برای پردازش درخواستها از معماری دو لایه استفاده میکند که شامل دو جز اصلی بهصورت زیر است:
- Kernel Mode
- User Mode
Kernel Mode چیست؟
زمانیکه اجزای سیستمعامل در حالت کرنل اجرا میشوند، یک فضای آدرس مجازی مشترک به تمام کدها اختصاص داده میشود. دراینصورت اگر درایوی از حالت Kernel Mode استفاده کند، این درایو از سایر درایوها جدا نمیشود و در یک فضای مشترک با آنها قرار میگیرد. چنانچه این درایو در یک آدرس مجازی اشتباه دادهای بنویسید، ممکن است دادههایش در معرض خطر قرار بگیرد. همچنین، در صورت خرابشدن درایو در حالت Kernel Mode، ممکن است کل سیستمعامل دچار خرابی شود. این حالت عمدتاً زمانی استفاده میشود که یک فرایند قابل اعتماد و عمدتاً آسیبناپذیر وجود داشته باش باشد. هرگونه خرابی پیش آمده در حالت هسته میتواند آسیبهای زیادی را به خود سیستم وارد کند. kernel Mode محلی است که میتوانید فایل HTTP.SYS را در آن پیدا کنید.
User Mode چیست؟
حالت User Mode محدودتر از kernel Mode است. با این حالت، کدهای اجرا شده نمیتوانند به سختافزار یا حافظه مرجع دسترسی پیدا کنند و در نتیجه محیطی امنتر برای کار در اختیارتان قرار می گیرد. در حالت یوزر سیستمعامل نمیتواند به آدرسهای مجازی دسترسی پیدا کند. با اجرای یک برنامه، ویندوز برای آن فرایند جداگانهای ایجاد خواهد کرد که حاوی فضای آدرس مجازی و خصوصی است و نمیتواند دادههای درایوهای دیگر را تغییر دهد. بدین ترتیب، برنامهها بهصورت جداگانه اجرا میشوند و درصورت خرابی یکی از آنها، برنامههای دیگر تحت تاثیر قرار نمیگیرند. بنابراین، اگر اشتباهی مرتکب شوید، عواقب آن به اندازه خطا در حالت کرنل ویرانکننده نیست. کدهای اجرا شده در حالت User Mode به APIها دستور میدهد که با تجهیزات و Memory Reference ارتباط برقرار کنند که بسیار امنتر از حالت kernel است.
عملیات پردازش درخواستها در IIS
هدف از پردازش Kernel Mode استفاده از HTTP.SYS برای پذیرش درخواستهای کاربر ورودی و ارجاع آنها به Application Pool است. این فرایند زمانی آغاز میشود که مشتری یا کاربر نهایی URL وبسایت را وارد میکند. این درخواست معمولاً درخواست دسترسی به صفحه HTTP.SYS است. درواقع، کاربر درخواست دسترسی به یک صفحه وب را ارسال و HTTP.SYS آن را دریافت خواهد کرد.
در سطح User Mode یک Web Admin Services یا WAS وجود دارد که درخواستها را از HTTP.SYS دریافت و به Application Pool ارسال میکند.
زمانیکه Application Pool درخواست را از HTTP.SYS دریافت میکند، فیلتر ISAPI توسط فرایند IIS worker یا w3wp.exe بارگذاری میشود. اگر یک صفحه ASPX باشد، فرایند Worker HttpRuntime.ProcessRequest و گاهی اوقات aspnet_isapi.dll را نیز باز میکند.
HttpRuntime مجموعهای از اشیاء HttpApplication را ایجاد میکند که ازطریق HTTP ارسال میشوند و با ماژولهای HTTP بهطور مداوم تا زمانیکه صفحه ASP.NET از HTTP Handler ریکوئست داشته باشد.هنگامیکه درخواست مسیر HTTP را تکمیل کرد، لود صفحه شروع میشود.
انواع نسخههای IIS
نسخههای مختلفی از وب سرور آیآیاس وجود دارد که مایکروسافت آنها را طی سالهای مختلف ارائه کرده است. در جدول زیر خلاصهای از نسخههای IIS و سیستمعاملهای سازگار با آن از ابتدای پیدایش تا به امروز آورده شده است.
نسخههای IIS | سیستمعامل |
۱.۰ | ویندوز NT 3.51 SP3 |
۲.۰ | ویندوز NT سرور 4.0 |
۳.۰ | ویندوز NT سرور 4.0 Service Pack 3 |
۴.۰ | بهصورت جداگانه برای دانلود ارائه شد |
۵.۰ | ویندوز ۲۰۰۰ |
۵.۱ | ویندوز XP |
۶.۰ | ویندوز سرور ۲۰۰۳ |
۷.۰ | ویندوز Vista و ویندوز سرور ۲۰۰۸ |
۷.۵ | ویندوز ۷ و ویندوز سرور ۲۰۰۸ آر۲ |
۸.۰ | ویندوز ۸ و ویندوز سرور ۲۰۱۲ |
۸.۵ | ویندوز ۸.۱ و ویندوز سرور ۲۰۱۲ آر۲ |
۱۰ | ویندوز ۱۰ و ویندوز سرور ۲۰۱۶ و ۲۰۱۹ |
باتوجهبه اینکه نسخههای قبل از IIS 6 برای استفاده تجاری گزینه مناسبی نیستند، بنابراین ما فقط در مورد نسخههایی که بعد از آن ارائه شدهاند صحبت خواهیم کرد.
IIS 6 .۱
این قسمت از آموزش IIS در ویندوز سرور را به بررسی قابلیتهای انواع نسخههای وب سرور آیآیاس اختصاص دادهایم. با نسحه ۶ و ویندوز سرور ۲۰۰۳ شروع میکنیم که جزو قدیمیترین نسخههای وب سرور IIS است. این نسخه پشتیبانی برای IPv6 را اضافه کرد، اما آپدیت بیشتری برای نسخه قبلی ارائه نداد. از نظر مایکروسافت، این حداقل قابلیت مورد نیاز برای عملکرد در یک محیط سازمانی سریع است.
IIS 7 .۲
IIS 7 نسخه بعدی از این وب سرور است. این نسخه با ویندوز ویستا سازگار است و اقدامات امنیتی و پشتیبانی را برای فریمورک داتنت افزایش داده است.
IIS 7.5 .۲
IIS 7.5 با پشتیبانی از TLS 1.1 و ۱.۲ در ویندوز ۷ در دسترس قرار گرفته است.
IIS 8 .۳
IIS 8 یا ویندوز وب سرور ۲۰۱۲ شامل پشتیبانی از SNI است. همچنین دارای یک پیشنهاد پشتیبانی عمومی است که تا سال ۲۰۲۳ در دسترس قرار دارد.
IIS 8.5 .۴
IIS 8.5 برای ویندوز ۸.۱ ارائه شده و شامل قابلیتهای لاگین اضافی و ابزار فعالسازی وبسایت داینامیک است.
IIS 10 .۵
IIS 10 از HTTP/2 و Windows PowerShell 5.0 پشتیبانی میکند.
ویژگیهای وب سرور IIS
وب سرور IIS محبوبیت بسیار بالایی دارد و استفاده از آن بسیار گسترش یافته است. این سرور طیف وسیعی از ویژگیهای مفید ارائه میدهد و ابزاری موثر برای بسیاری از مدیران فناوری اطلاعات بهشمار میرود. معمولاً، IIS برای میزبانی وبسایتها و برنامههای کاربردی با زبان ASP.NET استفاده میشود، اگرچه برای استفاده بهعنوان یک سرور با دسترسی FTP برای میزبانی سرویسهای WCF نیز در دسترس است و درصورت گسترش میتواند پلتفرمهای دیگر مانند PHP را نیز میزبانی کند.
۱. Application Pools
در واقع Application Pools بخش مهمی از وب سرور IIS را تشکیل میدهد. یک مجموعه برنامه کاربردی میتواند تعداد زیادی فرایند کارگر IIS در حال اجرا وجود داشته باشد. این فرایندهای کارگر مسئول اجرای نمونههای برنامه هستند.
در IIS، بعضی برنامههای کاربردی بهصورت پیشفرض ایجاد میشوند. به عنوان مثال نسخه ۲.۰ و v4.0 را در نظر بگیرید که احتمالاً در حالت کلاسیک یا یکپارچه هستند. اگر یک Pool یکپارچه باشد، ASP.NET بخشی از خط لوله درخواست IIS است اما اگر کلاسیک باشد، یک خط لوله برای IIS و یک خط لوله جداگانه برای ASP.NET وجود دارد. بهطورکلی، حداقل از زمانی که IIS 8 منتشر شده است، از حالت یکپارچه بیشتر استفاده میشود.
۲. احراز هویت
سرور IIS دارای گزینههای احراز هویت، از جمله Windows Auth ،Basic و ASP.NET است. اگر از Windows Active Directory استفاده میکنید، Windows auth بسیار مفید است، زیرا این امکان را به شما میدهد که بهطور خودکار ازطریق حساب دامنه خود وارد برنامههای وب شوید.
۳. امنیت IIS
- IIS دارای ویژگیهای امنیتی است، مانند؛
- ابزارهای کمکی برای مدیریت گواهیهای TLS؛
- اتصال بهگونهای که SFTP و HTTPS را میتوان فعال کرد؛
- امکان فیلترکردن درخواستها برای اینکه بتوانید بهطور مؤثری ترافیک را در لیست سفید و یا لیست سیاه قرار دهید؛
- میتوانید قوانین دسترسیها و درخواستهای Log را پیادهسازی کنید و به مجموعهای از عملیات امنیتی FTP دسترسی یابید؛
۴. مدیریت از راه دور
ابزارهای مدیریتی ریموت به IIS اجازه میدهند که از طریق CLI یا از طریق PowerShell بهراحتی مدیریت شود. شما میتوانید اسکریپت را خودتان ایجاد کنید که برخی از مدیران فناوری اطلاعات برای آن ارزش خاصی قائل هستند چراکه انعطافپذیری و کنترل نهایی را ارائه میدهد.
درنهایت، میتوان گفت، IIS وب سروری همهکاره و انعطافپذیر است. اگر آن را گسترش دهید، میتواند کاربردهای بسیار بیشتری از میزبانی برنامههای ASP.NET داشته باشد. با گسترش آن، میتوان یک سرور Windows IIS پایدار، انعطافپذیر و موثر ایجاد کرد.
مزایای وب سرور IIS چیست؟
ممکن است از خود بپرسید که «مزایای وبسرور IIS چیست؟»، ازجمله مزایای این وب سرور قدیمی و پرطرفدار میتوان به کاربرد گسترده آن در زمینههای مختلف از میزبانی وب گرفته تا وب اپلیکیشنهای تجاری و خدمات WCF اشاره کرد. این وب سرور امنیت بالایی دارد و با استفاده از قابلیتهای احراز هویتی آن مانند Basic ASP.NET و Windows auth میتوانید اقدامات مختلفی ازجمله فیلترکردن لیست سفید، فعالکردن پروتکل HTTPS و… را در آن انجام دهید.
مدیریت این وب سرور بسیار آسان است و میتوانید ازطریق ابزارهایی همچون CLI یا PowerShell آن را از راه دور مدیریت و کنترل کنید. همچنین، قابلیتی بهنام Application Pools در IIS وجود دارد که به شما کمک میکند برنامههای وب خود را با امنیت و دسترسی فراوان در IIS تفکیک کنید. مقیاسپذیری و قابلیت اطمینان را میتوان از دیگر مزایای وب سرور IIS معرفی کرد که این امکان را به شما میدهد زیرساخت مورد نظرتان را با کارایی درخورتوجه پیادهسازی کنید. با این کار امکان میزبانی وبسایتهای پربازدید در چندین وب سرور IIS با قابلیت تعادل بار و مسیریابی درخواست برنامه (ARR) فراهم میشود.
لودبالانسرها یا متعادلکنندههای بار با استفاده از الگوریتمهای پیشرفته ترافیک ورودی را بین چندین وب سرور IIS Server Farm توزیع میکنند. این در حالی است که ARRها بهترین سرور محتوا را برای پاسخگویی به درخواستهای کاربران برمیگزینند. درنهایت، IIS Server Farm با حذف و اضافه سرورها این امکان را به شما میدهند بتوانید ترافیک وبسایتها را بهصورت داینامیک (پویا) مدیریت کنید.
نقاط ضعف IIS چیست؟
درکنار تمام مزایایی که IIS در ویندوز سرور ارائه میدهد، نقاط ضعفهایی نیز دارد که هرچند کم هستند اما نمیتوان بهراحتی از آنها چشمپوشی کرد. پاسخ پرسش «نقاط ضعف IIS چیست؟» در یکم جمله خلاصه میشود، سرعت کم و وجود ضعف امنیتی است که نفوذ افراد غیرمجاز و سودجو را به وبسایتها و وب اپلیکیشنها ممکن میکند. اگرچه مایکروسافت برای چالشهای امنیتی IIS راهکارهای مختلفی را ارائه کرده است، اما با ظهور وب سرورهای سریع و امن مانند آپاچی، انجینایکس و لایتاسپید، محبوبیت IIS کاهش چشمگیری پیدا کرد. بهطوری که تخمین زده میشود فقط ۳۰ درصد از وبسایتها از این وب سرور استفاده میکنند. همچنین، این وب سرور ازنظر سرعت و مصرف بهینه سرور درمقایسهبا سایر وب سرورها مانند لایت اسپید کُندتر است. اما برای وبسایتهای مبتنیبر ASP و NET. هنوز هم انتخاب عالی بهشمار میرود. پرداخت هزینه را میتوان یکی دیگر از نقاط IIS بهشمار آورد. چراکه سایر وب سرورها مانند آپاچی رایگان و متنباز هستند و برای استفاده از آنها به پرداخت هزینه نیاز ندارید. درحالیکه برای استفاده از قابلیتهای وب سرور IIS به پرداخت هزینه نیاز است.