تخفیف ویژه ماه مبارک رمضان، فرصت یادگیری با 35٪ تخفیف (کد تخفیف: ramazan)

سبد خرید (0)

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

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

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


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

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

 سربرگ (Header)

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

TCP Header

  • پورت منبع (16بیت) پورت منبع فرآیند روی دستگاه ارسال را شناسایی می کند.
  • پورت مقصد (16بیت) پورت مقصد فرآیند مربوط به دستگاه گیرنده را شناسایی می کند.
  • شماره توالی (32 بیت) شماره دنباله ای از بایت داده ها از یک بخش در یک نشست کاری را مشخص می کند.
  • شماره تایید (32 بیت) هنگامی که پرچم ACK  تنظیم شود، این عدد شامل تعداد توالی بعدی بایت داده مورد انتظار می باشد و به عنوان تاییدی برای داده های دریافت شده قبلی کار می کند.
  • داده افست (4 بیت) این فیلد دلالت بر دو مورد دارد، اندازه سربرگ TCP (یک کلمه 32 بیتی) و جایگاه داده ها در بسته فعلی در طول بخش TCP.
  • رزرو شده (3 بیت) برای استفاده در آینده رزرو شده و همه بیت های آن به طور پیش فرض صفر تنظیم شده است.
  • پرچم (یک بیتی) دارای یک بیت کنترلی می باشد و انواع مختلفی دارد :

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

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

  • اگر بیت SYN مقدار صفر بگیرد، پس از آن منظور از ECE بدان معنی است که بسته IP بیتCE  (تجربه ازدحام) خود را تنظیم کرده است.
  • اگر بیت SYN به 1 تنظیم شود، ECE  بدان معنی است که مقدارECT  مربوط به دستگاه فعال شده است.

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

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

  • برای رد اتصال به ورودی از آن استفاده می شود.
  • برای رد یک بخش از آن استفاده می شود.
  •  برای راه اندازی مجدد یک اتصال از آن استفاده می شود.

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

  • اندازه پنجره : این فیلد برای کنترل جریان بین دو ایستگاه استفاده می شود و میزان بافر (برحسب بایت) که گیرنده برای یک بخش اختصاص داده را نشان می دهد، به عنوان مثال چه مقدار اطلاعات مورد انتظار گیرنده است.
  • بررسی : این فیلد شامل کنترل سربرگ، داده ها و شبه سربرگ ها می باشد.
  • اشاره گر فوری : آن فیلد در صورتی که پرچم URG دارای مقدار یک باشد به بایت داده فوری اشاره می کند.
  • گزینه ها : این فیلد گزینه های اضافی را فراهم می کند که توسط هدر منظم تحت پوشش نیست. فیلد گزینه همیشه توسط کلمه 32 بیتی توصیف می شود. اگر این فیلد شامل داده با طول کمتر از 32 بیت باشد، برای پوشش بیت های باقیمانده تا رسیدن به مرز 32 بیت از تکنیک هایی استفاده می شود.

 آدرس دهی (Addressing)

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

  • پورت های سیستم (0 - 1023)
  • پورت های کاربر (1024-49151)
  • پورت های خصوصی/ پویا  (49152-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  با استفاده از انواع مختلف تایمر کنترل و مدیریت وظایف مختلف را انجام می دهد :

  • تایمر حفظ اتصال (Keep-alive timer):

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

  • تایمر ارسال مجدد (Retransmission timer):

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

  • تایمر ادامه (Persist timer):

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

  • انتظار به موقع (Timed-Wait) :

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


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

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