Трансмисиони контролни протокол (енгл.Transmision control protocol, скраћено TCP) је протокол који припада слоју 4ОСИ референтног модела, има за улогу да обезбеди поуздан трансфер података у IP окружењу. Између осталих сервиса које нуди, неки су: поузданост, ефикасна контрола тока података, оперисање у фул-дуплексу (истовремено слање и примање података) и мултиплексирање које омогућава истовремен рад низа процеса са виших слојева путем једне конекције. TCP врши трансфер података као неструктурисан низ бајтова који се идентификују секвенцом. Овај протокол групише бајтове у сегменте додели им број секвенце, апликацијама додели број порта и проследи их IP протоколу.[1][2]
TCP обезбеђује поузданост покретањем алгоритама који пре размене података прво успоставе конекцију између корисника, а потом обезбеђује и низ механизама као што је слање ACK броја.
Страна која прима податке шаље број секвенце бајта које је примио, у случају да дестинација не пошаље ACK да је примио одређену секвенцу бајтова у одређеном временском интервалу она бива накнадно поново послата.
Механизми поузданости код TCP-а омогућују уређајима да се носе са губицима, кашњењима, дуплицирањем или погрешним ишчитавањем пакета. Time-out механизам омогућује уређају да детектује изгубљене пакете и да захтева њихову поновну трансмисију.
Историјско порекло
У мају 1974, Винтон Серф и Боб Кан су описали мрежни протокол за дељење ресурса користећи пренос пакета између мрежних чворова.[1] Аутори су сарађивали са Жераром ле Ланом на инкорпорацији концепата из француског CYCLADES пројекта у нову мрежу.[2] Спецификацију резултирајућег протокола, RFC675 (Specification of Internet Transmission Control Program), написали су Винт Церф, Јоген Далал и Карл Суншајн, а она је објављена у децембру 1974. Тај документ садржи прву потврђену употребу термина Интернет, као скраћенице за међуумрежавање.[3]
Централна контролна компонента овог модела био је Трансмисиони контролни програм који је обухвато конекционо оријентисане везе и датаграмске услуге између рачунара. Монолитни Трансмисиони контролни програм касније је подељен на модуларну архитектуру која се састоји од Трансмисионог контролног протокола и Интернет протокола. То је резултирало мрежним моделом који је неформално постао познат као TCP/IP, мада се формално варијабилно називан моделом Департмана одбране (DOD) и ARPANET моделом, а на крају и као група интернет протокола.
Трансмисиони контролни протокол омогућава комуникационе услуге на средњем нивоу између апликационог програма и Интернет протокола. Он омогућава повезивање рачунара са рачунаром на транспортном нивоуинтернетског модела. Апликација не мора да познаје посебне механизме за слање података путем везе до другог рачунара, као што је неопходна ИП фрагментација да би се прилагодило максималној трансмисионој јединици преносног медија. На транспортном слоју, TCP обрађује све детаље о руковању и преносу, и представља апстракцију мрежне везе са апликацијом, обично путем интерфејса мрежне утичнице.
На нижим нивоима стека протокола, због загушења мреже, балансирања оптерећења у промету или непредвидивог понашања мреже, ИП пакети се могу изгубити, дуплирати или испоручити ван редоследа. ТЦП открива ове проблеме, захтева поновни пренос изгубљених података, преуређује податке који нису по редоследу и чак помаже да се смањи загушење мреже како би се смањила појава осталих проблема. Ако подаци и даље остају неиспоручени, извор се обавештава о овом квару. Након што TCP пријемник поново састави низ првобитно пренесених октета, прослеђује их прималачкој апликацији. Тако TCP апстрактује комуникацију апликације од основних детаља мрежног преноса.
TCP је оптимизован за прецизну испоруку, а не правовремену испоруку и може имати релативно дуге застоје (реда величине више секунди) док се чека на поруке изван редоследа или поновни пренос изгубљених порука. Због тога он није нарочито погодан за апликације у реалном времену, као што је интернетска телефонија. За такве апликације обично се препоручују протоколи попут протокола за транспорт у стварном времену (RTP) који раде преко протокола корисничког датаграма (UDP).[6]
Показивач приоритета (URG) - показује важност поруке која се шаље
Опције - Опциона информација
Податак - ако постоји опциона информација битови почевши са 192 представљају податак, иначе од 160. бита
Успостављање конекције
Комуникација између апликација уз помоћ TCP протокола се одвија тако што се прво између клијента и сервера успостави веза (услуга са конекцијом), за разлику од комуникације UDP протоколом који је не захтева. Конекција се успоставља тако што се између пријемне и предајне стране из три пута размене поруке са подешеним одговарајућим контролним битима.
Предајна страна A шаље поруку са подешеним контролним битом SYN=1 (енгл.SYNchronize Sequence Number), остали су подешени на 0, при чему насумично изабере редни број сегмента (SEQA).
Пријемна страна B одговара поруком са контролним битима SYN и ACK=1, свој број сегмента бира такође насумично (SEQB), а за ACK број узима ACK=(SEQA)+1, овим је успостављена веза на линији од предајне ка пријемној страни.
Слањем поруке са подешеним контролним битом SYN=1 од пријемне стране, она захтева да предајна страна потврди успостављање везе од пријемне ка предајној страни. Што она и чини тако што одговара поруком са подешеним контролним битом ACK=1 (енгл.ACKnowledgment number), док уз то узима вредност ACK броја ACK=(SEQB)+1. Овим је успостављена обострана конекција између клијента и сервера.
Прекидање конекције
При завршетку слања података, сервер шаље поруку са подешеним контролним битом FIN=1 (енгл.FINish). Веза од сервера ка клијенту се прекида тиме што клијент на слање овакве поруке одговара са поруком са подешеним контролним битом ACK=1 (потврда о пријему). Уколико и клијент жели затворити конекцију он исто тако шаље поруку са подешеним битом FIN=1. Коначно обострано прекидање везе се потврђује од стране сервера који одговара са поруком у чијем је заглављу подешен бит ACK=1.
Stevens, W. Richard; Wright, Gary R. TCP/IP Illustrated, Volume 2: The Implementation. ISBN978-0-201-63354-2.
Stevens, W. Richard. TCP/IP Illustrated, Volume 3: TCP for Transactions, HTTP, NNTP, and the UNIX Domain Protocols. ISBN978-0-201-63495-2.**
Muhammad Adeel & Ahmad Ali Iqbal (2004). TCP Congestion Window Optimization for CDMA2000 Packet Data Networks. International Conference on Information Technology (ITNG'07). стр. 31—35. ISBN978-0-7695-2776-5. doi:10.1109/ITNG.2007.190.