Transmission Control Protocol (TCP) er en af de vigtigste protokoller i Internet Protocol Suite. TCP er en del af den populære "TCP/IP"-kombination, der anvendes på internettet. Internetprotokollen, eller IP, sørger for, at data på internettet når frem til det rigtige sted. Derefter sørger TCP for, at dataene bliver lagt i den rigtige rækkefølge, og at der ikke mangler noget af dem. TCP er også med til at styre trafikken på internettet, så det ikke bliver overbelastet. Disse protokoller, som er lidt ligesom sprog, som computere bruger, er udformet således, at enhver computer og ethvert program (f.eks. en webbrowser eller en e-mail-klient) kan bruge dem.
Hvad gør TCP?
- Pålidelig levering: TCP sørger for, at alle data ankommer til modtageren, og at manglende pakker bliver gen-sendt.
- Ordnet aflevering: Segmenter (dele af data) leveres i den rækkefølge, de blev sendt, selvom netværket kan levere dem i vilkårlig rækkefølge.
- Fejlkontrol: Hver TCP-segment indeholder en checksum, så fejl i transit kan detekteres og håndteres.
- Flowkontrol: Senderen tilpasser hastigheden til, hvad modtageren kan håndtere (sliding window).
- Kongekstionskontrol: TCP forsøger at undgå at overbelaste netværket ved at regulere sendehastigheden (f.eks. slow start, congestion avoidance).
- Multiplexing: Brug af porte gør det muligt at have mange samtidige forbindelser mellem de samme maskiner (f.eks. web, e-mail, filoverførsel).
Hvordan virker TCP i praksis?
TCP er forbindelsesorienteret, hvilket betyder, at der etableres en logisk forbindelse mellem to endepunkter før dataoverførsel. Et typisk trin-for-trin-forløb:
- Etablering: Forbindelsen startes med et trevejshåndtryk (three-way handshake): SYN → SYN+ACK → ACK. Dette synkroniserer sekvensnumre og bekræfter, at begge sider er klar.
- Dataoverførsel: Data sendes i segmenter med sekvensnumre. Modtageren sender ACK-bekræftelser med det næste ventede sekvensnummer.
- Genudsendelse: Hvis en sender ikke modtager en ACK inden for en timeout (RTO), genudsender den segmentet.
- Afslutning: Forbindelsen lukkes med FIN-udveksling, hvor begge sider bekræfter afslutning af transmissionen.
Vigtige felter i TCP-headeren
- Source port og Destination port — identificerer applikationerne.
- Sequence number og Acknowledgment number — bruges til at holde styr på datarækkefølgen og bekræftelser.
- Flags (SYN, ACK, FIN, RST, PSH, URG) — styrer tilstand og kontrolbeskeder.
- Window — angiver hvor meget data modtageren er parat til at modtage (flowkontrol).
- Checksum — sikrer integriteten af header og data.
- Options — f.eks. MSS (Maximum Segment Size), Window Scaling, SACK (Selective Acknowledgment), timestamps.
TCP vs. UDP
Hvor TCP prioriterer pålidelighed og ordnet levering, er UDP (User Datagram Protocol) et enklere, forbindelsesløst alternativ, som ikke garanterer levering eller rækkefølge. UDP bruges typisk til realtidsapplikationer som DNS, VoIP, videostreaming eller spil, hvor lav latenstid og enkelhed kan være vigtigere end fuldstændig pålidelighed.
Anvendelser
TCP bruges af mange af de mest kendte internettjenester, f.eks. HTTP/HTTPS (webtrafik), SMTP/IMAP/POP3 (e-mail), FTP (filoverførsel) og SSH (sikker fjernadgang). Disse protokoller har brug for den pålidelighed og ordnede aflevering, som TCP tilbyder.
Ydeevne, varianter og moderne udviklinger
- Konvekstionsalgoritmer: Der findes flere TCP-varianter som Reno, NewReno, CUBIC og BBR. De adskiller sig i, hvordan de håndterer tab og regulerer sendingen for at opnå høj throughput og lav latenstid.
- Optioner til forbedring: SACK hjælper med at undgå unødvendige genudsendelser; Window Scaling muliggør større vinduer for høje båndbredde-latenstid-forbindelser (BDP).
- Tuning og parametrisering: Operativsystemer og netværksenheder kan tuneres (bufferstørrelser, RTO, initial window) for at forbedre performance i specifikke scenarier.
Begrænsninger og praktiske problemer
- Head-of-line blocking: Et tabt segment kan blokere levering af efterfølgende data, hvilket øger latenstid i enkelte forbindelser.
- Bufferbloat: For store router- eller systembuffere kan øge latenstid betydeligt under belastning.
- Middleboxes: NAT, firewalls og proxyer kan påvirke TCP (f.eks. ved at ændre timeout eller droppe ukendte flag), hvilket kan give kompatibilitetsproblemer.
- Sikkerhed: TCP er sårbar over for angreb som SYN-floods; moderne netværk bruger forskellige beskyttelsesmekanismer (SYN cookies, rate limiting, firewall-regler).
Afslutning
TCP er fundamentet for meget af den pålidelige kommunikation på internettet. Dets kombination af fejlretning, flow- og kongekstionskontrol samt portbaseret multiplexing gør det velegnet til applikationer, hvor korrekt og ordnet levering af data er essentiel. Samtidig udvikles og tilpasses TCP løbende gennem nye varianter og optioner for at imødekomme stigende krav til hastighed og skalerbarhed.