اگر از توسعه دهندگان back-end یا مدیران شبکه هستید، آشنایی با مدل OSI از موارد ضروری کار شما محسوب می شود. مدل OSI مخفف Open Systems Interconnection یا «مدل اتصال متقابل سامانه های باز» یک مدل مفهومی از تعاملات شبکه است که توسط سازمان بین المللی استانداردسازی تعریف و ارائه شده است و از دهه ۱۹۸۰ به عنوان یک مدل استاندارد مورد قبول تمام سازمان های بزرگ قرار گرفته است.
اینترنت مدرن و امروزی ما بر اساس مدل OSI نیست بلکه بر اساس نسخه ای ساده تر آن که TCP/IP نام دارد ساخته شده است اما هنوز هم درک مدل OSI بسیار مهم است. زمانی که سیستم های یک شبکه می خواهند با یکدیگر اتصال برقرار کنند باید زبان یکدیگر را بفهمند بنابراین نیاز به یک استاندارد خاص داریم تا تمام سیستم ها بر اساس آن با یکدیگر تعامل کنند که همان مدل OSI است. در واقع می توان به OSI به زبان جهانی شبکه نگاه کرد. این مدل تمام تعاملات شبکه را به هفت لایه انتزاعی تقسیم می کند که هر کدام بر لایه قبلی سوار شده است:
تصویر بالا این هفت لایه را به صورت مجزا نمایش داده است و ما نیز تک تک این لایه ها را بررسی خواهیم کرد اما قبل از آن باید کمی در رابطه با اهمیت این مدل صحبت کنیم.
همانطور که قبلا اشاره کردم، اینترنت مدرن و امروزی صد در صد بر اساس OSI ساخته نشده است بلکه بر اساس Internet protocol suite (مجموعه پروتکل اینترنت - اتصالات TCP/IP) طراحی شده است اما درک مدل OSI کمک بسیار بزرگی به درک نحوه تعامل سیستم های یک شبکه می کند. طبیعتا زمانی که با نحوه تعامل سیستم های شبکه آشنا باشید، حل مشکلات و خطاهای شبکه برایتان آسان تر خواهد شد. چرا؟ چه مشکل یک نفر باشد که نمی تواند سیستم خود را به اینترنت متصل کند و چه مشکل یک وب سایت باشد که دیگر بالا نمی آید، قدم اول برای حل مشکل تقسیم آن به قسمت های جزئی تر است. مدل OSI تعاملات شبکه را به هفت لایه تقسیم می کند و بدین شکل به شما کمک خواهد کرد که منشاء مشکل را سریع تر تشخیص داده و به سراغ حل آن بروید. در صورتی که مشکل را در یک لایه خاص شناسایی کنیم، دیگر نیازی به دستکاری لایه های دیگر نیست بنابراین حل مشکل بسیار سریع تر و کم هزینه تر خواهد بود.
همانطور که در ابتدا توضیح دادم در این مقاله می خواهیم لایه های مختلف OSI را توضیح بدهم. هر کدام از این لایه ها مسئول انجام کار خاصی است و با لایه های پایین و بالای خود تعامل دارد. هکر ها نیز با استفاده از مدل OSI حملات خود را روی لایه های مختلفی انجام می دهند. بررسی لایه های مدل OSI معمولا از بالا به پایین یا از لایه ۷ به لایه ۱ انجام می شود چرا که درک آن را آسان تر می کند بنابراین ما نیز به همین شکل عمل می کنیم.
این لایه تنها لایه ای است که به صورت مستقیم با داده های کاربر تعامل دارد. نرم افزارهایی مانند مرورگرهای وب یا کلاینت های ایمیل از این لایه برای شروع تعاملات خود استفاده می کنند.
در اینجا نکته مهمی وجود دارد که باید شفاف سازی شود: نرم افزارهای ذکر شده (مانند مرورگرها) بخشی از لایه هفتم OSI نیستند، بلکه لایه هفتم مسئول پروتکل ها و ویرایش داده هایی است که این نرم افزارها به آن نیاز دارند تا بتوانند داده های مناسب را به کاربر نمایش بدهند. لایه هفتم OSI شامل پروتکل های HTTP و SMTP و FTP و DNS و POP می شود.
این لایه مسئول آماده سازی داده هایی است که لایه هفتم (لایه برنامه) از آن ها استفاده خواهد کرد. به زبان دیگر لایه ششم داده ها را برای نرم افزارها قابل ارائه می کند. این لایه مسئول translation (ترجمه) و encryption (رمزگذاری) و compression (فشرده سازی داده) است.
زمانی که دو دستگاه در شبکه با یکدیگر تعامل می کنند ممکن است در حال استفاده از متدهای کدبندی (encoding) متفاوتی باشند. در این حالت لایه ششم داده های ورودی به یک دستگاه را به شکلی تغییر می دهد (ترجمه می کند) تا دستگاه دریافت کننده بتواند متوجه این داده ها شده و آن ها را بخواند.
همچنین اگر دستگاه ها از طریق یک اتصال رمزگذاری شده با یکدیگر تعامل داشته باشند لایه ششم داده ها را در سمت دستگاه ارسال کننده رمزگذاری می کند و سپس در سمت دستگاه دریافت کننده رمزگشایی می نماید. در نهایت نیز داده های رمزگشایی شده و قابل خواندن را به لایه هفتم ارائه می دهد (به همین دلیل لایه ارائه یا presentation نام گذاری شده است).
آخرین کار لایه ششم فشرده سازی داده ها است. زمانی که لایه هفتم داده ها را به لایه ششم پاس می دهد، لایه ششم آن ها را فشرده کرده و سپس به لایه پنجم ارسال می کند. فشرده سازی داده ها بدین شکل باعث می شود حجم کمتری از اطلاعات بین دستگاه ها منتقل شود بنابراین سرعت و بهینگی تعاملات شبکه ارتقاء پیدا می کند.
این لایه ای است که مسئولیت باز کردن و بستن تعاملات بین دو دستگاه را بر عهده دارد. در واقع لایه پنجم کانال های تعاملی را می سازد که session یا نشست نام دارند. از نظر فنی تر به زمان بین باز شدن اتصال تا بسته شده آن یک نشست می گویند (انگار دو دستگاه با هم یک نشست داشته باشند). این لایه نشست را باز کرده و مطمئن می شود نشست تا زمانی که داده در حال انتقال است باز می ماند و پس از اتمام انتقال داده نشست را می بندد تا منابع شبکه و سیستم ها هدر نروند.
این لایه همچنین checkpoint یا نقاط برگشتی را تعیین می کند تا در صورت شکسته شدن نشست همه چیز از صفر شروع نشود. به طور مثال اگر یک فایل ۱۰۰ مگابایتی در حال انتقال بین دو دستگاه است، لایه نشست می تواند هر ۵ مگابایت یک checkpoint تعریف کند. حالا تصور کنید که ۵۲ مگابایت از فایل ۱۰۰ مگابایتی منتقل شده است اما ناگهان نشست به هر دلیلی مانند قطع شبکه شکسته می شود. از آنجایی که هر ۵ مگابایت یک checkpoint داشته ایم، دو دستگاه می توانند از ۵۰ مگابایت شروع کنند و بقیه فایل را ارسال کنند در صورتی که اگر checkpoint نداشتیم فرآیند ارسال از صفر شروع می شد.
لایه انتقال مسئول تعامل مستقیم (end-to-end) بین دو دستگاه است. این لایه داده ها را از لایه پنجم (نشست) گرفته، آن را به بخش های کوچکتری به نام segment تقسیم می کند و در نهایت به لایه سوم پاس می دهد. لایه انتقال در دستگاه دریافت کننده وظیفه دارد داده های ارسالی که قطعه قطعه شده اند (segment ها) را دریافت کرده و آن ها را دوباره سرهم کند تا لایه نشست بتواند آن ها را دریافت کند. به فرآیند تقسیم شدن داده های کامل به قسمت های مختلف در لایه انتقال segmentation می گویند.
این لایه همچنین مسئول flow control (کنترل جریان داده) و error control (کنترل خطا ها) می باشد. Flow Control یعنی سرعت انتقال اطلاعات کنترل شود تا اگر ارسال کننده اتصالی قوی به شبکه داشت بیش از حد توان گیرنده داده ارسال نکند (مثلا طوری نشود که ارسال کننده با سرعت ۱۰ مگابیت داده ارسال کند و گیرنده فقط توانایی دریافت با سرعت ۵ مگابیت را داشته باشد). Error Control نیز به معنی این است که لایه انتقال در دستگاه گیرنده صحت و سلامت داده ها را کنترل می کند تا مطمئن شود داده ها به صورت کامل دریافت شده اند و اگر غیر از این باشد داده را دوباره درخواست می کند.
لایه شبکه مسئول انتقال داده بین دو شبکه متفاوت است. در صورتی که دو دستگاه فرضی ما که در حال ارتباط هستند روی یک شبکه قرار داشته باشند، نیازی به لایه شبکه نیست اما در غیر این صورت به این لایه نیاز داریم. این لایه segment ها (قطعات داده که از لایه چهارم پاس داده می شوند) را دریافت کرده و آن ها را به بخش های کوچکتری به نام packet یا بستک تقسیم می کند. فرآیند ساخت packet ها در دستگاه ارسال کننده انجام می شود اما این packet ها توسط همین لایه در دستگاه گیرنده دوباره سر هم خواهند شد تا داده ها خوانا باشد.
عملیات routing یا «مسیریابی شبکه» وظیفه دیگر لایه شبکه است. در طی این عملیات بهترین مسیر فیزیکی برای ارسال و دریافت packet ها انتخاب می شود. لایه شبکه از آدرس های شبکه (معمولا Internet Protocol addresses یا همان IP) برای پیدا کردن این مسیر استفاده می کند.
لایه پیوند داده دقیقا مانند لایه شبکه است (مسئولیت انتقال داده ها را دارد) با این تفاوت که کارایی آن برای دستگاه هایی است که روی یک شبکه قرار دارند. این لایه packet ها را از لایه شبکه گرفته و به قسمت های کوچک تری به نام frame تقسیم می کند.
لایه پیوند داده دقیقا مانند لایه شبکه مسئول Flow Control و Error Control است با این تفاوت که این دو کار را فقط در شبکه داخلی (دستگاه های روی یک شبکه) انجام می دهد. توجه داشته باشید که این لایه برای تعاملات بین شبکه ای (دو دستگاه که در شبکه های مختلفی هستند) کاری انجام نمی دهد بلکه در آن حالت لایه شبکه وارد کار می شود.
این پایین ترین لایه است و شامل تجهیزات فیزیکی در فرآیند انتقال داده می شود مانند کابل ها، سوییچ ها و غیره. همچنین این همان لایه ای است که در آن داده ها به شکل bit stream (رشته ای بسیار طولانی از اعداد صفر و یک) در می آیند.
در نظر داشته باشید که لایه فیزیکی هر دو دستگاه فرستنده و گیرنده باید بر اساس یک قرارداد سیگنال خاص کار کنند تا صفر ها و یک ها برایشان قابل تشخیص باشند.
در مدل OSI داده ها در هنگام ارسال از سمت فرستنده از لایه ۷ به ۱ و در هنگام دریافت در سمت گیرنده از لایه ۱ به ۷ می روند.
منبع: وب سایت Cloudflare
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.