UDP

**UDP** (**User Datagram Protocol**) er einn af grunn samskiptastöðlum internetsins. Með UDP geta forrit á nettengdum tölvum sent hvort öðru stutt gagnaskeyti án þess að þurfa að stofna til tengingar eins og með TCP staðlinum. UDP staðallinn var hannaður af David P. Reed árið 1980.

Öfugt við TCP tryggir UDP hvorki að gagnaskeyti skili sér né að þau komi í réttri röð. Gagnaskeytin geta komið í rangri röð, geta komi oftar en einu sinni eða jafnvel horfið sporlaust. Þessir gallar eru hinsvegar einnig styrkleikar UDP staðalsins þar sem að sé þeim athugunum sem TCP framkvæmir sleppt fæst skilvirkari samskiptastaðall með minnir yfirbyggingu. Í tölvuleikjum til dæmis þar sem tímasetning skilaboða skiptir meira máli en að þau skili sér er UDP notað í samskiptum milli þjóns og biðlara. Stöðuleysi UDP-staðalsins er einnig mjög gagnlegt fyrir þjóna sem þurfa að svara gífurlegum fjölda biðlara með litlum upplýsingum eins og til dæmis DNS þjónar.

## Port
UDP-portum er eingöngu ætlað að taka við gagnaskeytum. Til að senda gagnaskeyti þarf ekki annað en að smíða pakkann og senda hann af stað. Port númerið er 16 bita tala sem þýðir að portnúmer geta verið frá 0 til 65.535. Port 0 er frátekið en hægt er að skilgreina það sem upprunaport ef ekki er búist við svari. Port 1-1023 eru einnig frátekin fyrir stýrikerfið og eru þau svokölluð vel þekkt port.

## Pakkar
**Uppbygging UDP pakka** 
                 0      7 8     15 16    23 24    31  
                 +--------+--------+--------+--------+ 
                 |     Portnúmer   |   Portnúmer     | 
                 |     Sendanda    |   móttakanda    | 
                 +--------+--------+--------+--------+ 
                 |                 |                 | 
                 |     Lengd       |  Tékksumma  | 
                 +--------+--------+--------+--------+ 
                 |                                     
                 |          Gögn...           
                 +---------------- ...

Portnúmer sendanda þarf ekki að stilla en ef það er stillt er venjulega miðað við að það bendi á það port sem sendandi býst við svari á. Einnig er hægt að stilla það sem 0 til að gefa í skyn að ekki sé búist við svari. Portnúmer móttakanda verður að stilla til að stýrikerfi vélar þeirrar sem móttekur viti hvert skal skila pakkanum. Lengd og tékksumma eru svo notuð til að athuga hvort allur pakkinn hafi skilað sér og hann hafi ekki skemmst á leiðinni.

Það sést glöggt að yfirbygging UDP pakka er mjög lítil sem gerir það að verkum að UDP er mjög skilvirkur staðall.

## Munur á UDP og TCP
**TCP** er tengingamiðaður staðall sem þýðir að áður en samskipti geta átt sér stað þarf frumstilling að eiga sér stað til að setja upp tengingu milli endapunkta. Aðeins eftir að þessi tenging hefur verið sett upp er hægt að senda gögn um tenginguna.
* **Áreiðanleiki** - TCP sér um að fylgjast með hvort skilaboð hafa verið móttekin. Ef gögn týnast á leiðinni sér TCP um að endursenda þau og þannig tryggir tcp áreiðanleika.
* **Röðun** - Þegar tvö skilaboð eru send eftir TCP tengingu koma þau í réttri röð. Komi þau ekki í réttri röð sér TCP um að geyma seinni pakkann þar til sá fyrri er kominn og skilar þeim svo í réttri röð.
* **Þungavigt** - TCP krefst þess að þrír pakkar séu sendir eingöngu til að koma á tengingu. Aðrar upplýsingar svo sem raðnúmer pakka og fleiri upplýsingar sem nauðsynlegar eru til að TCP geti sinnt skyldum sínum gera það að verkum að umtalsverð yfirbygging er í kringum TCP.
* **Streymi** - Gögn eru send sem straumar og ekkert á milli sem aðgreinir pakka. Með TCP er til dæmis hægt að senda skrár sem eru miklu stærri en mesta mögulega pakkastærð. TCP sér svo um að skipta straumum niður í stærri eða minni pakka.

**UDP** er einfaldur skeytamiðaður staðall sem krefst engra tenginga. Skilaboð eru send af stað án þess að athuga hvort móttakandi er einusinni til staðar.
* **Óáreiðanleiki** - Þegar skilaboð eru send er ómögulegt að vita hvort þau komast á áfangastað. Skilaboð gætu týnst á leiðinni og móttakandi gæti ómögulega séð hvort eitthvað hefði verið sent yfir höfuð.
* **Óraðað** - Ef tvö skilaboð eru send til sama móttakanda með stuttu millibili er ómögulegt að tryggja að það sem sent er fyrst komi fyrst.
* **Léttvigt** - Þar sem UDP gerir nær ekkert til að passa upp á pakka sem sendir eru er það mjög létt og einfalt. Það krefst hvorki mikillar bandvíddar né mikils örgjörvatíma.
* **Gagnaskeyti** - Pakkar eru sendir einn af öðrum og er tryggt að þeir séu heilir og óskemmdir ef þeir koma á annað borð. Hver pakki er heill og takmarkaður og straumar eru ekki mögulegir.

## Heimildir
* RFC 768
*