IIS چیست؟ مروری بر وب سرور IIS
مقاله

IIS چیست؟ مروری بر وب سرور IIS

زمانی که درخواستی را برای سرور ارسال می نمایید، تا زمانی که پاسخ شما از سمت سرور ارسال شود نیاز به پردازش های بسیاری است که بخش اعظمی از این پردازش ها توسط وب سرور صورت می گیرد. در مقاله "مقایسه وب سرورهای معروف" برخی از وب سرورهای معروف نام برده شده اند اما در این مقاله به صورت تخصصی در مورد IIS که یک وب سرور مختص پلتفرم Microsoft .NET می باشد؛ صحبت خواهد شد.

IIS چیست؟

اصطلاحات تخصصی زیادی در رابطه با IIS وجود دارند. احتمالا در جستجو برای ابزار مناسب خود با عبارت هایی همچون "IIS web server" ،"IIS server" و "online IIS server" مواجه شده اید. برای درک اصطلاحات مربوطه، ابتدا باید نحوه عملکرد IIS را درک کنید.

IIS یک وب سرور مختص پلتفرم Microsoft .NET می باشد. به همین خاطر، با عنوان Windows Web Server نیز شناخته می شود. اگرچه امکان اجرای این وب سرور بر روی سیستم عامل های لینوکس و مک با استفاده از ابزاری به نام Mono وجود دارد، اما به علت عدم پایداری و اطمینان پذیری در سیستم عامل های مذکور، توصیه نمی شود. با توجه به اینکه IIS برای پلتفرم Microsoft .NET طراحی شده است، پیاده سازی آن در بستر ویندوز به مراتب از قابلیت اطمینان بیشتری برخوردار است.

IIS چه کاری انجام می دهد؟ 

به عنوان وب سرور این مورد، مسئول پردازش وب اپلیکیشن های سرور است. IIS را می توانید به عنوان واسطه ای در نظر بگیرید که مسئول پردازش پیام های اپلیکیشن از پورت های پیشفرض TCP است. به عنوان مثال، پورت پیشفرض برای ترافیک HTTPS عدد 443 و پورت پیشفرض برای ترافیک HTTP عدد 80 می باشد.

ترافیک ورودی وب سرور IIS، گاها به عنوان درخواست وب (web request) نیز شناخته می شود. مطابق تنظیمات پیشفرض که بالاتر توضیح داده شد، ترافیک از طریق پورت های 443 و 80 وارد می شود. سپس این ترافیک ورودی یا درخواست وب به چند روش توسط وب سرور IIS قابل پردازش خواهد بود.

نسخه های IIS

در جدول زیر به طور خلاصه نسخه های مختلف IIS و سیستم عامل های مربوط به آن نسخه ارائه شده است.

توجه داشته باشید که IIS 9 وجود ندارد. مایکروسافت همانند شیوه نامگذاری سیستم عامل های ویندوز، از عدد 9 عبور کرده و مستقیما نسخه 10 وب سرور IIS را منتشر کرده است.

نسخه IIS

سیستم عامل

1.0

Windows NT 3.51 SP 3

2.0

Windows NT Server 4.0

3.0

Windows NT Server 4.0 Service Pack 3

4.0

به صورت مجزا برای دانلود ارائه شد

5.0

Windows 2000

5.1

Windows XP Professional

6.0

Windows Server 2003

7.0

Windows Vista - Windows Server 2008

7.5

Windows 7 - Windows Server 2008 R2

8.0

Windows 8 - Windows Server 2012

8.5

Windows 8.1 - Windows Server 2012 R2

10

Windows 10 - Windows Server 2016 & 2019

جدول (1)

ویژگی های وب سرور IIS

وب سرور IIS بسیار محبوب و پرکاربرد است. این مورد طیف وسیعی از ویژگی های مفید را ارائه می دهد و ابزاری کارآمد برای بسیاری از مدیران IT به شمار می رود. معمولا از IIS جهت میزبانی وب سایتهای ASP.NET و وب اپلیکیشن ها استفاده می شود، اما می توان از آن به عنوان FTP server، میزبان سرویس های WCF (فریم ورکی جهت ایجاد اپلیکیشن های سرویس گرا) و همچنین در صورت توسعه، به عنوان میزبان سایر پلتفرم ها (همانند php) استفاده کرد.

