Трансмисиони контролни протокол

Из Википедије, слободне енциклопедије

Трансмисиони контролни протокол (TCP, енгл. Transmision control protocol) је протокол који припада слоју 4 ОСИ референтног модела, има за улогу да обезбеди поуздан трансфер података у IP окружењу. Између осталих сервиса које нуди, неки су: поузданост, ефикасна контрола тока података, оперисање у фул-дуплексу (истовремено слање и примање података) и мултиплексирање које омогућава истовремен рад низа процеса са виших слојева путем једне конекције. TCP врши трансфер података као неструктурисан низ бајтова који се идентификују секвенцом. Овај протокол групише бајтове у сегменте додели им број секвенце, апликацијама додели број порта и проследи их IP протоколу.

TCP обезбеђује поузданост покретањем алгоритама који пре размене података прво успоставе конекцију између корисника, а потом обезбеђује и низ механизама као што је слање ACK броја. Страна која прима податке шаље број секвенце бајта које је примио, у случају да дестинација не пошаље ACK да је примио одређену секвенцу бајтова у одређеном временском интервалу она бива накнадно поново послата. Механизми поузданости код TCP-а омогућују уређајима да се носе са губицима, кашњењима, дуплицирањем или погрешним ишчитавањем пакета. Time-out механизам омогућује уређају да детектује изгубљене пакете и да захтева њихову поновну трансмисију.

TCP заглавље[уреди]

бит 0-3 4-10 16-31
Изворишни порт Одредишни порт
Број сегмента (SEQ)
Број следећег бајта (ACK)
Дужина Резервисано

U R G

A C K

P S H

R S T

S Y N

F I  N

Величина динамичког прозора
Чексума (Провера битских грешака) Показивач приоритета (URG)
Опције
Податак

Поља:

  • Изворишни порт - додељен број (16 бита), идентификује апликацију која је иницијатор комуникације
  • Одредишни порт - порт који идентификује серверску апликацију (16 бита)
  • Број сегмента (SEQ) - редни број сегмента у односу на почетни (број бајта у односу на иницијални)(32 бита)
  • Број следећег бајта (ACK) - редни број бајта послат предајној страни који очекује да прими (32 бита)
  • Дужина - Дужина заглавља
  • Резервисана поља
  • URG, ACK, PSH, RST, SYN, FIN представљају контролне бите
  • Величина динамичког прозора - број октета које је могуће слати без потврде о њиховом пријему
  • Чексума - Провера битских грешака, комплемент суме TCP заглавља
  • Показивач приоритета (URG) - показује важност поруке која се шаље
  • Опције - Опциона информација
  • Податак - ако постоји опциона информација битови почевши са 192 представљају податак, иначе од 160. бита

Успостављање конекције[уреди]

Комуникација између апликација уз помоћ TCP протокола се одвија тако што се прво између клијента и сервера успостави веза (услуга са конекцијом), за разлику од комуникације UDP протоколом који је не захтева. Конекција се успоставља тако што се између пријемне и предајне стране из три пута размене поруке са подешеним одговарајућим контролним битима.

  1. Предајна страна A шаље поруку са подешеним контролним битом SYN=1 (енгл. SYNchronize Sequence Number), остали су подешени на 0, при чему насумично изабере редни број сегмента (SEQA).
  2. Пријемна страна B одговара поруком са контролним битима SYN и ACK=1, свој број сегмента бира такође насумично (SEQB), а за ACK број узима ACK=(SEQA)+1, овим је успостављена веза на линији од предајне ка пријемној страни.
  3. Слањем поруке са подешеним контролним битом SYN=1 од пријемне стране, она захтева да предајна страна потврди успостављање везе од пријемне ка предајној страни. Што она и чини тако што одговара поруком са подешеним контролним битом ACK=1 (енгл. ACKnowledgment number), док уз то узима вредност ACK броја ACK=(SEQB)+1. Овим је успостављена обострана конекција између клијента и сервера.

Прекидање конекције[уреди]

При завршетку слања података, сервер шаље поруку са подешеним контролним битом FIN=1 (енгл. FINish). Веза од сервера ка клијенту се прекида тиме што клијент на слање овакве поруке одговара са поруком са подешеним контролним битом ACK=1 (потврда о пријему). Уколико и клијент жели затворити конекцију он исто тако шаље поруку са подешеним битом FIN=1. Коначно обострано прекидање везе се потврђује од стране сервера који одговара са поруком у чијем је заглављу подешен бит ACK=1.

Види још[уреди]