Tik-109.300: Tietoliikennearkkitehtuurit
Kotitehtävä 10: WWW-essee

Andrei Räisänen - 40402K - Ti N



User Datagram Protocol (UDP)

21. 11. 1998

Päivitetty:

03. 12. 1998

Andrei Räisänen
Ti
Teknillinen Korkeakoulu
Andrei.Raisanen@hut.fi


Tiivistelmä

UDP eli User Datagram Protocol on IP:n päällä toimiva tiedonsiirtoprotokolla,
joka käyttää portteja. Periaattessa jokainen asiakasohjelma käyttää eri porttia.
UDP:n tärkein eroavaisuus esimerkiksi TCP-protokollaan
on se, että UDP ei takaa tietopakettiensa perillemenemistä. Tämä suo selvästi
paremmat käyttömahdollisuudet esimerkiksi videokuvan tai äänen välittämisessä
verkon yli. Mediavirta voidaan lähettää helpommin katkeamattomana virtana,
kun ei tarvitse varmistaa perillemenoa. Näin palvelimen ei tarvitse huolehtia
siitä, että asiakas on saanut kaiken informaation. Tämä on merkityksellistä
varsinkin silloin, kun mediavirtaa lähetetään useammalle asiakkaalle.
Haittapuolena on - varsinkin ruuhkaisilla ja hitailla yhteyksillä - pakettivirran
katkeilu, mikä voi vaikuttaa esimerkiksi mediavirran laatuun ja ymmärrettävyyteen
joko paljon, vähän tai ei ollenkaan.


1. User Datagram Protocol

User Datagram Protocol eli UDP on määritelty dokumentissa RFC 768, ja se toimii IP-protokollan päällä. Normaalissa Internet-kommunikaatiossa merkintä TCP/IP merkitsee sitä, että TCP-protokollaa käytetään IP:n päällä. TCP voidaan kuitenkin korvata UDP:lla, jos halutaan käyttää UDP:n ominaisuuksia. Tällöin voidaan käyttää merkintää UDP/IP.

UDP-protokolla on suunniteltu palvelemaan tietokoneiden välistä kommunikaatiota mahdollisimman vähäisellä protokollamekanismilla. Tämä vähentää varsinkin lähettävän palvelinkoneen työmäärää pakettien lähetyksen kontrolloimisessa. Tästä on sekä hyötyä että haittaa, joista lisää kappaleessa 3.

UDP-protokollalla on kaksi merkittävää ominaisuutta:


UDP-paketin header (kahdeksan ensimmäistä tavua) on seuraavan kuvan 1 mukainen:

 0                         15 16                           31 bits
+-------------+--------------+---------------+---------------+
|   16 bittiä: Source port   |  16 bittiä: Destination port  |
+-------------+--------------+---------------+---------------+
|   16 bittiä: UDP length    |  16 bittiä: UDP Checksum      |
+-------------+--------------+---------------+---------------+
|                                                            |
|  Itse paketin sisältämä data....                           |
.                                                            .
.                                                            .
.                                                            .
|                                                            |
+----------------------------+-------------------------------+
Kuva 1. UDP-protokollan paketin header.


Headeriin eli ensimmäisiin 8 tavuun kuuluvat seuraavat tiedot paketista:

Tarkistussummaan kuuluvat:

     0      7 8     15 16    23 24    31 bits
    +--------+--------+--------+--------+
    |         source IP address         |
    +--------+--------+--------+--------+
    |      destination IP address       |
    +--------+--------+--------+--------+
    |  zero  |protocol|   UDP length    |
    +--------+--------+--------+--------+
Kuva 2. UDP:n pseudo-header


Pseudo-headerin sisältämät kentät: Tarkistussummaa näin käytettäessä saadaan suoja väärin reititettyjä datagrammeja vastaan. TCP-protokolla käytetään samaa taktiikkaa reititysongelmien kitkemisessä.

[1,2]


