از مهمترین قابلیتهای این پروتکل به موارد زیر میتوان اشاره کرد:
TCP یک پروتکل قابل اطمینان است. به عبارت دقیقتر، گیرنده دریافت کننده همواره اطلاعات درست یا اشتباهی در ارتباط با بستههای دریافتی برای ارسالکننده میفرستند تا به این شکل گیرنده اطمینان حاصل کند که بسته به درستی انتقال پیدا کرده یا نیازمند ارسال مجدد است.
TCP تضمین میدهد که دادهها به همان شکلی که ارسال شدهاند به مقصد میرسد.
TCP یک پروتکل اتصالگرا است و ارسالکننده را مجبور میکند قبل از ارسال واقعی دادهها یک ارتباط پایدار میان دو نقطه برقرار شود.
TCP امکان بررسی خطا و مکانیسم بازیابی خطا دارد که مزیت مهمی نسبت به پروتکل UDP ارائه میکند.
TCP امکان کتارل گردش و کیفیت خدمات را ارائه میکند.
TCP در وضعیت انتها به انتها به شکل کلاینت/سرور رفتار میکند.
TCP سرور فول دوپلکس ارائه میکند، به این معنا که میتواند نقشهای هر دو گیرنده و فرستنده را بازی کند.
سرآیند
کمینه اندازه سرآیند TCP بیست بایت و بیشینه آن 60 بایت است.
تعریف هر یک از فیلدهای بالا به شرح زیر است:
پورت مبدا (Source Port): به اندازه 16 بیت- این بخش پورت مبدا پردازش درخواست را در دستگاه ارسالکننده مشخص میکند.
پورت مقصد (Destination Port) به اندازه 16 بیت- این بخش پورت مقصد پردازش برنامه کاربردی را در دستگاه دریافتکننده مشخص میکند.
شماره تایید وصول (Acknowledgement Number) به اندازه 32 بیت- زمانی که فلگ ACK تعیین شود، شماره فوق شامل توالی بعدی دادههایی است که قرار است دریافت شوند و به عنوان تایید وصول دادههای دریافتی قبلی عمل میکند.
افس دادهها (Data Offset) به طول 4 بیت- این فیلد به اندازه سرآیند TCP (کلمههای 32 بیتی) و آفست دادهها در بسته کنونی در کل قطعه TCP اشاره دارد.
رزرو شده (Reserved) به طول 3 بیت: این بخش برای استفادههای آتی ذخیره میشود و همه آنها به شکل پیشفرض روی صفر تنظیم میشوند.
پرچمها (Flags) هر کدام به طول 1 بیت: Nonce Sum برای پردازش سیگنالرسانی اعلان تراکم صریح استفاده میشود.
CWR: زمانی که یک میزبان بستهای با بیت ECE دریافت کند، فیلد Window را کم میکند تا مطمئن شود که ECE دریافت شده است. تعریف ECE به این شرح است که اگر بیت Syn به مقدار صفر تنظیم شود، در این صورت ECE اعلام میدارد که بسته آیپی دارد تجربه تراکم (CE) سرنام congestion experienceمخصوص به خود است.
URG: مقدار این فیلد اعلام میدارد که فیلد اشارهگر Urgent Pointer دادههای مهمی دارد و باید پردازش شود.
ACK: نشان میدهد که فیلد تایید وصول مهم است. اگر مقدار ACK به صفر تنظیم شده باشد، نشان میدهد که بسته هیچ تاییدی ندارد.
PSH: زمانی که تنظیم شود، یک درخواست به دستگاه گیرنده ارسال میکند تا دادهها را بدون بافر به برنامه گیرنده ارسال کند.
RST فلگ ریست است که ویژگیهایی خاص خود را دارد که از آن جمله باید به موارد زیر اشاره کرد:
برای عدم دریافت اتصال ورودی استفاده میشود.
برای رد اتصال ورودی استفاده میشود.
برای راهاندازی اتصال ورودی استفاده میشود.
SYN: این فلگ برای راهاندازی یک اتصال بین میزبانها استفاده میشود.
FIN: فلگ فوق برای آزاد کردن یک اتصال استفاده شده و هیچ داده اضافی پس از اعمال فیلد فوق ارسال نمیشود. با توجه به اینکه بستهها با فلگ SYN و FIN شماره توالی دارند، باید با ترتیب صحیحی پردازش شوند.
فیلد Windows Size: این فیلد برای کنترل گردش دو دستگاه استفاده میشود و توصیفکننده مقدار بافر برمبنای بایت استی که گیرنده برای یک سگمنت تخصیص داده است. به این معنا که دریافتکننده انتظار دریافت چه مقدار دادههایی را دارد.
Checksum: فیلد فوق شامل مجموع مقادیر سرآیند، دادهها و شبه سرآیندها است.
Urgent Pointer: این مقدار در صورت تعیین فلگ URG روی 1 به بایت دادههای ضروری اشاره دارد.
Options: گزینههای اضافی را ارائه میکند که توسط سرآیندهای عادی پوشش داده نشدهاند. فیلد Option در اغلب موارد با کلمههای 32 بیتی توصیف میشود. اگر فیلد فوق دادههایی کمتر از 32 داشته باشد از فاصلهگذاری برای پوشش بیتهای باقیمانده استفاده میکند تا اندازه آدرس به 32 بیت تنظیم شود.
آدرسدهی
ارتباط TCP میان دو میزبان راه دور توسط شماه پورتها (TSAP) برقرار میشود. در این حالت پورتهای در بازه 0 تا 65535 در دسترس قرار دارند که به شرح زیر تقسیم میشوند:
پورتهای سیستم از 0 تا 1023 هستند
پورتهای کاربری از 1024 تا 49151 هستند.
پورتهای خصوصی یا پویا در بازه 49152 تا 65535 هستند.
مدیریت اتصال
همانگونه که اشاره شد، ارتباط TCP در حالت کلاینت/سرور عمل میکند. کلاینت اتصالی را آغاز میکند و سرور ممکن است آنرا قبول یا رد کند. این فرآیند دستدهی سه مرحلهای برای مدیریت اتصال استفاده میشود.
برقراری اتصال
کلاینت اتصالی را ایجاد میکند و سگمنت مربوطه را به همراه شماره توالی ارسال میکند. سرور با ارسال شماره توالی خود و ACK سگمنت کلاینت که یک واحد بیشتر از شماره توالی کلاینت است، آنرا تایید میکند. کلاینت پس از دریافت ACK سگمنتش را برای تایید پاسخ سرور ارسال میکند.
رهاسازی
سرور و کلاینت میتوانند سگمنت TCP را با تنظیم فلگ FIN روی 0 ارسال کنند. زمانی که سمت گیرنده با تایید FIN پاسخ میدهد ارتباط TCP بسته شده و اتصال آزاد میشود.
مدیریت بر پهنای باند
TCP از مفهوم اندازه پنجره (Window Size) برای رسیدگی دقیقتر به پهنای باند استفاده میکند. اندازه پنجره به ارسالکننده راهدور اعلام میدارد که گیرنده در این سمت قادر به دریافت چه تعداد بایت است. در این حالت ارسال با آهنگ آهسته و اندازه پنجره 1 شروع میشود و در صورت موفقیتآمیز بودن ارتباط مقدار به شکل نمایی افزایش پیدا میکند. بهطور مثال، کلاینت از اندازه پنجره 2 استفاده میکند و 2 بایت داده ارسال میکند. زمانیکه تاییده مربوطه را دریافت کرد، اندازه پنجره را دو بربر میکند و در سگمنت بعدی 4 بایت داده ارسال میکند. زمانی که تایید وصول سگمنت 4 بایتی را دریافت کرد، کلاینت اندازه پنجره را روی 8 تنظیم میکند و اینکار به این شکل ادامه پیدا میکند. اگر یک تایید وصول دریافت نشد، به معنای آن است که دادهها در شبکه انتقال از دست رفتهاند یا سیگنال NACK دریافت شده است، در این شرایط اندازه پنجره نصف شده و مرحله ارسال کند از ابتدا آغاز میشود.
کنترل خطا و گردش
TCP از شمارههای پورت برای اطلاع درباره اینکه سگمنت داده را باید به کدام پردازش کاربردی تحویل دهد استفاده میکند. همچنین از شمارههای توالی برای همگامسازی خود با میزبان راه دور استفاده میکند. تمامی قطعات داده به همراه شمارههای توالی ارسال و دریافت میشوند. فرستنده در زمان دریافت ACK میداند چه سگمنتی به تازگی از جانب گیرنده دریافت شده است. گیرنده نیز به شماره توالی بستهای که اخیرا دریافت کرده اشاره میکند تا فرستنده اطلاع دقیقی در این زمینه داشته باشد. اگر شماره توالی سگمنتی که به تازگی دریافت شده با شماره توالی که گیرنده انتظار دارد مغایرت داشته باشد، بسته رها شده و یک سیگنال NACK برگشت داده میشود. اگر دو قطعه با شماره توالی یکسانی دریافت شوند، مقدار زمان پروتکل TCP برای تصمیمگیری در مورد اولویت هر سگمنت بررسی میشود.
تسهیمسازی
تسهیمسازی (Multiplexing) به تکنیک ترکیب دو یا چند جریان داده در یک نشست اشاره دارد. زمانیکه یک کلاینت TCP اتصالی با سرور را برقرار میکند، همواره به شماره پورت تعریف شده که پردازش کاربردی را مشخص میکند اشاره میکند. کلاینت خودش از یک شماره پورت تصادفی از مجموع شماره پورتهای خصوصی استفاده میکند. کلاینت با استفاده از تکنیک تسهیمسازی در TCP میتواند با چند پردازش کاربردی متفاوت در یک نشست واحد تعامل داشته باشد. بهطور مثال، یک کلاینت، صفحه وبی درخواست میکند که شامل بایتهای مختلف متعلق به HTTP، SMTP، FTP و ..... است. در این حالت Timeout نشست TCP افزایش مییاد و نشست برای مدت زمان طولانیتری باز میکند تا از سربار دستدهی سه مرحلهای پیشگیری کند. در این حالت، سیستم کلاینت قادر است چند اتصال روی یک اتصال مجازی واحد دریافت کند. اگر این اتصالهای مجازی timeout زیادی داشته باشند عملکرد سرور را به شدت کاهش میدهند.
کنترل تراکم
زمانی که مقدار دادههای ورودی به سیستم بیش از حد باشد، سیسنم قادر به مدیریت آنها نیست و مشکل تراکم (congestion) به وجود میآید. TCP تراکم را توسط مکانیسم پنجره کنرل میکند. پروتکل فوق با تعیین یک اندازه پنجره به طرف دیگر ارتباط اعلام میدارد چه مقدار داده را باید ارسال کند. TCP برای مدیریت بهتر مشکل کنترل تراکم از سه الگوریتم افزایش جمعی، کاهش ضربی، آغاز آهسته و واکنش Timeout استفاده میکند.
ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را میتوانید از کتابخانههای عمومی سراسر کشور و نیز از دکههای روزنامهفروشی تهیه نمائید.
ثبت اشتراک نسخه کاغذی ماهنامه شبکه
ثبت اشتراک نسخه آنلاین
کتاب الکترونیک +Network راهنمای شبکهها
- برای دانلود تنها کتاب کامل ترجمه فارسی +Network اینجا کلیک کنید.
کتاب الکترونیک دوره مقدماتی آموزش پایتون
- اگر قصد یادگیری برنامهنویسی را دارید ولی هیچ پیشزمینهای ندارید اینجا کلیک کنید.
نظر شما چیست؟