آشنائی با مدل مرجع OSI
OSI از کلمات Open Systems Interconnect اقتباس و یک مدل مرجع در رابطه با نحوه ارسال پیام بین دو نقطه در یک شبکه مخابراتی و یا کامپیوتری است . هدف عمده مدل فوق، ارائه توصیه ها و راهنمائی های لازم به تولید کنندگان محصولات شبکه ای به منظور تولید محصولاتی سازگار با سایر تولید کنندگان است .
مدل OSI توسط کمیته IEEE ایجاد شده است . با استفاده از مدل فوق ، محصولات تولید شده توسط تولید کنندگان مختلف امکان کار با یکدیگر را پیدا خواهند کرد ( سازگاری بین محصولات ) . مشکل عدم سازگاری بین محصولات تولیدشده توسط شرکت های بزرگ تولید کننده تجهیزات سخت افزاری ، زمانی آغاز گردید که شرکت HP تصمیم به تولید یک محصول شبکه ای نمود و این محصول با محصولات مشابه سایر شرکت ها ( مثلا" IBM ) سازگار نبود . با توجه به مشکل فوق ، در صورتی که قصد تهیه چهل کارت شبکه برای سازمان خود را داشته باشید ، می بایست سایر تجهیزات مورد نیاز شبکه را نیز از همان تولید کننده تهیه می نمودید ( اطمینان از سازگاری بین آنان ) . مشکل فوق تا زمان ایجاد مدل مرجع OSI همچنان وجود داشت و به عنوان یک معظل بزرگ در این زمینه مطرح بود .
مدل OSI دارای هفت لایه متفاوت است که هر یک از آنان به منظور انجام عملیاتی خاص ، طراحی شده اند . بالاترین لایه ، لایه هفت و پائین ترین لایه ، لایه یک است . در زمان ارسال داده از یک کامپیوتر به کامپیوتر دیگر ، داده ها حرکت خود را از لایه هفتم آغاز نموده و پس از تبدیل به سگمنت ، دیتاگرام ، بسته اطلاعاتی ( Packet ) و فریم ، در نهایت از طریق محیط انتقال ( مثلا" کابل ) برای کامپیوتر مقصد ارسال می گردند .
به طور خلاصه:
- مدلی برای فهم و توسعه ارتباطات شبکه کامپیوتر به کامپیوتر
- توسعه داد شده توسط ISO ( دهه 1980)
- ارتباطات شبکه را به هفت لایه تقسیم می کند
Applicaton : لایه کاربرد
بالاترین لایه در مدل osi است و کار این لایه ایجاد یک لایه یا محیطی است که نرم افزارهای کاربردی بتوانند از طریق آن با شبکه در ارتباط باشند. در واقع این لایه رابط بین سیستم عامل و نرم افزار ها است .
: Presentation layer لایه نمایش
همانطور که از اسم این لایه پیداست نحوه نمایش اطلاعات را به ما نشان می دهد . بعنوان مثال در این لایه تعیین می شود که اطلاعات چگونه رمز نگاری شود یا چگونه فشرده سازی شود . در این لایه قالب بندی داده ها انجام می شود و همچنین کپسوله سازی اطلاعات جهت ارسال در شبکه و هماهنگی با سیستم عامل جهت شیوه یا نوع ارسال اطلاعات تعین می شود .
: Session layer لایه نشست
در هنگام برقراری یک ارتباط بین دو کامپیوتر اصطلاحا یک جلسه یا نشست برقرار می شود .همانطور که در یک جلسه یک منشی جلسه وجود دارد که زمان شروع ، اطلاعاتی که در جلسه قرار است مطرح شود ، مدت زمان جلسه و زمان پایان آن را تعین می کند در کامپیوتر نیز این لایه وظیفه مدیریت این نشست بین کامپیوترها را بر عهده دارد . در حقیقت این لایه ۳ وطیفه بر عهده دارد که به ترتیب :make یا ایجاد کردن جلسه ،maintain یا مدیریت جلسه ،terminate یا پایان دادن به جلسه را بر عهده دارد .
: Transport layer لایه انتقال
این لایه یک اتصال منطقی ( و نه فیزیکی ) نقطه به نقطه بین دو پایانه ارتباط مثلا بین دو دستگاه کامپیوتر ایجاد می کند . در این لایه دو روش برای این کار وجود دارد :
اتصال گرا ( connection-oriented ) : که مربوط به ارسال در پروتکل تی سی پی ( TCP ) است . در این پروتکل که اتصال گرا میباشد وظیفه کنترل جریان با قابلیت اعتماد بالا را دارد.
غیر اتصال گرا ( connectionless ) : که مربوط به ارسال در پروتکل یو دی پی ( UDP ) است . ( این پروتکل غیر متصل میباشد و برخلاف TCP از سرعت بالا تری برخوردار است، اما قابلیت اعتماد آن کمتر است. بعدا مفصل به این ۲ پروتکل می پردازیم .
: Network layer لایه شبکه یا Router layer یا IP address layer
پروتکل معروف IP در این لایه کار می کند . روتینگ هم در این لایه انجام می شود . روتینگ را می توان با یک عملیات ۲ سوالی تصور نمود :
برای مقصد داده شده از روتر محلی چند مسیر معتبر وجود دارد ؟
“بهترین” مسیر برای رسیدن به آن مقصد کدامیک است ؟
: Data link لایه پیوند داده
Data link layer یا لایه ارتباط داده یا MAC address layer یا Hardware address layer یا Physical layer، سوئیچها و پلها ( bridges ) و ایستگاههای اتصال بی سیم ( Wireless Access Points یا WAPs ) نیز در این لایه فعالیت می کنند و همچنین مودم ای دی اس ال شما و مودم عادی هم در این لایه جا می گیرند .چهار اصطلاح مهمی که در این لایه هست می گیرند عبارت اند از :
Ethernet یا ایترنت
کنترل ارتباط داده های سطح بالا یا High Data Link Control یا HDLC
پروتکل نقطه به نقطه یا Point-to-point protocol یا PPP
بازپخش ساختار یا Frame relay
در نظر داشته باشید اصطلاح خطایابی یا error detection در این لایه صورت می پذیرد و از طریق فرایندی بنام Frame check sequence
اگر سوئیچ یا پلی در این لایه کار کنند دیگر “سوئیچ کردن” یا “پل زدن” انجام نمیدهند بلکه “مسیر یابی یا routing” می کنند .
: Physical layer یا لایه فیزیکی
جایی که اطلاعات بازجویند اصل خویش ! جایی که اطلاعات به ۰ و ۱ تبدیل می شوند و رهسپار کابل میشوند …
چرا میگیم مدل مرجع OSI ؟ چون هیچ وقت از این مدل استفاده عملیاتی نشد.
یکی از مدل هایی که بر پایه OSI تشکیل شد و در حال حاضر در حال استفاده است مدل TCP/IP می باشد.
در لایه Application دیتا ساخته می شود، این دیتا مراحل و گام هایی را طی می کند تا به لایه های پایین برسد،از لایه هفت تا لایه یک.
PDU چیست؟ بررسی مفهوم Protocol Data Unit
Protocol data unit به مجموعه ای از داده ها اطلاق میشود که در حین رد وبدل شدن در بین لایه های مدل OSI به مقدار این مجموعه داده افزوده و یا کاسته میشود تا این داده ها اماده تحویل به لایه های بالایی یا پایینی باشد چرا که Protocol data unit در هر لایه صرفا قابل درک برای لایه فعلی و یا لایه مشابه دریافت کننده خواهد بود تا اینکه این داده ها را اماده سازی و بر اساس پروتکل برای تحویل به لایه های بعدی اماده سازی نمایند که اصطلاحا به این موضوع data encapsulation نیز اطلاق میشود از این مقوله در شبکه packet-switched به عنوان service data unit یاد میشود.
TCP/IPچیست؟ بررسی پشته پروتکل TCPIP
TCP//IPمهمترین پروتکل ارتباطی در شبکه های کامپیوتری و به ویژه شبکه اینترنت می باشد.در اینترنت پروتکل های مختلفی وجود دارد که هر یک وظیفه خاص خود را انجام می دهند . در وهله اول و قبل از اینکه توضیح بدهیم که TCP//IP چیست ، بایستی بدانیم که منظور و مفهوم از پروتکل چیست ؟ پروتکل ها با توجه به تعریفی که در کتاب پروفسور تنن باوم به نام شبکه های کامپیوتری آمده است به قوانین و روال هایی که برای برقراری ارتباطات مورد استفاده قرار می گیرند اطلاق می شود. اما در زبان عامیانه پروتکل یک زبان مشترک بین سیستم های کامپیوتری است که آنها را قادر می سازد بتوانند با همدیگر تبادل اطلاعات داشته باشند.
پروتکل را می توان به یک زبان تشبیه کرد ، هر یک از زبان های موجود در دنیا را یک پروتکل در نظر بگیرید ، برای مثال : فارسی ، انگلیسی ، عربی ، چینی ، هندو ، ژاپنی و ... هر یک به نوبه ای یک زبان هستند ، شما زمانیکه می خواهید با یک فرد انگلیسی صحبت کنید ، برای اینکه بتوانید ارتباط موفقی داشته باشید دو حالت وجود دارد ، اولین حالت این است که شما به زبان انگلیسی صحبت کنید ، دومین حالت این است که شخص مقابل شما با زبان فارسی صحبت کند. اما معمولا در مجامع بین المللی شما از زبانی استفاده می کنید که بیشتر شناخته شده است و مورد استفاده بیشتری دارد.
در همین مثال می توان کشور ایران را مثال زد ، در کشور ما همه به زبان فارسی صحبت می کنند اما لهجه های مختلفی وجود دارد ، کردی ، لری ، اصفهانی و ... هر یک از این لهجه ها در محل خود معتبر هستند اما در استان دیگر ممکن است مورد استفاده قرار نگیرند ، اما به هر حال شما اگر از زبان فارسی استفاده کنید در تمامی استان های ایران قادر به برقراری ارتباط خواهید بود. اما زبان فارسی پروتکلی نیست که در دنیا بصورت عامه مورد استفاده قرار بگیرد و شما بایستی برای برقراری ارتباط با جهانیان از زبان انگلیسی که پروتکل جهانی است استفاده کنید.
در شبکه های کامپیوتری نیز به همین شکل است ، پروتکل های مختلفی برای برقراری ارتباط بین سیستم ها و شبکه های کامپیوتری در کشورهای مختلف دنیا وجود دارد ، اما تنها پروتکل هایی می تواند مورد استفاده قرار بگیرد که از طرف سازمان استاندارد جهانی به عنوان پروتکل مشترک تعیین شده باشد. در شبکه های کامپیوتری دو مجموعه پروتکل TCP//IP و IPX//SPX بیشترین مورد استفاده را دارند اما به دلیل درصد استفاده کم از پروتکل IPX//SPX که در سیستم عامل های ناول استفاده می شود TCP//IP به عنوان یک پروتکل جهانی معروف شد و امروزه تمامی بستر اینترنت از این پروتکل استفاده می کنند. توجه کنید که TCP//IP به تنهایی یک پروتکل نیست و یک پشته پروتکل یا مجموعه پروتکل ارتباطی می باشد که از ترکیب شدن چندین پروتکل به وجود آمده است.
اکثر سیستم عامل هایی که امروزه می شناسید ، اعم از ویندوز ، لینوکس ، یونیکس ، مک ، اندروید و حتی ناول از این پشته پروتکل پشتیبانی می کنند و به همین دلیل است که شما می توانید از طریق سیستم عامل ویندوز خود از سرویس هایی که سیستم عامل های دیگر مانند لینوکس و یونیکس ارائه می دهند استفاده کنید. برای مثال سرویس ایمیل و وب سایت یاهو از سیستم عامل یونیکس و وب سرور های یونیکسی استفاده می کنند اما شما با ویندوز خود می توانید از خدمات آنها استفاده کنید و تنها دلیل این امکان داشتن پروتکل مشترک ارتباطی به نام TCP//IP می باشد.
کلمه TCP//IP مخفف Transmission Control Protocol Internet Protocol می باشد که نشان دهنده این می باشد که این پشته پروتکل بصورت کلی از دو پروتکل اصلی TCP و IP تشکلی شده است . این دو پروتکل وظیفه تعیین چگونگی برقرار ارتباط بین سیستم ها در شبکه و روش انتقال اطلاعات بین آنها را تعیین می کنند.
، درون پشته پروتکل TCP//IP همانطور که اشاره شد چندین پروتکل وجود دارند که وظیفه ارتباطات داده ها را در شبکه بر عهده دارند ، این پروتکل ها عبارتند از :
توجه کنید که TCP یک پروتکل Connection Oriented یا اتصال گرا است و بدین معناست که صحت اطلاعات ارسالی برای این پروتکل بسیار مهم است و از جهتی سرعت آن نسبتا پایین است . پروتکل IP یک پروتکل Connection Less یا غیر اتصال گرا است که بدین معناست صحت داده های ارسالی چندان مهم نیست و سرعت بیشتر مد نظر است ، در شبکه های مبتنی بر TCP بیت به بیت داده ها بعد از انتقال در شبکه بررسی می شود و همین دلیل کندی آن است ، در صورتیکه در شبکه های IP سرعت ارسال مهم است .
پشته پروتکل TCP//IP نقاط ضعف هر یک از این دو پروتکل را پوشش داده است و یک پروتکل ترکیبی خوب ایجاد کرده است. مدل TCP//IP نیز مانند مدل مفهومی OSI دارای ساختار لایه بندی یا Layering می باشد و برخلاف مدل OSI که دارای 7 لایه می باشد این پشته پروتکل دارای 4 لایه به نامهای Internet یا اینترنت ، Transport یا انتقال ، Application یا کاربردی و Network Interface یا رابط شبکه می باشد.
بنابراین دو جواب برای «TCP/IP چیست؟» وجود دارد. جواب فنی این است که TCP/IP خانوادهای بزرگ از پروتکلهایی است که برای سازماندهی کامپیوترها و ابزارهای ارتباطی در شبکه، استفاده میشوند. و مهمترین پروتکلهای آن TCP و IP هستند. IP دادهها را از مکانی به مکان دیگر منتقل میکند، در حالی که TCP از صورتگرفتن صحیح تمام کارها مطمئن میشود.
با وجود این، بهترین پاسخ این است که اینترنت وابسته به هزاران شبکه و میلیونها کامپیوتر است، و TCP/IP چسبی است که این شبکهها و کامپیوترها را در کنار یکدیگر نگه میدارد.
Multiplexing
لایه Transport وظایف متعددی دارد که در اینجا به مهمترین وظیفه این لایه می پردازیم تا هدف اصلی این لایه محسوس باشد. مهمترین وظیفه این لایه Multiplexing است.
برای تشریح بهتر واژه Multiplexing تصور کنید که کامپیوتری در یک شبکه همزمان در حال انجام سه کار است. به عبارت دیگر سه Session تحت شبکه ایجاد نموده است.
1- در سایت www.google.com مشغول جستجو است. 2-در سایت www.yahoo.com مشغول خواندن خبر است. 3- با استفاده از نرم افزار outlook، در حال ارسال ایمیل می باشد.
با استفاده از سه لایه پائینی، ارتباط به هر سه مقصد شبکه ایجاد میشود. همه بستههای بازگشتی از اینترنت، روی یک مدیا و یک Interface وارد کامپیوتر میشوند. آدرس MAC مبدأ همه بستههای بازگشتی، آدرس روتر شبکه محلی است. آدرس MAC مقصد همه بستههای بازگشتی، آدرس MAC کامپیوتر مقصد است. آدرس IP مقصد همه بستههای بازگشتی، آدرس IP کامپیوتر مقصد است. کامپیوتر از کجا باید بداند که Packet دریافتی به کدام Session تعلق دارد و این Packet را به کدام یک از سه Session فوق، yahoo، google و یا outlook تحویل دهد؟ به این عمل Multiplexing گفته میشود. برای پیاده سازی Multiplexing، دو فیلد به نامهای پورت مبدأ و پورت مقصد در هدر لایه Transport در نظر گرفته شده است. پورت مبدأ و مقصد، هر کدام فیلد 16 بیتی هستند لذا میتوانند مقادیر 0تا 65535 را به خود اختصاص دهند.
مبدأ به ازاء هر Session یک عدد تصادفی بین 1025 تا 65535 را برای پورت مبدأ در نظر میگیرد. پورت مقصد بستههای هر Session، به Application بستگی دارد و عدد استاندارد، متناسب با Application در نظر گرفته میشود. به عنوان مثال پورت مربوط به برخی از Applicationهای معروف در جدول زیر آمده است:
بنابراین مبدأ در زمان ایجاد Session به ازاء هر یک از Sessionهای تحت شبکه، پورت مبدأ و مقصد را به صورت زیر مقداردهی مینماید:
سپس تمام بستههای ارسالی با استفاده از 3 لایه پائینی به مقصد هدایت میشوند. مقصدها در نقاط مختلف اینترنت قرار دارند. هر یک از آنها بستههای درخواستی را پاسخ میدهند. بستههای پاسخ، قبل از ارسال در لایه Transport باید مقداردهی شوند. کافی است در لایه Transport جای پورت مبدأ و پورت مقصد در بستههای ارسالی نسبت به بستههای دریافتی تعویض شود.
بستههای ارسالی با استفاده از سه لایه پائینی در اینترنت هدایت میشوند تا در مقصد که همان کامپیوتر مورد نظر ما است، دریافت شود.
حال کامپیوتر مورد نظر از روی مقدار پورت مقصد بستههای دریافتی، به راحتی میتواند تشخیص دهد که هر Packet به کدام Session تعلق دارد تا Packet را به Session مورد نظر تحویل دهد.
نتیجه گیری: لایه Transport این قابلیت را به ما میدهد که بتوانیم به صورت همزمان چندین Session و چندین Application تحت شبکه را روی یک کامپیوتر ایجاد نمائیم. بدون استفاده از لایه Transport، هر نود انتهایی (کامپیوتر، پرینتر و...) فقط میتوانست یک Session در آن واحد اجرا نماید.
بصورت کلی ما پروتکل ها را از نظر نوع ارتبط به دو دسته اتصالگرا یا Connection Oriented و عدم اتصال گرا یا Connectionless تقسیم بندی می کنیم ، یکی از پروتکل های بسیار معروف در بحث اتصالگرا ، پروتکل TCP یا Transmission Control Protocol است که بیشترین استفاده را در ارتباطات مهم و حیاتی در سرویس ها بر عهده دارد. TCP برای برقراری ارتباط ابتدا باید درستی و صحت ارتباط تایید شود و سپس ارتباط برقرار شود ، فرآیند برقراری ارتباط در پروتکل TCP توسط یک فرآیند سه مرحله ای به نام Three-way Handshake یا Triple-Handshake انجام می شود ، در واقع هرگاه صحبت از Three-Way Handshake شد یعنی پروتکل ها قصد برقراری ارتباط با همدیگر را دارند
بارها اتفاق می افتد که شما در طول روز بدون اینکه توجهی به جزئیات کار داشته باشید از این پروتکل استفاده می کنید ، برای مثال زمانی که شما یک سایت را باز می کنید ، در حقیقت ارتباط شما از نوع TCP بوده است و با این ارتباط شما توانسته اید به محتوای آن سایت دست یابید .
زمانی که شما میخواهید با این پروتکل به یک منبع متصل شوید ، چند مرحله طی می شود تا اتصال شما به درستی برقرار شود ، به مجموعه این مراحل TCP 3-Way Handshake می گویند . TCP با استفاده از فرآیند 3Way Handshake در حقیقت به نوعی امنیت را نیز برای ما به ارمغان می آورد .
تصویر فوق اتصال یک کاربر به یک سرور را نشان می هد . در اولین مرحله کاربر یک بسته SYNchronize که به اختصار به آن SYN گفته می شود را به سمت سرور مورد نظر ارسال می کند . در واقع با ارسال بسته SYN در خواست هم زمانی جهت اتصال را انجام می دهد .در مرحله دوم سرور با ارسال بسته SYNchronize-ACKnowledgement که با اختصار SYN/ACK گفته می شود ، با درخواست هم زمانی موافقت می کند و در نهایت کاربر پس از دریافت SYN/ACK در مرحله سوم با ارسال ACKnowledge یا ACK به سمت سرور ، مراحل TCP 3-Way Handshake را تکمیل کرده و در واقع یک خط ارتباطی بین کاربر و سرور ایجاد می شود ..
در پروتکل UDP یا نوع ارسال دیتا برای ما مهم نیست و یا امکان گرفتن آمادگی از طرف مقابل برای ما به هر دلیلی امکان پذیر نیست.
با فرض امکان پذیر بودن سربار زیادی تحمیل می کند.
همان طور که در شکل ملاحظه می کنید هدر بسته UDP نسبت به هدر بسته TCP سایز کوچکتری دارد.