UDP-protokolla käyttää IP-protokollan palveluksia pakettiensa perillekuljetukseen. Määränpäässä UDP-protokollakerros saa vastaan paketteja IP-verkkokerrokselta, joka tutkii vastaanotetun paketin tarkistussummaa ennen sen eteenpäin lähettämistä. Jos tarkistussumma on nolla, se merkitsee sitä, että tarkistussumma on poissa käytöstä. Tällöin IP-protokolla ohjaa paketin suoraan käyttöjärjestelmälle. Mikäli tarkistussumma on erisuuri kuin nolla, vastaanotettu paketti tarkastetaan tarkistussumman avulla. Tämän jälkeen paketti välitetään eteenpäin käyttöjärjestelmälle asiaankuuluvaan porttiin, mutta vain siinä tapauksessa, että tarkistussumma oli oikea - muutoin paketti "pudotetaan" eli sitä ei huomioida. Lähettäjäkoneelle ei myöskään ilmoiteta vahingoittuneista tai puuttuvista paketeista, eikä niitä pyydetä lähettämään uudestaan. Tämä saattaa joissakin tapauksissa johtaa siihen, että paketteja voi jäädä puuttumaan paljonkin välistä. Ohjelmistosta ja sen käyttötarkoituksesta riippuu, miten vakavia seurauksia pakettien puuttuminen aiheuttaa.



2. Porttien käyttö

Tyypillisesti sekä TCP- että UDP-protokollan käyttö on ns. palvelin/asiakas toimintaa siten, että jokin palvelinkone kuuntelee tiettyä porttia.

UDP:n portit ovat tietokoneen sisäisiä, tyypillisesti jollekin sessiolle ominaisia abstrakteja portteja, jotka määritellään 16-bittisellä kokonaisluvulla, eli mahdollisia portteja on 0-65535. Vakiintunut käytäntö on, että tavallisille ohjelmille käyttöjärjestelmä ei myönnä portteja, joiden lukuarvo on alle 1000. Tämä ei kuitenkaan ole standardi. IP-protokolla siis kuljettaa verkossa UDP-paketteja, ja UDP-protokolla multipleksoi ja demultipleksoi ne eri portteihin. Monet palvelut käyttävät tiettyjä UDP-portteja toimintaansa, seuraavassa lista tärkeimmistä. Tarkoitus ei ole kerrata kaikkia UDP:ta käyttäviä protokollia, mutta selostan Telnet-protokollan päällisin puolin, jotta periaate tulee selväksi.



3. UDP ja Internetin mediavirrat

User Datagram Protocolin ominta aluetta ovat Internetin ylitse välitettävät mediavirrat. UDP-protokollassahan ei ole mitään flow control- tai perillemenovarmistusta, mikä tekee siitä erinomaisen työvälineen esimerkiksi videoneuvottelun taikkapa äänivirran välitykseen. Muun muassa Real inc. käyttää UDP-protokollaa mediavirtojensa välitykseen. Real inc. onkin jo aikamoinen standardi verkon yli välitettävän median saralla.

Kun verkon, esimerkiksi Internetin, yli välitetään mediavirtaa, ei kaikkien pakettien perillepääsy tai virheettömyys ole läheskään niin tärkeää kuin voisi ensi ajattelemalta kuvitella. Jos esimerkiksi videoneuvottelussa tai RealVideo-showta Internetin yli katsellessa jää paketteja uupumaan välistä, ei se useinkaan juuri vaikuta lähetykseen. Varsinkin liikkuvan kuvan pienoinen nykiminen jää useimmiten silmältä huomaamatta. Mikäli "lähetykseen" tulee kuitenkin suurempia katkoja, sen kuitenkin huomaa, varsinkin äänipuolella; korva kun on herkkä aistinelin, huomaten pienimmätkin äänivirran katkokset.

Mediavirran kulkiessa verkon ylitse tärkeimmät sen asiakaskoneella havaittavaan laatuun ja ymmärrettävyyteen liittyvät tekijät ovat verkkoyhteyden nopeus ja varmuus. Mikäli yhteys on liian hidas, esimerkiksi videokuva päivittyy hitaasti, mikä on pahimmillaan erittäin ärsyttävää. Tiedon perilletulon varmuus taas ei periaatteessa vaikuta videokuvan nopeuteen, vaan siihen onko siinä taukoja ja nytkähdyksiä. Onneksi Internetistä vastaanotettavan mediavirran voi lähes aina tallentaa oman tietokoneensa kovalevylle ennen sen katselemista tai kuuntelemista.

