Prijeđi na sadržaj

Transmisioni kontrolni protokol

Izvor: Wikipedija

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

[uredi | uredi kod]
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

[uredi | uredi kod]

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. SYNchronize Sequence Number), 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. ACKnowledgment number ), dok uz to uzima vrednost ACK broja ACK=(SEQB)+1. Ovim je uspostavljena obostrana konekcija između klijenta i servera.

Prekidanje konekcije

[uredi | uredi kod]

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

[uredi | uredi kod]