TCP
| Internet protokoli |
|---|
| Sloj aplikacije |
| BGP • DHCP • DNS • FTP • HTTP • IMAP • IRC • LDAP • MGCP • NNTP • NTP • POP • RIP • RPC • RTP • SIP • SMTP • SNMP • SOCKS • SSH • Telnet • TLS/SSL • XMPP |
| Transportni sloj |
| TCP • UDP • DCCP • SCTP • RSVP • ECN |
| Internet sloj |
| IP • IPv4 • IPv6 • ICMP • ICMPv6 • IGMP • IPsec |
| Sloj veze |
|
ARP • NDP • OSPF • Tunneling protocol • L2TP • PPP • Media access control • Eternet • DSL • ISDN • FDDI |
TCP (енгл. Transmition 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) | ||||||||||||||||||||||||||||||
| Опције | |||||||||||||||||||||||||||||||
| Податак | |||||||||||||||||||||||||||||||
Поља:
- Изворишни порт - додељен број (32 бита) ~ 65000, идентификује апликацију која је иницијатор комуникације
- Одредишни порт - порт који идентификује серверску апликацију
- Број сегмента (SEQ) - редни број сегмента у односу на почетни (број бајта у односу на иницијални)
- Број следећег бајта (ACK) - редни број бајта послат предајној страни који очекује да прими
- Дужина - Дужина заглавља
- Резервисана поља
- URG, ACK, PSH, RST, SYN, FIN представљају контролне бите
- Величина динамичког прозора - број октета које је могуће слати без потврде о њиховом пријему
- Чексума - Провера битских грешака, комплемент суме TCP заглавља
- Показивач приоритета (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.