Hyvä esimerkki UDP:lla välitettävästä RealVideo-lähetyksestä löytyy Anandtechin WWW-sivuilta. Lähetyksen katselemiseen tarvitaan verkkoselaimeen RealVideo-plugin, jonka saa Realin Internetsivuilta, täältä.

Jos haluaa kokeilla pelkkää ääntä sisältävää materiaalia, hyvä esimerkki Internet Radiosta löytyy täältä.

UDP:n vahvuus piilee juuri sen "epäluotettavuudessa"; kun UDP-pakettien perillemenoa ei tarvitse vahvistaa, voidaan lähettää mediavirtaa paljon nopeammassa tahdissa kuin jos jokaisen paketin perilletulo vahvistettaisiin erikseen. Mediavirtaa sisältäviä UDP-paketteja lähettävä palvelin ei siis tiedä, menevätkö kaikki sen lähettämät paketit perille vaiko eivät. Tämä helpottaa palvelimen työskentelyä huomattavasti, varsinkin jos mediavirtaa lähetetään moneen kohteeseen yhtäaikaa - tätä kutsutaan multicastingiksi. Multicastingia käytetään tietyllä ajan hetkellä tapahtuvan, esimerkiksi "live"-median esittämiseen. Mediapalvelimellahan on normaalistikin monta asiakaskonetta, johon mediavirtaa lähetetään, mutta tyypillisessä tapauksessa jokainen asiakas on pyytänyt mediavirtaa eri aikaan, jolloin se joudutaan myöskin lähettämään eri tahdissa jokaiselle vastaanottajalle. Kun lähetetään "live"-mediavirtaa, eli tosiaikaista informaatiota, lähetys tapahtuu kaikille asiakkaille samanaikaisesti. Tämä helpottaa lähettävän palvelinkoneen työskentelyä.

Vastaavasti asiakaskone vastaanottaa paketteja sitä mukaa kun se niitä verkosta saa, muttei kuitenkaan millään tavalla kerro palvelimelle niitä vastaanottaneensa, eikä myöskään pyydä palvelinta lähettämään uudelleen korruptoituneita tai välistä puuttuvia paketteja. Liikenne on siis yksisuuntaista, mikä helpottaa, yksinkertaistaa ja nopeuttaa tiedonvälitystä.

Tulevaisuudessa kuitenkin Real Time Streaming Protocol (RTSP) tullee syrjäyttämään UDP:n ainakin RealVideon ja RealAudion osalta.

Real Time Streaming Protocol on Internet Engineering Task Forcen (IETF) UDP:sta edelleen kehittämä tosiaikainen mediansiirtoprotokolla Internet-sovelluksiin. Se on kuitenkin vasta "Proposed Standard" -asteella, eli vaikka se on jo hyväksi koettu ja varsin pitkälle testattu, se ei kuitenkaan ole vielä standardi. Sillä on kuitenkin joitakin sellaisia ominaisuuksia, jotka auttavat sitä syrjäyttämään UDP-protokollan, ainakin monien mediavirtoja välittävien ohjelmistojen parissa. RTSP-protokolla tulee helpottamaan asioita varsinkin multicastingin suhteen.

[4]


Lähdeluettelo

[1] Fairhurst, Godred: The User Datagram Protocol (UDP), 24.04.1997
< http://www.erg.abdn.ac.uk/users/gorry/course/inet-pages/udp.html>
[2] van Doorn, Leendert: Revised RFC-768, 06.02.1997
< http://www.cs.vu.nl/~leendert/cn/rfc768.html>
[3] Wack, John: TCP and UDP Port Structure, 09.02.1995
< http://csrc.nist.gov/nistpubs/800-10/node20.html>
[4] Real inc.: Real Time Streaming Protocol, 28.11.1998
< http://www.real.com/devzone/library/fireprot/rtsp/index.html>


Lisätietoja:


Andrei Räisänen / Ti / 40402K
Email: Andrei.Raisanen@hut.fi

Last Modified: 03. 12. 1998