930 likes | 1.23k Views
شبکه های کامپیوتری پیشرفته. ارائه دهنده دکتر سيد امين حسيني hosseini@um.ac.ir E.mail: Home page: http://hosseini.staffcms.um.ac.ir. لايههاي مدل مرجع TCP/IP , OSI . 2. سرویس های اتصال گرا و غیر مبتنی اتصال. هر لایه می تواند 2 سرویس در اختیار لایه بالاتر خود قرار دهد
E N D
شبکه های کامپیوتری پیشرفته ارائه دهنده دکتر سيد امين حسيني hosseini@um.ac.irE.mail: Home page:http://hosseini.staffcms.um.ac.ir
سرویس های اتصال گرا و غیر مبتنی اتصال هر لایه می تواند 2 سرویس در اختیار لایه بالاتر خود قرار دهد مبتنی بر اتصال مانند خدمات ارائه شده توسط سیستم های تلفن غیر مبتنی بر اتصال مانند خدمات سیستم پستی
کیفیت سرویس های مبتنی بر اتصال سرویس قابل اطمینان : هیچگاه داده از دست نمی رود تصدیق پیام تاخیر دارد ولی ارزشمند است بسیار مناسب برای انتقال فایل
سرویس مبتنی بر اتصال قابل اطمینان جریان پیامها محدوده 2 پیام حفظ می شود (2 پیام ارسال ،2 پیام دریافت می شود و نه 1 پیام که ترکیب 2 تا باشد) مثلا برای ارسال صفحات کتاب برای چابخانه خوبست جریان با یت ها محدوده ندارد (راه تشخیصی نیست که بایت های دریافتی مربوط به پیامی با چه طولی هست. مثلا برای استفاده از پردازشگر راه دور خوبست.
سرویس های غیر مبتنی اتصال نیازی به برقراری اتصال از قبل نیست (ایمیل) بنا بر شباهت با تلگراف آن را داده گرام نامند. عیر قابل اعتماد مانند سرویس داده گرام قابل اعتماد مانند سرویس داده گرام با تصدیق مانند بسته پستی سفارشی خدمات درخواست و پاسخ (یک داده گرام حاوی درخواست ارسال و پاسخی دریافت می کند) کار با بانک های اطلاعاتی
اتصالگرا غير اتصالگرا چند نمونه از انواع خدمات لايهها:
پنج عملکرد پایه برای سرویس اتصال گرا انتظار برای دریافت اتصال برقراری ارتباط با همتای متناظر انتظار برای دریافت اتصال ارسال پیام به همتا پایان اتصال
اجزاءسرويس پنج جزء براي فراهم كردن يك سرويس ساده اتصالگرا 9
بستههاي ارسالي در يك تعامل ساده كلاينت-سرور در شبكه اتصالگرا اجزاءسرويس 10
مقايسهمدلهاي مرجعOSI و TCP/IP • هر دو بر اساس مفهوم پشتهاي از قراردادهاي مستقل پايهگذاري شدهاند. • عملکرد لايهها در آنها مشابه به هم ميباشد. • در هر دو مدل لايه بالاي لايه انتقال لايه کاربران بر اساس کاربرد مربوط به خدمات انتقال قرار دارد. • مدل OSI هر دو ارتباط اتصالگرا و بياتصال را در لايه شبكه و فقط اتصالگرا را در لايه انتقال پشتيباني ميكند. و مدل TCP/IP در لايه شبكه فقط از ارتباط بي اتصال و از هردو ارتباط در لايه انتقال پشتيباني ميكند. 13
مقايسهمدلهاي مرجعOSI و TCP/IP • مدل OSI قبل از اختراع پروتکلهای آن طراحی و ابداع شد این بدان معناست که مدل OSI وابستگی و تمایل خاصی به هیچ پروتکلی ندارد. • در مورد TCP/IP وضع برعکس بود اول پروتکلها اختراع و توسعه داده شدند سپس مدلی برای توصیف آنها ساخته شد. • مدل OSI هفت لایه دارد و مدل TCP/IP چهار لایه . 14
نگاهی انتقادی به مدل TCP/IPو پروتکل های آن • در اين مدل مفاهيم خدمات، رابطه و و پروتکل بطور واضح قابل تفكيك نيست. • مدل TCP/IP يك مدل عمومي نيست و براي تشريح هر پشتهاي از قراردادها به جز TCP/IP مفيد نيست. • لايه ميزبان شبكه كه در مورد پروتکلهاي لايهاي وجود داشت، بعنوان يك لايه محسوب نميشود و تنها به عنوان يك رابط (بين لايه شبكه و پيوند داده) عمل ميکند. • در مدل TCP/IP تمايزي بين لايههاي فيزيكي و پيوند دادهها نيست. در صورتيکه اين دو لايه کاملاً از هم متمايز هستند.
مدل هيبريد مدل هيبريد كه در كتاب از آن استفاده شده است 16
شبکه هاي نمونه 1- اينترنت 2- شبکه هاي اتصال-گرا: x.25 ،Frame Relay و ATM 3- اترنت 4- شبکه هاي محلي بيسيم 17
لايه انتقال در شبکه قلب تبنده سلسله پروتکل های شبکه
لايه انتقال در شبکه • هدف لایه انتقال: ارائه سرویس کارامد مطمئن کم هزینه به کاربران خود (داده ها را به روشی کم هزینه و قابل اعتماد از مبدا به مقصد انتقال دهد) فارغ از ماهیت شبکه یا شبکه های فیزیکی مورد استفاده. • کاربران : پروسه های لایه کاربرد • نرم افزار ی که این کار راانجام می دهد Transport Entity نامیده می شود. • می توان آن را با سیستم مدیریت فایل سیستم عامل مقایسه کرد.
خدمات انتقال ( the transport service ) • خدمات ارائه شده به لایه های بالاتر • عملکردهای اولیه و توابع بنیانی لایه انتقال • سوکت های برکلی
خدمات ارائه شده لایه انتقال برای انجام وظایف خود از خدمات لایه شبکه بهره می گیرد . نرم افزار یا سخت افزاری که این کار را انجام می دهد اصطلاحاًواحد انتقال گفته می شود . ماشین میزبان 1 ماشین میزبان 2 Transport address واسط بین لایه های انتقال و کاربرد لایه کاربرد لایه کاربرد TPDU واحد انتقال واحد انتقال واسط بین لایه ها ی لایه شبکه و انتقال لایه شبکه لایه شبکه Network address
خدمات ارائه شده انواع خدمات در این لایه مانند لایه شبکه هست • اتصال گرا • بی اتصال سه مرحله تکوین • ایجاد اتصال (ٍEstablishment) • انتقال داده (Data Transfer) • ختم انتقال (Release)
خدمات ارائه شده • _آدرسدهی و کنترل جریان در هر دو لایه هست • خدمات بی اتصال لایه انتقال شباهت زیادی به خدمات بی اتصال لایه شبکه دارد بدلیل شباهت لایه شبکه و انتقال چرا لایه شبکه و انتقال ادغام نشدند؟ • کد اجرایی کاربران روی ماشین host اجرا می شود ولی در شبکه بر روی مسیر یابها • کاربران هیچ کنترلی روی لایه شبکه ندارند • اگر یک مسیر یاب دچار مشکل شد مشکلات زیادی را ایجاد می کند
خدمات ارائه شده • لایه انتقال جهت ارتقاء بهبود کیفیت و قابل اعتماد تر کردن سرویس در شبکه ایجاد شده است. • اگر واحد انتقال در لایه انتقال متوجه قطع ارتباط شود مجددا ارتباط جدیدی ایجاد می کند و از لایه همتای خود سوال می کند که چه اطلاعاتی را در یافت کرده و چه اطلاعاتی را دریافت نکرده است و بقیه اطلاعات را درخواست کند. • با تکیه بر این لایه هست که برنامه نویسان با استفاده از یک سری توابع و عملکردهای استاندارد بدون داشتن دغدغه در مواجه با تفاوت در اجزاء زیر شبکه های مختلف برنامه های خود را بنویسند.
خدمات ارائه شده _ حال اگرلایه شبکه خدماتی ناکافی عرضه کند چه می شود یا مسریاب ها از کار بیفتند چه می شود ؟ در واقع کاربران هیچ کنترلی برروی لایه شبکه ندارند . بهمین دلیل تنها راه ممکن این است که بر روی لایه شبکه لایه دیگری قرار داده شود که خدمات بهبود پیدا کند که این کار را واحد انتقال انجام می دهد . واحد انتقال خدماتی اتصال گرا می باشد که از سرنوشت داده ها با خبر است ودر صورت بروز مشکل ( قطع ارتباط، و از بین رفتن داده ها ) آن را رفع می کند .
خدمات ارائه شده در حقیقیت وجود لایه انتقال این امکان را فراهم می کند که خدمات انتقال داده قابل اعتماد تر از خدمات لایه شبکه باشد . پس بیشترین تأ کید بر روی لایه انتقال است تا لایه شبکه این لایه، لایه های بالایی را از درگیری با جزئیات تکنولوژی ،طراحی و نواقص زیر شبکه بی نیاز می کند به همین دلیل : در یک دسته بندی معمولاً 4 لایه اول را ارائه دهنده خدمات انتقال و بقیه را استفاده کننده از خدمات انتقال می نامند
خدمات ارائه شده • به عنوان مثال دو پروسه را در محیط یونیکس در نظر بگیرید که از طریق لوله به هم متصل هستند تنها چیزی که برای آنها خیلی مهم است یک ارتباط صد در صد مطمئن و بدون خطا می باشد و به دیگر مسائل جانبی از قبیل ازدحام و ... کاری ندارند. • از دیگر تفاوت ها بین این دو لایه این است که استفاده کننده گان آنها تفاوت بنیادین دارند . خدمات لایه شبکه به واحد انتقال ارائه می شود کاربران بسیاری کمی هستند که بخواهند واحد انتقال اختصاصی برای خود بنویسید و فقط عملکردهای اولیه و توابع بنیانی لایه انتقال را می بینند در نتیجه خدمات لایه انتقال باید سهل الوصول و استفاده از آنها ساده و سر راست باشد .
توابع بنیانی لایه انتقال عملکرد های اولیه توابع بنیانی لایه انتقال : برای استفاده از خدمات لایه انتقال این لایه در قالب واسط خدمات انتقال مجموعه ای از عملیات و توابع را در اختیار برنامه های کاربردی می گذارند.
توابع بنیانی لایه انتقال به عنوان مثال یک برنامه سرویس دهنده و چند مشتری راه دور را در نظر بگیرید. سرویس دهنده تابع Listen را اجرا می کند. در این صورت برنامه سرور بلوکه می شود و منتظر مشتری می ماند. مشتری Connect را اجرا می کند. واحد انتقالtransport unit) ) برنامه مشتری را بلوکه می کند و درخواست ارتباط را به سرور ارسال می کند(Connection Request). بسته ارسالی به صورت زیر هست.
توابع بنیانی لایه انتقال سرآیند TPDU سرآیند فریم سرآیند بسته TPDU payload Packet payload Frame payload قالب بسته ارسالی واحد انتقال
توابع بنیانی لایه انتقال • سرور پس از دریافت بسته و در صورت آمادگی بسته قبولی ارتباط (Connection Accept) را به مشتری ارسال می کند. • پس از دریافت برنامه مشتری از حالت بلوکه خارج و ارتباط برقرار می شود. • داده ها با استفاده از توابع send , Receive ارسال می شوند. • پس از کامل شدن ارسال جهت آزاد کردن حافظه دو طرف ،ارتباط باید قطع گردد.
توابع بنیانی لایه انتقال لایه انتقال حتی برای مبادله یکطرفه و ساده داده ها بسیار پیچیده تر از لایه شبکه عمل می کند . دریافت یک یک بسته هایی که ارسال می شوند باید به تأیید طرف مقابل برسند . تصدیق وصول بسته ها بر عهده واحد انتقال است و این کار از دید کاربران مخفی است. یک اتصال به مثابه یک لوله مطمئن انتقال بیت است که یکی از کاربران بیتها را در ابتدای این لوله تزریق می کند به همان نسبت در انتهای دیگر دریافت می کردند.
توابع بنیانی لایه انتقال زمانی که انتقال تمام شود باید اتصال قطع شود تا حافظه ای که به آن اختصاص داده شده آزاد گردد. قطع اتصال به دوصورت است : • نامتقارن (Asymmetric) هر یک از پروسه ها مستقلا تابع Disconnect را فراخوانی کرده که یک بسته disconnect به طرف مقابل ارسال می گردد. • متقارن (Symmetric) یک ارتباط وقتی کاملا قطع می شود هر دو طرف Disconnect کرده باشند
توابع بنیانی لایه انتقال فرضیات: • برای هر بسته حاوی TPDU جداگانه ACK دریافت می شود. • قطع ارتباط به صورت متقارن هست. • برای قطع ارتباط هم اول مشتری درخواست می کند.
توابع بنیانی لایه انتقال مجمو عه دیگری از توابع در این لایه که به توابع سوکت معروف هستند و کاربرد زیادی در برنامه نویسی دارند عبارتند از:
سوکتهای برکلی پروتکلهای لایه انتقال برای ارائه سرویس به پروتکلهای لایه کاربردی از دو پروتکل به نام TCP و UDP استفاده می کند . TCP : انتقال اطلاعات در اینترنت توسط پروتکل IP و از طریق بسته های IP انجام می گیرد اگر در هنگام انتقال یک فایل بسته های IP کافی نیست لایه بالاتر بایستی مشکلات فوق را رفع نماید که پروتکل TCP در لایه انتقال برای رفع مشکلات پروتکل IP ارائه شده به طور خیلی ساده پروتکل IP همانند ارسال نامه به صورت عادی و پروتکل TCP همانند ارسال نامه به صورت سفارشی .
در قسمت سرویس دهنده • در قسمت سرویس دهنده هر پروسه سرویس دهنده 4 تابع فراخوانی می کند • Socket: • در برنامه کاربردی یک نقطه پایانی ایجاد می کند و حافظه لازم را در واحد انتقال می گیرد • پارامترهای این تابع: • فرمت آدرس دهی • نوع سرویس ( اتصال گرا ، بی اتصال) • پروتکل مورد نظر
در قسمت سرویس دهنده • اگر فراخوانی موفق باشد اشاره گر یک فایل را بر می گرداند ( مانند open در فایلها) • Bind که اختصاص آدرس پورت به socket • Listen: گوش دادن به خط و ایجاد فضای لازم برای صف بندی ایجاد می شود • Accept: برقراری ارتباط با یک پروسه و برگرداندن یک اشاره گر.
در قسمت مشتری • Socket برای ایجاد یک سوکت • Bind نیاز نیست • Connect پروسه متقاضی بلوکه می شود ودرخواست ارتباط به سرویس دهنده ارسال می شود. با رسیدن پاسخ مناسب از حالت بلوکه در می آید. • Send , Receive هریک از طرفین با فراخوانی این دو تابع به ارسال و دریافت اطلاعت می پردازند. در یونیکس نیز می توان از توابع Read , Write استفاده کرد. • قطع ارتباط متقارن هست . هر دو طرف بایستی تابع close را اجرا کنند تا ارتباط قطع گردد.
مولفه های پرتکل انتقال • خدمات انتقال توسط پروتکلهای لایه انتقال پیاده سازی شده و از آنها بین دو واحد انتقال استفاده می شود. پروتکلهای لایه انتقال داده ها از جهاتی شبیه لایه پروتکلهای پیوند داده ها می باشد. • نظارت بر خطا • ترتیب بسته ها • کنترل جریان
تفاوت ها پروتکلهای لایه انتقال داده ها و لایه پیوند داده ها از جهاتی متفاوت می باشد که ناشی از بستری که در آن کار میکنند هست .
تفاوت ها • در لایه انتقال آدرس دقیق مقصد و حتی پورت لازم هست ولی در پیوند داده هیچ ضرورتی ندارد زیرا هر خط خروجی فقط یک مسیریاب خاص را مشخص می کند. • در پیوند داده فرایند اتصال ساده هست و نود مقایل همیشه هست مگر خراب شود • بین مبدا و مقصد لایه پیوند داده فقط 2 مسیر یاب هست (کانال فیزیکی). ولی در لایه انتقال یک زیر شبکه هست • در پیوند داده وقتی داده روی خط رسید به مقصد می رسد و یا بسته با مشکل مواجه می شود ولی در زیرشبکه ممکن هست بسته ای در یکی از نود ها ذخیره شود و بعد از چند ثانیه به مقصد برسد. • در پیوند داده برای هر اتصال تعدادی بافر در نظر می گیرد ولی در لایه انتقال بدلیل اتصالات زیاد مقدور نمی باشد که اندازه آن از قبل مشخص گردد.
مولفه های پرتکل انتقال-آدرس دهی انواع آدرس دهی : 1 - برای تحویل فریم در لایه پیوند داده از آدرس فیزیکیMAC استفاده می شود . 2- برای تحویل داده گرام در لایه شبکه از IP استفاده می شود. 3- برای تحویل قطعه در لایه انتقال نیز نیاز به شماره پورت است که یک عدد 16 بیتی می باشد که هر پروتکل لایه کاربردی شماره پورت خاصی دارد . برای انتقال فایل پورت شماره 21 برای انتقال email پورت شماره 25 بنابراین آدرس های IP بایستی همواره با شماره پورت همراه باشند ، به ترکیب IP و پورت سوکت گفته می شود .
مولفه های پرتکل انتقال-آدرس دهی • وقتی یک پروسه کاربردی می خواهد با پروسه کاربردی راه دور اتصال برقرار کند بایستی آدرس آن را دقیقا مشخص کند. برای بدون اتصال هم به همین صورت. ( هر پیام برای چه پروسه ای ارسال می شود.) • روش معمول تعریف آدرس انتقال برای پروسه هایی که برای دریافت تقاضا به خط گوش می دهند، که به آن پورت گفته می شود و یا TSAP(Transport Service Access Point) . هر پروسه باید خودش را به یک TSAP وصل کند که بتواند با TSAP مقصد ارتباط بر قرار کند.