Internetworking-4
The Transport Layer :
سرویسهای واقع در لایه Transport ، تمامی بخشهای دیتاها را از لایههای بالا جمعآوری کرده سپس آن را در یکرشته دیتا یکسان قرار میدهد . این پروتکلها همچنین وظیفه ایجاد یک ارتباط منطقی بین دستگاه فرستنده و گیرنده رادارند .
دو پروتکل شناختهشده در این لایه TCP و UDP هستند . اگر آشنا با این دو پروتکل نیستید نگران نباشید . در فصلهای آینده بهصورت کامل در مورد آنها صحبت خواهیم کرد اما فعلاً تا همین حد بدانید که TCP بهعنوان یک پروتکل قابلاطمینان عمل میکند ولی UDP نه ! این به برنامهنویسها اختیارات بیشتری میدهد ، آنها میتوانند در هنگام طراحی نرمافزار ، از بین این دو پروتکل یکی را انتخاب کنند . ( هرکدام از این دو دارای ویژگیهایی هستند که در فصلهای آینده با آن آشنا میشوید )
Connection-Oriented Communication
برای ایجاد یک ارتباط قابلاعتماد ، دستگاه مبدأ ابتدا باید یک ارتباط پایدار با دستگاه مقصد برقرار کند . این روش به نام three-way handshake شناخته میشود . وقتی انجام این پروسه کامل شد انتقال اطلاعات انجام میگیرد .
شکل شماره 10 ، مراحل انجام three-way رابین دو سیستم فرستنده و گیرنده نشان میدهد :
هر دو سیستمعامل با فرستادن پیغامهایی بر روی شبکه ، آمادگی خود را برای برقراری ارتباط اعلام میکنند .
– ابتدا سیستم مبدأ یک پیغام Synchronization ارسال میکند .
– سیستم مقصد با دریافت آن ، در صورت آماده بودن با پیغام Acknowledge ، به همراه پیغام SYN ، آمادگی خود را اعلام میکند .
– درنهایت سیستم ارسالکننده با فرستادن یک ACK ، موافقت خود را اعلام کرده و ارتباط برقرار میشود .
بعد از برقراری ارتباط ، اطلاعات بین دو سیستم انتقال پیدا میکند . تا اینجای کار به نظر نباید مشکلی ایجاد شود اما ممکن است در فرایند انتقال دیتاها مشکلاتی به وجود آید . ممکن است سیستم ارسالکننده دارای سرعت بالاتری نسبت به مقصد باشد . در این حالت اطلاعات با سرعت بر روی شبکه ارسال میشود اما سیستم مقصد توان دریافت تمامی آنها را ندارد . برای حل این مشکل حافظهای در سیستم طراحیشده است که اطلاعات اضافی در آن ذخیره شود تا سیستم در فرصت مناسب بتواند آن را تحلیل کند . به این حافظه بافر ( buffer ) گفته میشود . اما بافر نیز ظرفیت محدودی دارد و در حجم اطلاعات بالا میتواند سرریز ( overflow ) شود .
Flow Control :
ازآنجاییکه سرریز شدن اطلاعات باعث از بین رفتن آنها میشود ، راهحلی برای آن در نظر گرفتهشده که به آن Flow Control میگویند . وظیفه آن جلوگیری از ارسال اطلاعات از طرف سیستم فرستنده، زمانی که حافظه بافر آن پرشده است . نحوه انجام پروسه به ترتیب زیر است :
Windowing
در ارتباط قابلاعتماد ، سیستم ارسالکننده اطلاعات برای هر بستهای که میفرستد باید به پیغام ACK از سیستم گیرنده دریافت کند . حال در نظر بگیرید چقدر سرعت انتقال اطلاعات میتواند کم شود اگر قرار باشد برای هر قسمتی که ارسال میشود یک پیغام ACK دریافت گردد ، به همین دلیل از فلگی (Flag) به نام Window استفاده میشود .
" فلگ Windows برای کنترل مقدار دیتایی که بدون دریافت ACK میتواند انتقال یابد استفاده میشود "
مقدار Window مشخص میکند که چه میزان از اطلاعات فقط با دریافت یک ACK جابهجا شود . فرض کنید ارتباط بین دو سیستم مانند شکل 12 برقرارشده است . ابتدا یک بسته ارسال میشود و ACK آن نیز دریافت میگردد . سپس بسته دوم ارسال میشود و بازهم بهدرستی ACK به سیستم ارسالکننده میرسد . سیستم ارسالکننده متوجه میشود که بستر ایجادشده با سیستم دیگر تا حدی قابلاعتماد است . به همین دلیل در نوبت بعدی مقدار فلگ Window را 3 قرار میدهد تا سیستم دریافتکننده متوجه شود ، تا سه بسته نیازی به ارسال ACK وجود ندارد . مقدار Window با توجه به شرایط ارتباطی میتواند بالا رود و همان نسبت میزان سرعت ارتباط .
" اگر سیستم گیرنده نتواند تمامی اطلاعات را بهدرستی دریافت کند ، سیستم فرستنده میتواند مقدار Window را کاهش دهد "
Acknowledgments
همانطور که گفتیم در یک ارتباط قابلاطمینان ،به ازای هر بستهای که از طرف فرستنده ارسال میشود ، انتظار یک ACK از طرف گیرنده را دارد . این نوع ارتباط میتواند تضمینکننده انتقال اطلاعات بهصورت سالم باشد . شکل شماره 13 نحوه انجام تبادل اطلاعات و دریافت پیغام ACK را نشان میدهد .
همانطور که مشاهده میکنید ، اگر در حین برقراری ارتباط مشکلی به وجود بیاید و بسته به دست گیرنده نرسد ، سیستم دریافتکننده فقط با ارسال ACK موردنظر ، کامپیوتر ارسالکننده را باخبر کرده تا آن را دوباره ارسال کند .