پروتکل کنترل انتقال

چاپ

پروتکل کنترل انتقال (TCP)

پروتکل کنترل انتقال (TCP) یکی از پروتکل های مهم از مجموعه پروتکل های اینترنت است. TCP گسترده ترین و پر استفاده ترین پروتکل برای انتقال داده ها در شبکه های ارتباطی مانند اینترنت است.


 امکانات پروتکل کنترل انتقال (TCP)


 سربرگ (Header)

طول سربرگ TCP حداقل 20 بایت و حداکثر 60 بایت است.

TCP Header

NS -  : این بیت مجموع است و برای هشدار ازدحام صریح در فرآیند سیگنالینگ استفاده می شود.

CWR - : هنگامی که یک میزبان بسته با تنظیم بیت ECE دریافت می کند، این گزینه نیز پنجره کاهش ازدحام را برای تایید  ECE دریافت شده تنظیم می کند.
-ECE  : دو معنا دارد:

URG -  : این بیت نشان می دهد که فیلد فوری اشاره گر شامل داده با اهمیتی بوده و باید پردازش شود.

ACK -  : این بیت نشان می دهد که فیلد تایید دارای اهمیت است. اگر ACK به مقدار صفر تنظیم شود، نشان می دهد که بسته هیچ گونه پیام تاییدی ندارد.
PSH -  : هنگامی که تنظیم شود، بدین معنی است که یک درخواست به ایستگاه دریافت داده ها می فرستند تا داده ها را بصورت فشاری (Push) و بدون بافر کردن به برنامه دریافت بدهد.
RST -  : پرچم تنظیم مجدد دارای ویژگی های زیر است :

SYN -  : این پرچم برای راه اندازی یک اتصال بین میزبان ها استفاده می شود.
FIN -  : این پرچم برای آزاد کردن یک اتصال و عدم تبادل اطلاعات بیشتر پس از آن استفاده می شود. از آنجا که بسته هایی با پرچم SYN وFIN  شماره ترتیب دارند، به ترتیب درستی پردازش می شوند.


 آدرس دهی (Addressing)

 ارتباط TCP بین دو میزبان از راه دور با استفاده از شماره پورت (TSAPs) انجام می شود. شماره پورت از محدوده صفر تا  65535  می باشد که به صورت زیر تقسیم می شوند:


 مدیریت اتصال

ارتباط TCP در مدل سرور/مشتری کار می کند. مشتری اتصال را آغاز و سرور هم آن را قبول و یا رد می کند. روشی به نام دست دادن سه مرحله ای (Three-way handshaking) برای مدیریت اتصال استفاده می شود.

TCP Handshake


 استقرار (Establishment)

مشتری آغازگر اتصال بوده و با یک شماره توالی بخش ها را می فرستد. سرور با شماره ترتیب خود پیام تایید بر می گرداند و بیت ACK  بخش مشتری یکی بیشتر از شماره توالی مشتری می باشد. مشتری پس از دریافت ACK مربوط به بخش خود، پیام تایید از طرف سرور ارسال می کند.


رهایی (Release)

هر کدام از سرور و کلاینت می توانند سگمنت TCP  را با تنظیم پرچم FIN با مقدار یک ارسال کنند. هنگامی که در پایان دریافت، پاسخ با تصدیق  FINداده شود، ارتباط TCP بسته شده و ارتباط آزاد می شود.


 مدیریت پهنای باند

TCP  از مفهوم اندازه پنجره به جای مدیریت پهنای باند استفاده  می کند. اندازه پنجره به فرستنده راه دور می گوید، چه تعداد بخش های بایت داده را گیرنده می تواند دریافت کند. TCP  از فاز شروع آهسته واندازه پنجره 1 آغاز می کند و اندازه پنجره را به صورت تصاعدی پس از هر ارتباط موفق افزایش می دهد.
به عنوان مثال، مشتری با استفاده از اندازه پنجره 2 به تعداد 2 بایت از داده ها را می فرستد. زمانی که پیام تایید این بخش دریافت شود اندازه پنجره به دو برابر یعنی 4 ارتقا می یابد و سپس در ارسال بخش بعدی به میزان 4 بایت داده ارسال خواهد شد. هنگامی که پیام تایید قطعه داده 4 بایتی دریافت می شود، مشتری اندازه پنجره را به 8 افزایش می دهد و به همین صورت ادامه می یابد.
اگر یک پیام تایید از دست رفته باشد، به عنوان مثال داده ها در شبکه از بین رفته و یا پیام  NACKدریافت شود، پس از آن اندازه پنجره به نصف کاهش یافته و فاز شروع آهسته دوباره اجرا می شود.


 کنترل خطا و کنترل جریان (Error Control & Flow Control)

