هفت لایه مدل OSI

مقدمهدر زمان های قدیم برای آنکه بتوانند معماری شبکه ای را که با زحمت پیاده سازی و راه اندازی شده بود توصیف کنند نیاز به یک مدل بود. چون طی یک کار دانشجویی پروتکل هاش ابداع و پیاده سازی شده بود. حاصل کار پروتکل tcp / ip با چهار لایه شد که فقط و فقط به درد همین کار میخورد.درست متوجه شدید در ابتدا شبکه پیاده شد و بعدا مدل از آن استخراج شد.بهترین پشتوانه این مدل در آن زمان این بود که در عین سادگی به خوبی جوابگوی نیازمندی های آن زمان بوده و هم اکنون نیز با تمام نواقص به خوبی به کار می کند !در مقابل مدل osi بوده که الگویی نسبتا کامل و جامع است که در آن مفاهیم پروتکل، سرویس و واسط به خوبی از هم تفکیک شده. نکته بسیار قابل توجه این است که مفاهیم بکار رفته در مدل osi بسیار شبیه برنامه نویسی شی گراست. هر لایه مثل یک object، ورودی ها، و خروجی های شی و روش تعامل شی با دنیای خارج هم مثل پروتکل ها و متدهای شی هم همان primitive ها در مدل لایه ای هستند.با همه این تفاسیر هیچ شبکه ای، تاکید میکنم هیچ شبکه ی شناخته شده ای که دقیقا مبتنی بر مدل osi باشد وجود ندارد. عقیده کلی این است که osi هر وقت دست به استانداردهای یک تکنولوژی می زند آنقدر کار را پیچیده می کند که که همه فراری می شوند.در واقع با اینکه مدل osi الگویی نسبتا کامل و جامع بود ولی خیلی دیر عرضه شد. پس نتیجه اخلاقی این است که : mvp رو در نظر داشته باشید دوستان و حداقل محصول پذیرفتنی رو روانه بازار کنید !دکتر احسان ملکیان مثال بسیار جالبی دارند به نظر ایشون دلیل رواج tcp/ip در جهان با دلیل رونق بازار خودروی پیکان در کشورمان ایران یکی است!مدل osiدر ابتدا خلاصه ای از وظایف مدل هفت لایه ای osi را بیان میکنیم سپس مثالی مفهومی از این مدل را بیان خواهیم کرد.۱- لایه فیزیکی (Physical layer )این لایه هیچ درکی از محتوای پیام ندارد و تنها چیزی که می فهمد و ارسال و دریافت می کند بیت های صفر و یک هست. این لایه ذاتا سخت افزاریست و طراح شبکه باید از استانداردهای شناخته شده استفاده کند.۲ - لایه پیوند داده (Datalink Layer) وظیفه این لایه بیمه اطلاعات در مقابل خطاهای احتمالی است، چون به هر حال با پدیده ای به نام نویز مواجه هستیم. ماهیت خطا طوری نیست که بتوان آن را رفع کرد ولی میشه کاری کرد گیرنده سلامت داده هایی که دریافت می کند را بررسی کند و داده هایی رو که به خطا آلوده شدند دور بریزد. فرستنده هم میتواند توسط مکانیزمی متوجه شود که آیا اطلاعات صحیح به مقصد رسیدند یا خیر تا در صورت بروز خطا مجددا اقدام به ارسال اطلاعات کند. یک وظیفه دیگر این لایه این است که اطلاعات رسیده از لایه های بالاتر را به واحدهای استاندارد با طول مجاز تبدیل کند و پس از مشخص کردن ابتدا و انتهای آن از طریق نشانه های خاصی که به آن delimiter می گویند و اضافه کردن فیلدهای اطلاعاتی خاص ( مثل آدرسهای مبدا و مقصد، کدهای کشف خطا و …) یک فریم تشکیل داده و سپس بیت های فریم اطلاعاتی را بیت به بیت به لایه فیزیکی ارسال کند. یکی دیگر از وظایف این لایه کنترل جریان فریم هاست به گونه ای که یک گیرنده کند به هیچ وجه ممکن هیچگونه فریمی را به خاطر آهسته بودن پردازنده اش از دست ندهد. قاعدتا در این موارد فرستنده باید سرعت ارسال فریم های خود را پایین بیاورد. بله ! درست حدس می زنید فرستنده و گیرنده باید مقداری بافر داشته باشند. راه اندازی، سرویس گیری و کنترل سخت افزار لایه فیزیکی هم بر عهده این لایه است و در سطح سخت افزار می شود. اگر بخواهم به طور خلاصه بگویم سخت افزار کارت شبکه و راه اندازش، پیاده سازی دو لایه اول مدل osi است.۳- لایه شبکه (Network Layer) وظیفه این لایه در یک کلمه مسیریابی است. به عبارتی هر قطعه داده دارای هویت که تحویل این لایه شود اول از همه باید مشخص شود که مقصد نهایی آن همین ماشین است و محتوای بسته باید تحویل لایه بالاتر شود یا آنکه بسته برای رسیدن به مقصد نهایی خود مسیریابی یا روتینگ شود. قاعدتا میدانید که مسیریابی هم میتواند به صورت پویا و هم می تواند به صورت استاتیک انجام شود.اگر براتون جالبه و میخواهید پروتکل های مختلف مسیریابی رو تست کنید پکت تریسر رو که شبیه ساز جذابیست نصب کنید و پروتکل های مختلف رو پیاده سازی کنید.۴- لایه انتقال (Transport Layer) پیاده سازی خدمات این لایه و لایه های بالاتر در سطح نرم افزار انجام میگیرد.پس قطعا بر روی ماشین های کاربران وجود دارد.این لایه باید حتما بتواند یک سرویس انتقال بسیار مطمئن و اتصال گرا ارائه کند بنابراین این باید تمام مشکلاتی که احتمالا از لایه شبکه به ارث برده را حل و فصل کند. از جمله مکانیزم هایی که برای ایجاد یک اتصال مطمئن استفاده می کند.قبل از ارسال بسته ها، نرم افزار این لایه باید اقدام به ارسال یک بسته ویژه بنماید تا مطمئن شود که ماشین گیرنده آماده دریافت اطلاعات است.جریان ارسال اطلاعات شماره گذاری شده تا هیج بسته ای گم نشود یا دوبار دریافت نشود.ترتیب جریان بسته ها حفظ می شود.در این لایه پروسه های مختلفی که بر روی یک ماشین واحد اجرا شده اند آدرس دهی می شوند به نحوی که هر پروسه بر روی یک ماشین واحد به عنوان یک هویت مستقل داده های خود را ارسال و دریافت نماید.۵- لایه نشست (session Layer) نشست به مجموعه عملیاتی گفته می شود که پس از برقراری ارتباط بین دو پروسه با یک توافق اولیه آغاز و سپس با انجام یک سری تراکنش ادامه می یابد و سپس در یک روالی هماهنگ و مورد توافق ختم می شود. در این لایه واحد اطلاعات پیام است.این لایه همه آن چیزهایی رو برای ایجاد، مدیریت و نگهداری نشست را فراهم می کند و توانایی از سرگیری نشست ناتمام (به هر دلیلی ) را دارد.نکته قابل توجه این است که به کمک این لایه کاربر متوجه پیچیدگی نمیشود چون گاهی نیاز است چندین تماس همزمان با چندین پروسه داشته باشد.۶ - لایه نمایش (Presentation Layer)هرگونه تغییر در ساختار محتوایی یا معنایی پیام در لایه نمایش انجام می گیرد، مانند فشرده سازی، رمزنگاری و رمزگشایی. بطور خلاصه عموما روی محتوا و مفهوم پیام ها متمرکز است.۷ - لایه کاربرد (Application Layer)این لایه در واقع مجموعه ای از پروتکل ها و استانداردهایی است که برای تبادل پیام بین نرم افزارهای کاربردی تعریف شده. مثلا SMTP ، FTP و غیره.در ادامه مثال بسیار جالبی که در کتاب دکتر احسان ملکیان به آن اشاره شده را بازگو کردم که به درک هر چه بهتر مدل osi کمک خواهد کرد.توصیف الگوی مبادله نامه در شبکه پستی بر اساس مدل مرجع OSI جمع بندیدر پایان اگر بخواهم مدل tcp/ip را با مدل osi مقایسه کنم باید بگم که، در مدل tcp/ip لایه اول، یعنی لایه واسط شبکه، تلفیقی از وظایف لایه فیزیکی و لایه پیوند داده ها از مدل osi است. لایه دوم از مدل tcp/ip معادل با لایه سوم از مدل osi، یعنی لایه شبکه و لایه سوم از مدل tcp/ip، همنام و معادل با لایه چهارم از مدل osi است. لایه پنجم و ششم از مدل osi، یعنی لایه نشست و لایه کاربرد، در مدل tcp/ip وجود ندارد و وظایف آن ها در لایه چهارم مدل tcp/ip ادغام شده است. شکل زیر می تواند به درک بهتر تفاوت این دو مدل کمک کند.مدل tcp/ip در مقابل مدل osi