Transmission Control Protocol (TCP) on üks Interneti protokollide paketi peamistest protokollidest. TCP on osa populaarsest "TCP/IP" kombinatsioonist, mida kasutatakse Internetis. Internetiprotokoll ehk IP tagab, et andmed jõuavad Internetis õigesse kohta. Seejärel hoolitseb TCP selle eest, et andmed satuksid õiges järjekorras ja ükski neist ei jääks puudu. TCP aitab ka kontrollida internetiliiklust, et see ei muutuks ülekoormatuks. Need protokollid, mis on justkui keeled, mida arvutid kasutavad, on loodud nii, et iga arvuti ja iga programm (näiteks veebibrauser või e-posti klient) saab neid kasutada.
Kuidas TCP töötab – põhimõtted
TCP on ühenduspõhine ja usaldusväärne transpordikiht. Enne andmete saatmist loovad saatja ja vastuvõtja omavahel ühenduse ning lõpetavad selle pärast andmevahetust. Peamised mehhanismid, mis tagavad töökindluse ja järjekorra:
- Kolmekäiguline käepigistus (three-way handshake) – enne andmete saatmist vahetatakse SYN, SYN-ACK ja ACK paketid, et luua ühendus ja sünkroniseerida sekvensinumbrid.
- Sekventsinumbrid ja kinnitused (ACK) – iga TCP segment kannab sekventsinumbrit; vastuvõtja kinnitab vastu võetud andmeid ACK-iga, mis võimaldab saatjal teada, mis on kohale jõudnud.
- Uuesti edastamine – kui kinnitust ei tule teatud aja jooksul, saadab saatja andmepaketi uuesti.
- Voohaldus (flow control) – vastuvõtja teatab saatjale oma vastuvõtuvõime suurusest (akna suurus), et vältida ülekoormust kliendi poolelt.
- Raskuskoormuse juhtimine (congestion control) – TCP reguleerib saatmise kiirust võrgu seisundi põhjal (näiteks algoritmid: slow start, congestion avoidance, fast retransmit, fast recovery), et vältida ruuteri- ja linkide ülekoormust.
Tähtsamad tehnilised detailid
- Segmentimine – suured andmehulga pakid jagatakse väiksemateks segmentideks vastavalt võrgus lubatud suurusele (MTU), iga segment kannab TCP päist ja andmeid.
- TCP päis sisaldab olulisi välju nagu allikaport ja sihtport, sekventsinumber, kinnitusnumber (ACK), akna suurus (window), lipud (SYN, FIN, RST, PSH, ACK, URG) ning valikulisi välju (nt MSS, Window Scale, SACK, Timestamps).
- Pordid ja mitmekordne ühendamine – TCP kasutab portnumbrite abil mitut korraga ühendust samal masinal (nt port 80 veebiserveri jaoks, 443 HTTPS jaoks, 25 e-postiks). See võimaldab mitut rakendust ja andmevoogu sama IP-aadressi kaudu.
- Ühenduse lõpetamine – ühenduse lõpetamiseks vahetatakse FIN ja ACK paketid; TCP kulgeb läbi mitme oleku (nt ESTABLISHED, FIN-WAIT, TIME-WAIT).
- Valikulised täiustused – tänapäevased TCP implementatsioonid toetavad SACK (selective acknowledgements), akna skaaleerimist ja aeg-silte (timestamps), mis parandavad jõudlust ja töökindlust suure latentsuse või pikamaaühenduste korral.
TCP vs UDP — millal kasutada
- TCP eelistatakse siis, kui on vaja usaldusväärsust, õiget järjekorda ja andmete terviklikkust — veebis surfamine, e-post, failiedastus, kaugjuurdepääs.
- UDP (User Datagram Protocol) on kergekaalulisem, ühenduseta ja ilma ülalkirjeldatud tagatiseta — see sobib reaalajas rakendustele (VoIP, videostriiming, mängud), kus väiksem latentsus ja paketikaod on mõnikord aktsepteeritavad.
Piirangud ja probleemid
- Pea-joone blokeerimine (head-of-line blocking) – kui üks segment kaob, peatub järjekorra edastus seni, kuni puuduv osa on taaskohale toodud.
- Ülekoormus ja latentsus – TCP voogude adaptiivne käitumine võib mõnikord põhjustada aeglase taastumise ülekoormusest, eriti väga kiiretes või vahelduvates võrkudes.
- NAT ja paljud tulemüürid – TCP töötab hästi, kuid mõnikord võivad võrguaadressi tõlkimise (NAT) ja turvapoliitikad vajada täiendavat konfiguratsiooni, et säilitada püsivad ühendused.
Kus TCP-d kõige sagedamini kasutatakse
- Veebilehitsejad (HTTP/HTTPS), failiedastus (FTP, SFTP), e-posti protokollid (SMTP, IMAP, POP3), kaugjuurdepääsu teenused (SSH), andmebaasiühendused ja paljud muud kliendi-serveri rakendused.
Kokkuvõte: TCP on Interneti põhikomponent, mis pakub usaldusväärset, järjestatud ja vigadevaba andmeedastust. See tagab, et rakendused saavad suhelda usaldusväärselt ka kadude, võrgukatkestuste ja koormuse korral, kasutades mitmeid mehhanisme nagu käepigistus, sekventsinumbrid, kinnitused, voohaldus ja ülekoormuse juhtimine.