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.
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.
- 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.
Prekidanje konekcije
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.
Povezano
![](http://upload.wikimedia.org/wikipedia/commons/thumb/4/4a/Commons-logo.svg/15px-Commons-logo.svg.png)