TCP  با استفاده از شماره پورت، از فرایند کاربردی مورد نیاز برای تحویل قطعه داده مطلع می شود. همراه با این کار، از شماره ترتیب مربوطه برای همگام شدن خود با میزبان راه دور استفاده می کند. همه بخش های داده ها با شماره های ترتیبی ارسال و دریافت می شوند. فرستنده آخرین بخش داده دریافت شده توسط گیرنده با استفاده از پیام  ACKرا می داند. گیرنده نیز در مورد آخرین قسمت ارسالی توسط فرستنده با مراجعه به شماره توالی بسته اخیرا فرستاده شده اطلاع می یابد.
اگر شماره ترتیب یک بخش که به تازگی دریافت شده با شماره ترتیب مورد انتظار گیرنده مطابقت نداشته باشد، سپس آن را دور انداخته و پیام  NACK ارسال می شود. اگر دو بخش با شماره ترتیب یکسان دریافت شوند، مقدار برچسب زمان TCP آنها مقایسه شده تا تصمیم گیری مناسب صورت گیرد.


 تسهیم سازی (Multiplexing)

این روش برای ترکیب دو یا چند جریان داده ها در یک نشست بکار می رود که به عنوان تسهیم سازی نامیده می شود. هنگامی که یک کلاینت TCP ارتباط اولیه ای با سرور برقرار می کند، همیشه به یک شماره پورت مناسب اشاره دارد که توسط فرایند کاربردی مشخص می شود. کلاینت معمولا از یک شماره پورت استفاده می کند که به طور تصادفی از مخزن شماره پورت خصوصی انتخاب شده است.
با استفاده از تسهیم سازی در TCP ، کلاینت می تواند با تعدادی از برنامه های مختلف در یک جلسه ارتباط برقرار کند. برای مثال، کلاینت، یک صفحه وب را درخواست  می کند که به نوبه خود شامل انواع مختلف داده ها (HTTP، SMTP، FTP و غیره) می باشد.  سپس زمانبندی جلسه افزایش می یابد و جلسه برای زمان طولانی تر باز نگه داشته می شود به طوری که از سربار ناشی از روش دست تکانی سه مرحله ای اجتناب شود.
این کار سیستم کلاینت را قادر به دریافت اتصال چندگانه روی یک ارتباط مجازی واحد می کند. این اتصالات مجازی در صورتی که فاصله زمانی به شدت طولانی شود، برای سرورها مناسب نیستند.


 کنترل ازدحام (congestion control)

هنگامی که مقدار زیادی از اطلاعات به سیستم داده می شود در حالی که قادر به مدیریت و کنترل آن نباشد، اصطلاحا تراکم یا ازدحام رخ می دهد.  TCP  با استفاده از راهکار پنجره ازدحام را کنترل می کند.  TCP یک اندازه پنجره را تنظیم کرده و میزان  قطعه داده قابل ارسال را به سیستم های دیگر خبر می دهد.  TCP  ممکن است سه الگوریتم برای کنترل ازدحام استفاده کند:


 مدیریت تایمر (timer management)

TCP  با استفاده از انواع مختلف تایمر کنترل و مدیریت وظایف مختلف را انجام می دهد :

این تایمر برای بررسی یکپارچگی و اعتبار یک اتصال استفاده می شود. هنگامی که زمان زنده حفط اتصال منقضی می شود، میزبان بررسی می کند که آیا اتصال هنوز وجود دارد.

این تایمر حفظ جلسه اطلاعات فرستاده شده را به عهده دارد. اگر پیام تایید داده های ارسال شده تا زمان ارسال مجدد دریافت نشود، قطعه داده دوباره ارسال می شود.

نشست TCP می تواند توسط هر میزبان با ارسال اندازه پنجره صفر متوقف شود. برای از سر گرفتن جلسه، یک میزبان نیاز به ارسال اندازه پنجره با مقادیر بزرگتر دارد. اگر این بخش هرگز به انتهای دیگر نرسد، هر دو به پایانه ممکن است برای زمان بی نهایت منتظر یکدیگربمانند. وقتی این تایمر منقضی شد، میزبان دوباره اندازه پنجره خود را برای اطلاع سایر پایانه ها می فرستد. این تایمر به جلوگیری از بن بست ها در ارتباط کمک می کند.

پس از آزاد شدن یک اتصال، هر کدام از میزبان ها منتظر یک زمان مناسب می مانند تا ارتباط را به طور کامل پایان دهند. این کار به این منظور صورت می گیرد که اطمینان حاصل شود که پایانه های دیگر پیام تایید مربوط به درخواست قطع اتصال را دریافت کرده باشند. گذر زمان می تواند حداکثر 240 ثانیه (4 دقیقه) باشد.


 بازیابی از سقوط (Crash Recovery)

پروتکل TCP بسیار قابل اعتماد است و به هر یک از بایت های فرستاده شده در بخش یک شماره توالی فراهم می کند. این امر مکانیسم بازخوردی دارد به عنوان مثال هنگامی که یک میزبان یک بسته دریافت می کند، موظف است با پیام ACK دریافت آن بسته را تایید کند و این پیام تایید دارای شماره ترتیب بعدی مورد انتظار می باشد (اگر آخرین بخش داده نباشد)
هنگامی که یک سرور TCP در اواسط برقراری ارتباط دچار مشکل می شود، دوباره فرایند آن را شروع می کند و بسته TPDU را بصورت پخش گسترده به تمام میزبان ها می فرستد. پس از آن میزبان ها می توانند آخرین قطعه داده که هرگز تایید نمی شود را بفرستند.