Pređi na sadržaj

Transmisioni kontrolni protokol

S Vikipedije, slobodne enciklopedije

Transmisioni kontrolni protokol (engl. Transmision control protocol, skraćeno TCP) je protokol koji pripada sloju 4 OSI referentnog modela, ima za ulogu da obezbedi 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 transfer 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.[1][2]

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 iščitavanjem paketa. Time-out mehanizam omogućuje uređaju da detektuje izgubljene pakete i da zahteva njihovu ponovnu transmisiju.

Istorijsko poreklo[uredi | uredi izvor]

U maju 1974, Vinton Serf i Bob Kan su opisali mrežni protokol za deljenje resursa koristeći prenos paketa između mrežnih čvorova.[1] Autori su sarađivali sa Žerarom le Lanom na inkorporaciji koncepata iz francuskog CYCLADES projekta u novu mrežu.[2] Specifikaciju rezultirajućeg protokola, RFC 675 (Specification of Internet Transmission Control Program), napisali su Vint Cerf, Jogen Dalal i Karl Sunšajn, a ona je objavljena u decembru 1974. Taj dokument sadrži prvu potvrđenu upotrebu termina Internet, kao skraćenice za međuumrežavanje.[3]

Centralna kontrolna komponenta ovog modela bio je Transmisioni kontrolni program koji je obuhvato konekciono orijentisane veze i datagramske usluge između računara. Monolitni Transmisioni kontrolni program kasnije je podeljen na modularnu arhitekturu koja se sastoji od Transmisionog kontrolnog protokola i Internet protokola. To je rezultiralo mrežnim modelom koji je neformalno postao poznat kao TCP/IP, mada se formalno varijabilno nazivan modelom Departmana odbrane (DOD) i ARPANET modelom, a na kraju i kao grupa internet protokola.

Godine 2004, Vinton Serf i Bob Kan su dobili Tjuringovu nagradu za njihovi fondacijski rad na TCP/IP.[4][5]

Mrežna funkcija[uredi | uredi izvor]

Transmisioni kontrolni protokol omogućava komunikacione usluge na srednjem nivou između aplikacionog programa i Internet protokola. On omogućava povezivanje računara sa računarom na transportnom nivou internetskog modela. Aplikacija ne mora da poznaje posebne mehanizme za slanje podataka putem veze do drugog računara, kao što je neophodna IP fragmentacija da bi se prilagodilo maksimalnoj transmisionoj jedinici prenosnog medija. Na transportnom sloju, TCP obrađuje sve detalje o rukovanju i prenosu, i predstavlja apstrakciju mrežne veze sa aplikacijom, obično putem interfejsa mrežne utičnice.

Na nižim nivoima steka protokola, zbog zagušenja mreže, balansiranja opterećenja u prometu ili nepredvidivog ponašanja mreže, IP paketi se mogu izgubiti, duplirati ili isporučiti van redosleda. TCP otkriva ove probleme, zahteva ponovni prenos izgubljenih podataka, preuređuje podatke koji nisu po redosledu i čak pomaže da se smanji zagušenje mreže kako bi se smanjila pojava ostalih problema. Ako podaci i dalje ostaju neisporučeni, izvor se obaveštava o ovom kvaru. Nakon što TCP prijemnik ponovo sastavi niz prvobitno prenesenih okteta, prosleđuje ih primalačkoj aplikaciji. Tako TCP apstraktuje komunikaciju aplikacije od osnovnih detalja mrežnog prenosa.

TCP se široko koristi u mnogim aplikacijama, uključujući World Wide Web (WWW), email, protokol za prenos datoteka, SSH, razmenu fajlova, i striming medija.

TCP je optimizovan za preciznu isporuku, a ne pravovremenu isporuku i može imati relativno duge zastoje (reda veličine više sekundi) dok se čeka na poruke izvan redosleda ili ponovni prenos izgubljenih poruka. Zbog toga on nije naročito pogodan za aplikacije u realnom vremenu, kao što je internetska telefonija. Za takve aplikacije obično se preporučuju protokoli poput protokola za transport u stvarnom vremenu (RTP) koji rade preko protokola korisničkog datagrama (UDP).[6]

TCP zaglavlje[uredi | uredi izvor]

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 (16 bita), identifikuje aplikaciju koja je inicijator komunikacije
  • Odredišni port - port koji identifikuje serversku aplikaciju (16 bita)
  • Broj segmenta (SEQ) - redni broj segmenta u odnosu na početni (broj bajta u odnosu na inicijalni)(32 bita)
  • Broj sledećeg bajta (ACK) - redni broj bajta poslat predajnoj strani koji očekuje da primi (32 bita)
  • 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 predstavljaju podatak, inače od 160. bita

Uspostavljanje konekcije[uredi | uredi izvor]

Komunikacija između aplikacija uz pomoć TCP protokola se odvija tako što se prvo između klijenta i servera uspostavi veza (usluga sa konekcijom), 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 prijemne strane, ona zahteva da predajna strana potvrdi uspostavljanje veze od prijemne 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 izvor]

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.

Vidi još[uredi | uredi izvor]

Reference[uredi | uredi izvor]

  1. ^ a b Vinton G. Cerf; Robert E. Kahn (maj 1974). A Protocol for Packet Network Intercommunication (PDF). IEEE Transactions on Communications. 22 (5): 637—648. doi:10.1109/tcom.1974.1092259. Arhivirano iz originala (PDF) 4. 3. 2016. g. 
  2. ^ a b Bennett, Richard (septembar 2009). „Designed for Change: End-to-End Arguments, Internet Innovation, and the Net Neutrality Debate” (PDF). Information Technology and Innovation Foundation. str. 11. Arhivirano iz originala (PDF) 29. 08. 2019. g. Pristupljeno 11. 9. 2017. 
  3. ^ Cerf, Vinton; Dalal, Yogen; Sunshine, Carl (December 1974), RFC 675, Specification of Internet Transmission Control Protocol
  4. ^ „Robert E Kahn - A.M. Turing Award Laureate”. amturing.acm.org. 
  5. ^ „Vinton Cerf - A.M. Turing Award Laureate”. amturing.acm.org. 
  6. ^ Comer, Douglas E. (2006). Internetworking with TCP/IP: Principles, Protocols, and Architecture. 1 (5th izd.). Prentice Hall. ISBN 978-0-13-187671-2. 

Literatura[uredi | uredi izvor]

RFC[uredi | uredi izvor]

  • RFC 675 – Specification of Internet Transmission Control Program, December 1974 Version
  • RFC 793 – TCP v4
  • STD 7 – Transmission Control Protocol, Protocol specification
  • RFC 1122 – includes some error corrections for TCP
  • RFC 1323 – TCP Extensions for High Performance [Obsoleted by RFC 7323]
  • RFC 1379 – Extending TCP for Transactions—Concepts [Obsoleted by RFC 6247]}-
  • RFC 1948 – Defending Against Sequence Number Attacks
  • RFC 2018 – TCP Selective Acknowledgment Options
  • RFC 5681 – TCP Congestion Control
  • RFC 6247 – -{Moving the Undeployed TCP Extensions RFC 1072, RFC 1106, RFC 1110, RFC 1145, RFC 1146, RFC 1379, RFC 1644, and RFC 1693 to Historic Status
  • RFC 6298 – Computing TCP's Retransmission Timer
  • RFC 6824 – TCP Extensions for Multipath Operation with Multiple Addresses
  • RFC 7323 – TCP Extensions for High Performance
  • RFC 7414 – A Roadmap for TCP Specification Documents

Spoljašnje veze[uredi | uredi izvor]