ویژگی های کلیدی IIS به شرح ذیل می باشند:

  • Application pools: Application pool ها بخش مهمی از سیستم IIS را تشکیل می دهند. یک application pool به تنهایی می تواند صفر یا تعداد زیادی IIS worker processes در حال اجرا داشته باشد. این worker process ها مسئول اجرای اپلیکیشن ها هستند. در IIS، برخی از application pool های خاص به طور پیش فرض ایجاد می شوند. به عنوان مثال، v2.0 و v4.0 را در نظر بگیرید، که احتمالا در یکی از حالت های classic یا integrated قرار دارند. اگر یک pool در حالت integrated باشد، ASP.NET نیز بخشی از IIS request pipeline است. اگر در حالت classic باشد، یک pipeline برای ASP.NET و یک pipeline مجزا برای IIS وجود دارد. به طور کلی، استفاده از حالت integrated متداول تر است (حداقل از زمان انتشار IIS 8). حالت classic یا v2.0 در صورت عدم ضرورت توصیه نمی شود، زیرا این حالت برای پشتیبانی از اپلیکیشن های قدیمی است.
  • احراز هویت: وب سرور IIS جهت احراز هویت گزینه هایی همچون Windows auth ،Basic و ASP.NET ارائه می دهد. اگر از Windows Active Directory استفاده می کنید، Windows auth گزینه مناسب تری است. زیرا به شما امکان می دهد از طریق حساب دامنه خود به طور خودکار وارد وب اپلیکیشن ها شوید.
  • امنیت: IIS دارای ویژگی های امنیتی همانند ابزارهای مدیریت TLS certificate ها و binding است تا امکان فعالسازی HTTPS و SFTP وجود داشته باشد. همچنین دارای قابلیت فیلتر درخواست ها می باشد که بوسیله آن امکان قرار دادن ترافیک در لیست سیاه یا سفید به طور موثر وجود خواهد داشت. شما می توانید نسبت به اجرای احراز هویت، پیاده سازی سطح دسترسی (permission) و لاگ برداری از درخواست ها اقدام نمایید؛ همچنین به مجموعه ای از توابع امنیتی FTP دسترسی خواهید داشت.
  • Remote management: این ویژگی امکان مدیریت IIS از طریق CLI (رابط خط فرمان) یا PowerShell را فراهم می کند. شما می توانید اسکریپت را خودتان ایجاد نمایید که این مورد برای مدیران IT بسیار ارزشمند است زیرا نهایت انعطاف پذیری و کنترل را ارائه می دهد.

نحوه پردازش درخواست ها توسط IIS

به طور معمول، یک وب سرور می تواند از دو مدل پردازشی اصلی استفاده نماید. به زبان ساده، وب سرور می تواند درخواست ها را یا بر طبق مدل تک رشته ای (single-thread) پردازش کند یا می تواند یک رشته جدید برای هر درخواست مجزا ایجاد نماید. روش دوم یا سیستم thread-per-request مدلی است که توسط IIS استفاده می شود و اساسا به یک مخزن رشته (thread pool) دسترسی دارد و برای هر درخواست یک رشته جدید از thread pool می گیرد.

درخواست ها معمولا بر اساس یک درخواست و پاسخ (request-response) ساده پردازش می شوند. کلاینت (سرویس گیرنده) یک درخواست ارسال می کند و یک پاسخ توسط وب سرور ارسال می شود. به طور معمول، ارتباط اینترنتی بین کلاینت و وب سرور توسط پروتکل HTTP اجرا می شود.

IIS از موتور پردازش خود و یک معماری پردازشی دو لایه (دو حالته) که عبارتند از حالت کرنل و حالت یوزر استفاده می کند.

Kernel mode: هنگامی که از حالت کرنل استفاده می شود، کد می تواند هر دستوری را اجرا کند و به تجهیزات متصل شده دسترسی کامل دارد. این حالت عمدتا زمانی مورد استفاده قرار می گیرد که پروسه قابل اطمینان و مصون باشد. هرگونه crash و خرابی در حالت کرنل می تواند آسیب بسیار زیادی به خود سیستم وارد کند. همچنین لایه کرنل مکانی است که شما می توانید فایل HTTP.SYS را پیدا کنید.

