UDP och TCP – två sätt att skicka trafik

När en dator ska skicka iväg trafik så behöver den skicka datapaketen från sin IP-adress till en annan IP-adress. IP tar alltså hand om att adressera olika enheter på nätverk.

Men sen kan olika program och tjänster ha lite olika behov när det gäller hur trafiken ska skickas över nätverk. För vissa program är det jätteviktigt att inga datapaket försvinner eller kommer fram i fel ordning, för då slutar programmen kanske fungera. För andra program spelar det inte lika stor roll om det blir små fel här och där när trafiken skickas.

Därför finns TCP och UDP. Det är två protokoll som styr över hur trafiken ska skickas över nätverket. Mer specifikt kallas just dessa två protokoll för transportprotokoll.

Ett protokoll är en sammanställning över något. Till exempel ett mötesprotokoll som sammanställer vad man har kommit fram till och vilka beslut som har tagits på mötet. På nätverk och i datorer finns massor av olika protokoll. Här är två exempel:

  • IP-adresser och hur nätverkstrafik ska adresseras med IP-adresser styrs av IP protokollet
  • TCP och UDP är två andra protokoll som bestämmer två olika sätt för hur datatrafik kan skickas

Protokollen tas fram av samarbetsorganisationer där många företag samarbetar för att komma överens om hur saker ska fungera, så att till exempel routrar från olika tillverkare ska fungera när man kopplar ihop dom.
Utan protokoll som styr hur IP och TCP och UDP ska fungera så skulle alla tillverkare göra lite olika, och då skulle ingen nätverkstrafik fungera.

TCP har massor av funktioner för att se till att trafiken kommer fram i rätt ordning, att inga paket försvinner, att paket som ändå försvinner skickas igen automatiskt och så vidare.

UDP däremot är inte lika nogräknat. Försvinner lite paket här och där så får dom försvinna. Hamnar paket i fel ordning så får dom göra det. UDP är gjort för att vara snabbt och enkelt utan massa extra kontroller.

Skillnader mellan TCP och UDP

Vissa program kan behöva prata på olika sätt vid olika tillfällen. Många program (exempelvis datorspel) kanske därför använder både TCP och UDP i olika situationer, beroende på vilken sorts trafik som ska skickas.Den som har gjort ett program väljer om programmet ska använda TCP eller UDP när programmet ska prata på nätverket, och valet beror alltså på hur den som gjorde programmet tycker att programmet ska prata på nätverket.

Nästan alla program som man använder till vardags använder TCP just eftersom det är viktigt att alla datapaket kommer fram och att dom kommer fram i rätt ordning.

Men det finns några undantag. DNS är ett sånt exempel. Varje dator behöver DNS för att kunna surfa på internet och kunna slå upp vilka IP-adresser som olika domännamn har när man surfar. DNS använder UDP, och en av anledningarna är att det inte gör så mycket om en DNS fråga försvinner. Datorn kommer ändå märka själv att den inte får något svar på sin DNS fråga, och kommer det inget svar tillbaka så frågar den helt enkelt bara en gång till. Det enda som händer är att det blir en liten fördröjning.

Ett annat exempel där det är vanligt att UDP används är IP-telefoni, det vill säga att man ringer samtal över datornätverket i stället för att ringa över telefonnätet. När man pratar med någon så förvandlar IP-telefonen ljudet till datapaket som skickas över nätverket till personen som man pratar med.

Människor har inga större problem att förstå vad någon säger även om det skulle försvinna några millisekunder tal här och där. Så även om ett datapaket försvinner då och då så kan vi alltså förstå vad den andra personen säger, och det gör inte så mycket mer än att det stör litegrann.

Om däremot TCP skulle användas för IP-telefoni och ett datapaket försvinner, då skulle TCP se till att alla paket får vänta medan det försvunna datapaketet skickas igen, och det tar tid. Tänk er att man pratar med någon, och mitt i ett ord så avbryts talet och så får man vänta i tystnad i en kvarts sekund innan talet fortsätter. Tänk sen att det händer konstant under hela samtalet. Det är otroligt svårt att ha en konversation med någon om talet hela tiden fördröjs och avbryts på det viset.

Alltså gör det mindre för IP-telefoni om det tappas bort några paket här och där (UDP) än om man måste vänta på att alla paket kommer fram i rätt ordning (TCP).

På grund av att olika program alltså har olika behov för hur deras nätverkstrafik ska skickas över nätverket så använder olika program antingen TCP eller UDP när dom ska skicka nätverkstrafik.

Portarna som används som adresser för program och tjänster är inte en del av IP-adressen. I stället är dom en del av TCP och UDP. Så datatrafik kan man säga har en IP-adress för att adressera datorer och andra saker på nätverket, och sen har det en Portadress för att adressera tjänster och program på varje dator.

TCP och UDP portar skrivs i ett meddelande som stoppas in i ett IP paket med IP-adresser

När datorn ska skicka ut ett datapaket så stoppar datorn först in trafiken i antingen ett UDP meddelande eller ett TCP meddelande, beroende på vad programmet vill ha. På det meddelandet skrivs Portadresserna in. Sen läggs UDP meddelandet eller TCP meddelandet inuti ett IP-paket som får IP-adresserna inskrivna som adresser.

Därför är det så att när man ska berätta om vilken port som ett program använder så måste man samtidigt också berätta om programmet använder TCP eller om det använder UDP. Portarna skrivs ju in antingen i ett TCP meddelande eller i ett UDP meddelande, så Portnumret hör ihop med antingen TCP eller UDP.

Föregående avsnitt:
Portar - adresser för program och tjänster

Nästa avsnitt:
Port Forward