مزایا و معایب لایه بندی مدل های شبکه
چگونه می توان پیچیدگی های یک سیستم ارتباطی بسیار بزرگ را بصورت سازمان یافته و قابل درک توضیح داد؟ به نظر شما ، آیا بهتر نیست زمانیکه با کوهی از مشکلات مواجه میشوید، ابتدا سعی کنید پیچیدگی ها و مسائل روبروی خود را به قسمت های کوچکتر شکسته و مسائل کوچک شده مرتبط و هم موضوع را در یک گروه قرار دهید ( گروه بندی / لایه بندی ) و بعد گروه به گروه با آنها مواجه شده و برای حل آنها راه حل مناسبی پیدا کنید؟ البته این کار در کنار مزیت هایی که دارد معایبی نیز در پی خواهد داشت مانند تکرار اجتناب ناپذیر برخی موضوعات در بخش های مختلف .
برقراری ارتباط و تبادل اطلاعات بین ماشین های مبدا و مقصد روی بستر شبکه ، نیازمند همکاری تنگاتنگ، بین طیف گسترده ای از پروتکل ها و سرویس های مختلف شبکه در ماشین های مبدا و مقصد می باشد. حال مهمترین پرسش آن است که چگونه این مجموعه بزرگ و پرتعداد پروتکل ها و سرویس های مختلف را نگهداری و مدیریت کنیم ؟ از چه روشی استفاده کنیم تا در زمان بروز مشکلات در کوتاه ترین زمان ممکن، عملیات عیب یابی را با موفقیت خاتمه دهیم؟ اگر نیاز به پروتکل یا سرویس جدیدی بود ، چگونه بدون بروز مشکل در روند فعالیت سایر پروتکل ها ، پروتکل جدید را به مجموعه پروتکل فعلی اضافه کنیم و آنها را با یکدیگر مرتبط سازیم؟
دلایل لایه بندی مدل های شبکه
همانطور که در ابتدای مقدمه گفته شد، بهترین راه برای غلبه بر کوه بزرگی از مشکلات ، تقسیم بندی آن مشکل به بخش های کوچکتر و حل تک تک آن بخش ها می باشد. تقسیم بندی پروتکلها و سرویسهای شبکه و قرار دادن آنها در لایههای مختلف، نه تنها سبب سادگی فرآیند مدیریت آنها می شود، بلکه انعطافپذیری بیشتری در هنگام توسعه پروتکل جدید یا ایجاد تغییرات لازم ، ارائه میدهد.
برای این منظور طراحان و توسعه دهندگان بستر شبکه ، سعی دارند تا از معماری ها و مدل هایی برای طراحی بستر شبکه استفاده کنند که سرعت توسعه و انعطاف پذیری در آنها بالا باشد و به راحتی بتوان در شرایط مختلف ، آنها را مدیریت و عیب یابی نمود.
یکی از راه حل های مناسب برای افزایش سرعت توسعه شبکه ، استفاده از معماری های شبکه لایه بندی شده می باشد زیرا لایه بندی می تواند مشکلات پیچیده را به قطعات کوچکتر و قابل کنترل تر تبدیل کند. در اینگونه معماری ها ، پروتکل های شبکه با توجه به اهداف ، ساختار و نحوه عملکردشان، گروه بندی شده و هر گروه در یک لایه قرار می گیرد. درنتیجه پروتکل های هر لایه از مدل شبکه مورد نظر، نشان دهنده نحوه عملکرد آن لایه در مدل می باشند.
<< مدل 7 لایه OSI >>
همانطور که در شکل فوق ( مدل 7 لایه OSI ) میبینید، پروتکل های این مدل با کمک معماری لایه ای ، در 7 گروه یا 7 لایه مرتبط به هم قرار داده شده اند. در این مدل لایه بندی ، لایه پایینی به لایه بالایی خود با کمک یک واسط کاربری سرویس می دهد.
حال سئوال مهم آن است که مدل لایه ای چه ویژگی هایی دارد که سبب افزایش سرعت توسعه شبکه می گردد. در ادامه به بررسی مزایا و معایب لایه بندی مدل های شبکه می پردازیم.
مزایای لایه بندی مدل های شبکه
1- طراحی (Design) : در یک مدل لایه ای ، چون هر لایه بصورت جداگانه طراحی می شود و اهداف، ساختار و پروتکل های خاص خود رو دارد، در نتیجه یک طراح می تواند در یک لایه خاص تخصص داشته باشد و فقط به توسعه آن لایه بپردازد ، بدون اینکه نگرانی راجع به وضعیت لایه های دیگر داشته باشد. همانگونه که می بینید فرآیند طراحی در چنین مدلی ساده تر بوده و اضافه کردن خدمات جدید و مدیریت زیرساختهای شبکه آسان تر می باشد.
2- یادگیری (Learning) : لایه بندی سبب می شود تا یک مجموعه بسیار پیچیده از مباحث به گروه های کوچک تر و البته به هم پیوسته تبدیل شوند و در نتیجه یادگیری و درک وظایف و فعالیت های هر لایه ساده تر می شود.
3- انعطاف پذیری (Flexibility) : معماری لایه ای باعث افزایش میزان انعطاف پذیری مدل در زمان ایجاد تغییرات و توسعه خدمات شبکه می گردد. در مدل لایه ای ، وقتی تغییری روی یک لایه ایجاد می شود، تاثیر آن روی لایه های دیگر به حداقل میرسد در حالیکه اگر مدل شبکه از نوع تک لایه بود، هر تغییری روی مدل، کل مدل را تحت تاثیر قرار می داد. در نتیجه معماری لایه ای سبب کاهش هزینه و افزایش سرعت انجام تغییرات خواهد شد.
4- عیب یابی (Troubleshooting) : در مدل های لایه بندی شده، چون برای هرلایه یک سری اهداف خاص تعیین شده و تمام پروتکل ها و داده های درون آن لایه به آن هدف مربوط می شوند، اگر در حین فعالیت مدل مشکلی پیش آید ، به سرعت لایه محل بروز مشکل را شناسایی کرده و تمام تمرکز خود را در آن لایه جهت رفع مشکل قرار می دهیم و زمان و انرژی زیادی را که باید صرف جستجوی محل بروز مشکل در کل مدل ( اگرمدل تک لایه بود) می کردیم، صرفه جویی میشود.
5- پیمانه ای کردن (modularity ) : پیمانه ای کردن یک سیستم بزرگ و پیچیده سبب شود تا پیاده سازی و تغییر سرویس های درون هر لایه ، آسان تر گردد. در چنین مدلی، هر لایه همزمان با پنهان کردن پیچیدگی ها و جزئیات نحوه ارائه خدمات درون خود، به کمک یک واسط کاربری به خوبی طراحی شده ( که بین هر دولایه مجاور هم، قرار دارند) به لایه بالایی خود سرویس می دهد و از لایه زیرین خود سرویس می گیرد. پس اجتناب از پیچیدگی ها سبب بروز خطاهای کمتری خواهد شد.
معایب لایه بندی مدل های شبکه
1- احتمال تکرار برخی از عملکردها در لایه های مختلف . مانند: Error control و Flow control که هم در لایه پیوند داده ها بر روی لینک صورت میگیرد و هم در لایه انتقال بر روی میزبان های مبدا و مقصد انجام میشود.
2- امکان دارد اطلاعات مورد نیاز عملکردهای یک لایه فقط در لایه دیگرموجود باشد. مانند مقدار برچسب زمانی (Time Stamp) که این موضوع باعث نقض هدف استقلال لایه ها خواهد شد.
3- نکته مهم در معماری لایه ای مدل های شبکه آن است که تعداد لایه ها باید در حداقل ممکن که پاسخ گوی تمام نیاز های شبکه است، قرار بگیرد. چون لایه بندی بیش از حد منجر به نقض اصل سادگی و اغلب باعث افزایش پیچیدگی خواهد شد .همچنین چون هر لایه برای انجام امور خود نیاز دارد تا به دیتای دریافتی از لایه قبلی هدر یا تریلر و یا هردو را اضافه کند، در نتیجه هر چه تعداد لایه ها بیشتر شود، سربار بیشتری به سیستم تحمیل می شود . هم سربار مکانی ( چون فریم نهایی بزرگ می شود) و هم سربار زمانی ( چون افزودن هدرها و انجام تغییرات در آنها زمان بر خواهد بود) و سربار بیشتر یعنی هزینه بیشتر.
منابع
1- Computer Networking – A Top Down Approach, 8th, by James Kurose, Keith Ross
2- https://en.wikipedia.org/wiki/OSI_model
3- https://docs.microsoft.com/en-us/windows-hardware/drivers/network/windows-network-architecture-and-the-osi-model
4- https://www.rfc-editor.org/rfc/rfc3439.html