| 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 |
| * p
* r
* u
 |

**Transmisioni kontrolni protokol** (*TCP*, engl. ) je protokol koji pripada sloju 4 OSI referentnog modela, ima za ulogu da obezbezbedi pouzdan transfer podataka u IP okruženju. Između ostalih servisa koje nudi, neki su: pouzdanost, efikasna kontrola toka podataka, operisanje u ful-dupleksu (istovremeno slanje i primanje podataka) i multipleksiranje koje omogućava istovremen rad niza procesa sa viših slojeva putem jedne konekcije. TCP vrši transver podataka kao nestrukturisan niz bajtova koji se identifikuju sekvencom. Ovaj protokol grupiše bajtove u segmente dodeli im broj sekvence, aplikacijama dodeli broj porta i prosledi ih IP protokolu.

TCP obezbeđuje pouzdanost pokretanjem algoritama koji pre razmene podataka prvo uspostave konekciju između korisnika, a potom obezbeđuje i niz mehanizama kao što je slanje ACK broja.
Strana koja prima podatke šalje broj sekvence bajta koje je primio, u slučaju da destinacija ne pošalje ACK da je primio određenu sekvencu bajtova u određenom vremenskom intervalu ona biva naknadno ponovo poslata.
Mehanizmi pouzdanosti kod TCP-a omogućuju uređajima da se nose sa gubicima, kašnjenjima, dupliciranjem ili pogrešnim isčitavanjem paketa. Time-out mehanizam omogućuje uređaju da detektuje izgubljene pakete i da zahteva njihovu ponovnu transimsiju.

TCP zaglavlje
-------------


|  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| **bit 0-3**  | **4-10**  |  |  |  |  |  |  | **16-31** |
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|  Izvorišni port |  Odredišni port |
|  Broj segmenta (SEQ) |
|  Broj sledećeg bajta (ACK) |
|  Dužina  |  Rezervisano 
  | U
R
G
 | A
C
K
 | P
S
H
 
  | R
S
T
 | S
 Y
N
 | F I 
N
 |  Veličina dinamičkog prozora |
|  Čeksuma (Provera bitskih grešaka) 
  |  Pokazivač prioriteta (URG) |
|  Opcije |
|  Podatak |

Polja:

* Izvorišni port - dodeljen broj (32 bita) ~ 65000, identifikuje aplikaciju koja je inicijator komunikacije
* Odredišni port - port koji identifikuje serversku aplikaciju
* Broj segmenta (SEQ) - redni broj segmenta u odnosu na početni (broj bajta u odnosu na inicijalni)
* Broj sledećeg bajta (ACK) - redni broj bajta poslat predajnoj strani koji očekuje da primi
* Dužina - Dužina zaglavlja
* Rezervisana polja
* URG, ACK, PSH, RST, SYN, FIN predstavljaju kontrolne bite
* Veličina dinamičkog prozora - broj okteta koje je moguće slati bez potvrde o njihovom prijemu
* Čeksuma - Provera bitskih grešaka, komplement sume TCP zaglavlja
* Pokazivač prioriteta (URG) - pokazuje važnost poruke koja se šalje
* Opcije - Opciona informacija
* Podatak - ako postoji opciona informacija bitovi počevši sa 192 predtavljaju poratak, inače od 160. bita

Uspostavljanje konekcije
------------------------

Komunikacija između aplikacija uz pomoć TCP protokola se odvija tako što se prvo između klijenta i servera uspostavi veza (usluga sa konekciojm), za razliku od komunikacije UDP protokolom koji je ne zahteva. Konekcija se uspostavlja tako što se između prijemne i predajne strane iz tri puta razmene poruke sa podešenim odgovarajućim kontrolnim bitima.

1. Predajna strana A šalje poruku sa podešenim kontrolnim bitom SYN=1 (engl. ), ostali su podešeni na 0, pri čemu nasumično izabere redni broj segmenta (SEQA).
2. Prijemna strana B odgovara porukom sa kontrolnim bitima SYN i ACK=1, svoj broj segmenta bira takođe nasumično (SEQB), a za ACK broj uzima ACK=(SEQA)+1, ovim je uspostavljena veza na liniji od predajne ka prijemnoj strani.
3. Slanjem poruke sa podešenim kontrolnim bitom SYN=1 od pijemne strane, ona zahteva da predajna strana potvrdi uspostavljanje veze od prijmne ka predajnoj strani. Što ona i čini tako što odgovara porukom sa podešenim kontrolnim bitom ACK=1 (engl. ), dok uz to uzima vrednost ACK broja ACK=(SEQB)+1. Ovim je uspostavljena obostrana konekcija između klijenta i servera.

Prekidanje konekcije
--------------------

Pri završetku slanja podataka, server šalje poruku sa podešenim kontrolnim bitom FIN=1 (engl. ). Veza od servera ka klijentu se prekida time što klijent na slanje ovakve poruke odgovara sa porukom sa podešenim kontrolnim bitom ACK=1 (potvrda o prijemu). Ukoliko i klijent želi zatvoriti konekciju on isto tako šalje poruku sa podešenim bitom FIN=1. Konačno obostrano prekidanje veze se potvrđuje od strane servera koji odgovara sa porukom u čijem je zaglavlju podešen bit ACK=1.

Vidi još
--------

***Transmisioni kontrolni protokol*** na Wikimedijinoj ostavi

* UDP
* Internet protokol
* Spisak internet protokola