User mode: حالت یوزر محدودتر است. با استفاده از این حالت، کد اجرا شده نمی تواند به سخت افزار و حافظه مرجع دسترسی داشته باشد و محیط امن تری جهت کار فراهم می کند. اگر اشتباهی در این لایه رخ دهد، بعید است عواقب آن به اندازه خطا در حالت کرنل مخرب باشد. کد اجرا شده در این لایه به API ها دستور می دهد تا با تجهیزات و حافظه مرجع ارتباط برقرار کنند که بسیار امن تر از حالت کرنل است. IIS Admin Service ،application pools و virtual directory ها در این لایه قرار دارند.

هدف از حالت کرنل استفاده از HTTP.SYS جهت پذیرش درخواست های ورودی کلاینت است تا بتواند آنها را به application pool فوروارد کند. این پروسه زمانی آغاز می شود که کلاینت یا کاربر نهایی آدرس URL وب سایت را وارد می کند. در اصل کلاینت درخواست دسترسی به یک صفحه وب را ارسال و HTTP.SYS این درخواست را دریافت می کند.

در سطح یوزر، Web Admin Services یا WAS وجود دارد که درخواست ها را از HTTP.SYS گرفته و به application pool مربوطه تحویل می دهد.

مروری بر وب سرور IIS

تصویر(1)

هنگامی که application pool درخواست را دریافت می کند، ISAPI filter توسط worker process یا w3wp.exe لود می شود. IIS از ISAPI extension ها جهت مدیریت درخواست ها برای منابع مختلف استفاده می کند. زمانی که ASP.NET نصب می شود، ISAPI extension مربوط به خود را که aspnet_isapi.dll نام دارد نیز نصب کرده و اسکریپت mapping را به iis اضافه می کند. (با استفاده از اسکریپت mapping، امکان ارتباط دادن و ارجاع درخواست های صفحات asp به فایل dll مربوطه جهت پردازش وجود دارد.)

زمانی که worker process فایل aspnet_isapi.dll را بارگذاری می کند باعث ایجاد یک HTTPRuntime می شود که نقطه شروع (entry point) یک اپلیکیشن است. HTTPRuntime یک کلاس است که متد ProcessRequest را فراخوانی و پردازش درخواست را آغاز می کند. وقتی این متد فراخوانی می شود، یک شی HTTPContext ایجاد می شود که از طریق مشخصه های HTTPContext.Current قابل دسترس است. این شی تا مدت زمانی که درخواست وجود داشته باشد باقی خواهد ماند. با استفاده از HttpContext.Current دسترسی به شی هایی همچون Request، Response، Session و غیره امکان پذیر خواهد بود.

سپس HttpRuntime با کمک کلاس HttpApplicationFactory، شی HttpApplication را بارگذاری می کند. همه درخواست ها جهت رسیدن به HTTPHandler باید از HTTPModule های مربوطه عبور کنند. HTTPModule ها کلاس هایی هستند که به درخواست های ورودی دسترسی دارند. این لیست از HTTPModule ها توسط HTTPApplication پیکربندی می شوند. به این مفهوم HTTPPipeline گفته می شود. 

مروری بر وب سرور IIS

تصویر(2)

HTTP Handler ها نقطه ی پایان (endpoint) در HTTP pipeline می باشند. تمامی درخواست ها باید از HTTP module ها عبور کرده تا به HTTPHandler برسند. HTTP Handler خروجی منابع درخواستی را تولید می کند. 

نتیجه گیری

بصورت کلی، IIS یک وب سرور چند منظوره، انعطاف پذیر و ایمن با قابلیت کانفیگ بالا است که برای میزبانی هر موردی در بستر وب مناسب است. چنانچه توسعه داده شود، این وب سرور می تواند کاری فراتر از میزبانی اپلیکیشن های ASP.NET انجام دهد. معماری باز و مقیاس پذیر IIS، آن را برای مدیریت دشوارترین درخواست ها از media streaming تا وب اپلیکیشن ها مناسب کرده است.

اشتراک گذاری:

نظرات

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *