Transmisioni kontrolni protokol
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 |
Transmisioni kontrolni protokol (TCP, engl. Transmition control protocol) 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.
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
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.
- Predajna strana A šalje poruku sa podešenim kontrolnim bitom SYN=1 (engl. SYNchronize Sequence Number), ostali su podešeni na 0, pri čemu nasumično izabere redni broj segmenta (SEQA).
- 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.
- 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. ACKnowledgment number ), dok uz to uzima vrednost ACK broja ACK=(SEQB)+1. Ovim je uspostavljena obostrana konekcija između klijenta i servera.
Pri završetku slanja podataka, server šalje poruku sa podešenim kontrolnim bitom FIN=1 (engl. FINish). 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.