لایه بندی و پروتکل‌ها در شبکه

لایه بندی و پروتکل ها در شبکه – آموزش شبکه درس 10

لایه بندی و پروتکل‌ها در شبکه

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

انتزاعات به صورت طبیعی منجر به لایه‌بندی می‌شوند، به خصوص اگر آن‌ها را برای سیستم‌های شبکه‌ای به کار ببریم. ایده کلی در اینجا آن ایست که شما بتوانید با سرویس‌هایی که به وسیله سخت‌افزار زیر مجموعه کار را شروع کنید و سپس بتوانید یک ترتیب پی در پی از لایه‌ها را ارائه کنید، هر کدام از این لایه‌ها می‌توانند سطح بالاتر و یا انتزاعی‌تر از سرویس را ارائه کنند. این سرویس‌ها در بالاترین لایه‌ها پیاده بر حسب سرویس‌هایی که در لایه‌های پائین‌تر فراهم می‌شوند، پیاده‌سازی می‌گردند. بحث‌هایی که در پست‌های پیش از این به آن اشاره کردیم را به خاطر بیاورید، برای مثال فرض کنید که ما شبکه‌ای ساده در اختیار داریم که دارای دو لایه انتزاعی ساندویچ شکل هستند که در میان لایه برنامه‌های کاربردی و سخت‌افزار قرار گفته اند، برای درک بهتر تصویر 1.8 را مشاهده کنید. لایه بدون هیچ مشکلی بالای سخت‌افزار قرار گرفته است، در این حالت ممکن است اتصال هاست به هاست را فراهم کند و انتزاع کردن این واقعیت را که فراهم می‌سازد که توپولوژی شبکه دلخواه پیچیده که بین دو‌ هاست وجود دارد از بین می‌رود. لایه بعدی در اینجا بر روی سروی اتصال هاست به هاست ایجاد می‌شود و می‌تواند امکان پشتیبانی از کانال‌های پردازنده به پردازنده را فراهم کند، در اینجا انتزاع کردن سبب می‌شود که برای مثال از دست رفتن پیام‌ها که گاهی در شبکه اتفاق می‌افتد، نادیده انگاشته شود.

نمونه‌های از سیستم شبکه لایه‌بندی شده

تصویر 1.8 نمونه‌های از سیستم شبکه لایه‌بندی شده

لایه‌بندی دو ساختار مفید را ایجاد می‌کند. اول، آن سبب می‌شود که مشکلات ساختن یک شبکه به بخش‌های قابل مدیریت کردن تجزیه شود. در این جا به جای آن که ما به یک قطعه نرم‌افزاری و یا سخت‌افزاری یکپارجه روبرو باشید، شما می‌توانید چند لایه را پیاده‌سازی کنید و هر کدام از آن‌ها مشکلات بخش معینی از کار را حل کنند. دوم، آن امکان ماژولار (Modular) کردن طراحی را به شما می‌دهد. اگر شما تصمیم بگیرید که سرویس‌های جدیدی را به شبکه خودتان اضافه کنید، تنها کاری که باید انجام دهید آن است که به اصلا کارکرد در هر کدام از لایه‌ها بپردازید و از تابع‌ها و عملکردهای مشخص در تمام لایه‌ها مجددا استفاده کنید تا به نتیجه نهایی برسید.

هرچند فکر کردن به سیستم به عنوان یک سری از لایه‌های پشت سر هم می‌تواند ساده کردن بیش از حد مسئله ما باشد. در بسیاری از زمان‌ها در اینجا چندین انتزاع‌سازی باید در هر سطح از سیستم صورت بگیرد، هر کدام از آن‌ها نیز می‌توانند سرویس‌های متفاوتی را برای لایه‌های بالاتر از خودشان ایجاد کنند، اما همگی آن‌ها بر روی انتزاع‌سازی سطح پائین یکسانی ساخته می‌شوند. برای درک این موضوع، دو نوع کانالای که پست‌های پیش از این توضیح داده شده بود را بررسی کنید. یک از ان‌ها سرویس درخواست/پاسخ را فراهم می‌کرد و دیگری نیز پشتیبانی کننده جریان پیام است. این دو کانال می‌توانند در سطح یکسانی از سیستم‌های شبکه‌سازی چندسطحی به صورتی که در تصویر 1.9 می‌بینید، ارائه شوند.

سیستم لایه‌بندی با استفاده از انتزاع‌های مختلف در دسترس در یک لایه مشخص

تصویر 1.9، سیستم لایه‌بندی با استفاده از انتزاع‌های مختلف در دسترس در یک لایه مشخص

