TCP (پروتکل کنترل انتقال : transmission control protocol )
این پروتکل در لایه انتقال مدل OSI عمل میکند و خدمت های قابل اطمینانی برای تحویل داده در اختیار قرار می دهد. TCP یک پروتکل اتصال گرا است به شکلی که تا اتصال به طور کامل بین گره های مورد نظر برقرار نشود اقدام به تبادل اطلاعات نمی کند.همچنین این پروتکل در عمل انتقال ، با استفاده از Checksum و ترتیب گذاری از تحویل درست داده اطمینان حاصل می کند.بدون این ابزار ، داده های انتقال یافته قابل تشخیص نبوده و نمی توان درستی آنها را کنترل و یا مقصدشان را به دست آورد. در نهایت TCP با استفاده از کنترل جریان از بمباران داده ای گره جلوگیری میکند.
شکل قالب قطعه TCP ، موجودیتی که در لایه شبکه توسط دیاگرام IP محصور می شود را نشان می دهد.
در زیر فیلد های قطعه TCP تشریح شده اند:
درگاه مبدا:شماره درگاه گره را مشخص میکند شماره درگاه آدرسی روی میزبان است که یک برنامه از آن برای ارسال و دریافت داده استفاده می کند.به عنوان مثال می توان به درگاه ۸۰ اشاره کرد که معمولا برای پذیرش در خواست های صفحات وب در پروتکل HTTP استفاده می شود.طول این فیلد ۱۶ بیت است.
درگاه مقصد:شماره درگاه گره مقصد را مشخص میکند.این فیلد نیز مانند درگاه مبدا دارای ۱۶ بیت طول می باشد.
شماره ترتیب :در جریان داده های ارسال شده ، موقعیت قطعه ی داده ی فعلی را مشخص میکند .طول این فیلد ۳۲ بیت است.
شماره تصدیق (ACK) :با استفاده از پیغام برگشتی از فرستنده ، دریافت صحیح داده را تصدیق میکند.
طول سرآیند:طول سرآیند TCP را مشخص میکند.این بیت دارای ۴ بیت طول می باشد.
رزرو شده: یک فیلد ۶ بیتی که برای استفاده های بعدی رزرو شده است.
پرچم ها: مجموعه ی ۶ فیلد یک بیتی است که هر کدا بیانگر شرایطی هستند.پرچم های زیر برای فرستنده قابل استفاده می باشند:
- URG : یک بودن این فیلد به معنی این است که فیلد اشاره گر فوری برای گیرنده حاوی اطلاعات است.
- ACK : یک بودن این فیلد به معنای این است که فیلد تصدیق برای گیرنده حاوی اطلاعات می باشد.
- PSH : یک بودن این فیلد به این معناست که داده ی ارسالی باید بدون استفاده از بافر به برنامه ارسال شود.
- RST : یک بودن این فیلد به فهوم درخواست برقراری مجدد ارتباط از سوی فرستنده می باشد.
- SYN : اگر دارای مقدار یک باشد به این معنی است که فرستنده خواستار همگاهی شماره ترتیب بسته های بین دو گره می باشد. از این کد زمانی استفاده می شود که TCP برای تنظیم شماره ی ترتیب آغازین ، اتصالی را درخواست کند.
- FIN : اگر یک باشد قطعه مورد نظر آخرین قطعه بوده و اتصال باید بسته شود.
پنجره:مشخص کننده ی تعداد بایتی است که فرستنده میتواند تا زمان دریافت تصدیق ، ارسال کند .در واقع این فیلد عهده دار کنترل جریان است و از ارسال اضافی بایت به سمت گیرنده جلوگیری میکند.طول این فیلد ۱۶ بیت می باشد.
Checksum : به گیرنده این امکان را می دهد که سالم یا ناسالم بودن قطعه ی TCP را بررسی کند.این فیلد ۱۶ بیت است.
اشاره گر فوری:محلی در فیلد داده که حاوی داده ی فوری است را مشخص می کند. این فیلد دارای طول ۱۶ بیتی است.
گزینه ها (options) : حاوی گزینه های ویژه ای مانند حداکثر اندازه قطعه ای که شبکه می تواند انتقال دهد می باشد . اندازه این بیت می تواند بین ۰ تا ۳۲ بیت متغیر باشد.
لایه گذاری (padding) : شامل اطلاعاتی برای مطمئن شدن از ظریب ۳۲ بیتی بودن اندازه سرآیند TCP است.اندازه این فیلد متغیر و غالبا ۰ است.
داده:شامل داده هایی که توسط گره ی مبدا باید ارسال شوند.اندازه این فیلد به میزان داده ی مورد نیاز برای ارسال اندازه قطعه TCP قابل ارسال روی شبکه و محدودیت مربوط به جایگیری یک قطعه در دیتا گرام IP بستگی دارد.