Hvad betyder TCP og UDP?

TCP og UDP er transportprotokoller, der bruges til at sende data mellem applikationer over et netværk. “Transport” betyder her, at protokollen håndterer selve dataoverførslen: hvordan beskeder pakkes, sendes, og (eventuelt) kontrolleres for at sikre, at modtageren får det, som afsenderen sendte.

  • TCP (Transmission Control Protocol) er designet til pålidelig kommunikation.
  • UDP (User Datagram Protocol) er designet til en enklere og hurtigere kommunikationsform, hvor der ikke er samme indbyggede garanti for levering.

Et simpelt model for dataoverførsel

Tænk på en samtale mellem to endepunkter (en afsender og en modtager), hvor afsenderen sender “datablokke” til modtageren.

  1. TCP: Når afsenderen sender data, bruger TCP mekanismer til at sikre, at modtageren modtager dem korrekt. Hvis noget går tabt, kan TCP sørge for at sende data om igen. TCP holder også styr på rækkefølgen, så modtageren kan samle det i den rigtige orden.

  2. UDP: UDP behandler hver datablok mere selvstændigt. Den sender af sted så godt som muligt, men uden at kræve bekræftelse, om datapakkerne nåede frem, eller at de ankommer i samme rækkefølge som afsenderen sendte.

Forskelle og begrænsninger du bør kende

Den mest centrale forskel er:

  • TCP forsøger at gøre levering pålidelig og ordnet.
  • UDP fokuserer på lavere overhead og mindre indbygget “kontrol-lag” i selve protokollen.

Det får nogle praktiske konsekvenser:

Pålidelighed og rækkefølge

Med TCP er der indbygget mekanismer, der typisk gør, at modtageren kan regne med, at data kommer frem som en sammenhængende strøm i korrekt rækkefølge. Med UDP er det derimod ikke protokollens opgave at garantere levering eller rækkefølge.

Forsinkelse (latency) og overhead

TCP’s kontrolmekanismer kan give ekstra “arbejde” (overhead) og kan påvirke forsinkelsen, især når der er pakketab eller netværksudsving. UDP har mindre indbygget kontrol, hvilket ofte kan være attraktivt, når man hellere vil have hurtig levering end perfektion.

Når UDP kræver egne løsninger

Hvis en applikation bruger UDP, må den ofte selv håndtere ting som: hvad der sker ved tab, om rækkefølge betyder noget, og om der skal være en form for genudsendelse eller korrektion. Det er en vigtig begrænsning at have i baghovedet.

Sammenhæng med “ports” (begrebsafklaring)

TCP og UDP bruges typisk sammen med portnumre, så netværket kan levere data til den rigtige applikation på modtagersiden. Port er altså en “adresse” for applikationen, mens TCP/UDP beskriver transportmetoden.

Praktisk brug: hvad kan du selv kontrollere?

Når du møder TCP eller UDP i en sammenhæng (fx i netværkslogik, firewallregler eller fejlsøgning), kan du placere det i forhold til dit behov:

  • Hvis du har brug for, at data når frem og bliver samlet korrekt (for eksempel mange former for filoverførsel eller interaktive protokoller), passer TCP’s grundidé ofte bedre.
  • Hvis du har brug for lav forsinkelse, og hvor det kan være acceptabelt at enkelte data går tabt (for eksempel visse realtidsoplevelser), passer UDP’s grundidé ofte bedre.
  • Hvis du bruger UDP i en løsning, så spørg: “Hvad gør applikationen, hvis pakker tabes eller kommer i uorden?”

Usikkerhed du kan være opmærksom på: Den præcise oplevelse afhænger af applikationen, netværksforholdene og eventuelle ekstra mekanismer oven på TCP/UDP. Protokollen giver ikke hele historien alene.