با استفاده از این بحث لایه‌بندی به عنوان یک اساس، ما آماده می‌شویم که بتوانید معماری شبکه‌ها را به صورت بسیار دقیق تری توضیح دهیم. برای تازه کار، اشیا انتزاعی که لایه‌های سیستم شبکه را می‌سازند، به عنوان پروتکل (Protocol) نامیده می‌شوند. به همین خاطر، یک پروتکل می‌تواند سرویس‌های ارتباطی را فراهم کند که اشیاء سطح بالاتر (مانند نرم‌افزارهای پردازشی یا پروتکل‌های سطح بالاتر) برای تبادل پیام‌ها از ان استفاده کنند. برای مثال، ما می‌توانیم اینگونه تصور کنیم که شبکه می‌تواند پروتکل‌های درخواست/پاسخ و جریان پیام را پشتیبانی کند، که مطابق با کانال‌هایی است که در بالا برای درخواست/پاسخ و یا جریان پیام توضیح داده شده است.

هرکدام از این پروتکل‌ها در دو رابط کاربری متفاوت تعریف شده است. در ابتدا، آن به تعریف یک رابط کاربری سرویس برای اشیا دیگر در همان کامپیوتری می‌پردازد که می‌خواهد از سرویس‌های ارتباطی آن استفاده کند. این رابط کاربری سرویس عملیات‌های که اشیا محلی می‌توانند بر روی یک پروتکل انجام دهند را تعریف می‌کند. برای مثال، پروتکل درخواست/پاسخ، می‌تواند عملیات‌هایی که به وسیله هر کدام از یک اپلیکیشن‌ها انجام می‌شود را پشتیبانی کند و در نتیجه می‌تواند به ارسال و دریافت پیام‌ها بپردازد. یک پیاده‌سازی از پروتکل HTTP، می‌تواند یک عملیات را برای واکشی کردن یک صفحه‌هایپرتکس از طریق یک سرور راه دور پشتیبانی کند. یک اپلیکیشن مانند مرورگر وب می‌تواند این چنین عملیاتی را در هر جایی که مرورگر نیازمند آن است انجام دهند، که بتوانند یک صفحه جدید را به دست بیاورند (برای مثال، زمانی که کاربر بر روی یک لینک در صفحه نمایش فعلی کلیک می‌کند).

دوم، یک پروتکل یک رابط کاربری همتا را برای طرف مقابل (همتای خود) در ماشین دیگر تعریف می‌کند. این رابط کاربری دوم، فرم و معنای پیام‌های تبادل شده میان پروتکل همتای خود را تعریف می‌کند، تا بتواند یک سرویس ارتباطی را پیاده‌سازی کند. این می‌تواند راهی را تعیین کند که در آن یک پروتکل درخواست/پاسخ بر روی یک ماشین به ارتباط با همتای خود در ماشین دیگر بپردازد. برای مثال، در این مورد HTTP، پروتکلی است که تعیین می‌کند که چطور یک دستور GET شکل بگیرد، و چه آرگومان‌هایی باید با این دستور به کار گرفته شود و چطور یک سرور وب در زمانی که اینچنین دستوری را دریافت می‌کند، به آن پاسخ داده شود.

به زبان خلاصه‌تر، یک پروتکل تعریف کننده سرویسی ارتباطی است که آن به صورت محلی آن را صادر می‌کند (رابط کاربری سرویس) ،این کار همراه با یک مجموعه از قوانین هدایتی انجام می‌شود، که این پیام با همتا و یا همتایان آن‌ها صورت می‌گیرد که بتواند این سرویس (رابط کاربری همتاها) را پیاده‌سازی کند. ان شرایط در تصویر 1.10 نمایش داده شده است.

رابط‌های کاربری سرویس و رابط‌های کاربری همتا

تصویر 1.10: رابط‌های کاربری سرویس و رابط‌های کاربری همتا

یک مثال از یک گراف پروتکل

تصویر 1.11 یک مثال از یک گراف پروتکل

به جز لایه سخت‌افزاری، که در اینجا همتایان به صورت مستقیم با هر کدام از موارد بر روی یک مدیوم فیزیکی، ارتباطات همتا به همتا به صورت غیر مستقیم خواهد بود، هر کدام از پروتکل‌های ارتباطی با همتای خود به وسیله ارسال پیام با برخی از پروتکل‌های سطح پائین‌تر خودش ارتباط بر قرار می‌کند که هر کدام از آن‌ها نیز پیام‌هایی را به همتایان خود تحویل می‌دهند. افزون بر این، در اینجا به صورت پتانسیل بیشتر از یک پتاسیل در هر سطح وجود دارد، هر کدام از آن‌ها نیز سرویس‌های ارتباطی متفاوتی را فراهم می‌آورند. به همین خاطر، ما سوئیتی از پروتکل‌ها را ارائه می‌کنیم که با کمک آن یک سیستم شبکه با یک گراف پروتکل ساخته می‌شود. گره‌های هر گراف به صورت متناظر نشان دهنده پروتکل‌ها هستند، و لبه‌ها نیز نشان دهنده وابستگی به یک رابطه می‌باشند. برای مثال، تصویر 1.11 در اینجا نشان دهنده گراف پروتکل برای سیستم لایه‌بندی فرضی است که ما آن را در قبل از این توضیح دادیم (RRP یا پروتکل درخواست/پاسخ وMSP پروتکل سیستم جریان پیام) که دو نوع متفاوت از کانال‌های پردازنده به پردازنده را نشان می‌دهند و هر دو آن‌ها وابسته به پروتکل هاست به هاست (HHP) هستند که می‌تواند یک سرویس اتصال هاست به هاست را فراهم کند.

در این مثال، فرض کنید که فایل یک به برنامه بر روی هاست (1) دسترسی دارد که می‌خواهد یک پیام را به همتای خودش در هاست (2) ارسال کند، که برای این کار از سرویس ارتباطی که به وسیله RRP پیشنهاد می‌شود، استفاده می‌کند. در این مورد، نرم‌افزار فایل از RRP درخواست می‌کند که یک پیام را بر روی قسمت (نیمه) متعلق به خودش ارسال کند. برای آنکه این قسمت بتواند با همتای خودش ارتباط برقرار کند، RRP سرویس HHP را فرخوان می‌کند که به نوبه خودش پیام را به همتای خودش در ماشین دیگر ارسال می‌کند. هنگامی که پیام در نمونه HHP هاست (2) دریافت شد، HHPپیام را به RRP در بالا دست خودش ارسال می‌کند، که در اینجا به نوبه خود پیام به نرم‌افزار فایل تحویل داده می‌شود. در این مورد خاص، گفته می‌شود که نرم‌افزار از سرویس‌ها پشته پروتکلی RRP/ HHP استفاده کرده است.

در اینجا توجه داشته باشیم که واژه پروتکل در دو شیوه متفاوت به کار گرفته شده است. گاهی از اوقات آن اشاره به رابط کاربری انتزاعی دارد، که بنابراین عملیات‌ها‌های آن به وسیله رابط کاربری سرویس تعیین می‌شود و فرم دهی و معنا کردن پیام تبادل شده در میان همتایان صورت می‌گیرد و گاهی از اوقات آن اشاره به ماژولی دارد که به صورت واقعی این دو رابط کاربری را پیاده‌سازی می‌کند. برای تمایز بخشیدن میان رابط‌های کاربری و نیز ماژول پیاده‌سازی این دسته از رابط‌های کاربری، ما به صورت کلی به تعریف قدیمی‌تر از پروتکل اشاره می‌کنیم. تعاریف در اینجا به صورت کلی با استفاده از ترکیب نظر موافقان، موارد شبه کد، دیاگرام‌های حالت انتقال، تصاویری از فرمت بسته‌ها و دیگر مفاهیم انتزاعی دیگر ابراز می‌شوند. در اینجا می‌توان یک پروتکل را به شیوه‌های مشخص پیاده‌سازی کرد، اگر هر کدام از برنامه نویسان متعهد به یک تعریف مشخص باشند. چالشی که در اینجا وجود دارد آن است که مطمئن شویم که دو پیاده‌سازی متفاوت از یک تعریف مشترکت بتوانند به صورت موفقیت آمیزی پیام‌ها را با هم مبادله کنند. دو و یا چندد ماژول پروتکل که به صورت دقیق یک تعریف پروتکل را پیاده‌سازی کرده باشند، باید به گونه‌ای باشند که بتوانند پیام‌های همدیگر را تفسیر کنند.

ما می‌تواینم پروتکل‌های و گراف‌های پروتکل را در شکل‌های بسیار متنوعی در نظر بگیریم که می‌تواند الزامات ارتباطی از یک مجموعه از نرم‌افزارها را برآورده سازند. خوشبختانه، در اینجا بدنه‌های استاندارد‌سازی وجود دارد که می‌تواند به نیروی وظیفه مهندسی اینترنت (IETF) و سازمان استاندارهای بین المللی (ISO) اشاره کرد که تدابیری را برای گراف‌های پروتکل خاص ایجاد می‌کنند. ما مجموعه قوانینی هدایت که یک گراف پروتکل را فرم و محتوا می‌دهند را به عنوان معماری شبکه می‌شناسیم. اگرچه در فرای حوزه این دسته از پست‌های ماست، بنده‌های استاندارد‌سازی می‌توانند دستورالعمل به خوبی تعریف شده‌ای را برای معرفی، ارزیابی ایجاد کنند و در نهایت پروتکل‌هایی را در معماری‌های مرتبط به آن‌ها تایید کنند. ما به صورت خلاصه معماری‌هایی که به وسیله IETF و ISO تعریف شده اند را به صورت خلاصه معرفی می‌کنیم، اما در ابتدا باید دو چیز مهم‌تر را برای توضیح درباره ماشین‌هائی که از لایه‌بندی پروتکل استفاده می‌کنند بدانیم.

No votes yet.
Please wait...

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

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

منو اصلی

question