# Datagrama

Datagrama edo IP datagrama, konputagailu-sare batean iturburutik helburura heltzeko informazio guztia daraman oinarrizko datu-bloke (pakete) independentea. Datagrama baten egitura goiburu eremuaz eta datu eremuaz osatzen da.

## Sarrera

Sareko lan-estazio batek beste lan-estazio bati informazioa igorri nahi dionean, bidali nahi den mezua zati txikiagotan antolatzen du. Datu-bloke hauek helburuko lan-estazioaren IP helbidearekin doaz eta baita helburu makinan berriz ordenatzeko, dagokion hurrenkera zenbakiarekin ere. Honela paketeek bere bidaian ibilbide independenteak har ditzakete. Informazio hau datu-blokeak helburura heltzeko, bitarteko sareetatik zehar bideratzeko erabiltzen da. Gainera, aurrez ez da behar datu trukerik igorle eta hartzaileen artean ez eta garraio sarearekin ere, hau da konexiorik gabeko zerbitzuan lan egiten da.
Datu-bloke honi TCP/IP sare-mailan IP datagrama deitzen zaio. Datu-bloke izen asko dago, hauek kokatzen diren mailakatutako komunikazio arkitekturan araberakoak dira:
   * Trama ( OSIren 2.maila edo TCP/IPko azpisare-sarbide mailan )
   * Datagrama ( TCP/IPko sare-maila)
   * Segmentu (TCP/IPko garraio-maila).
Gerta daiteke helburu makinari datagramak desordenatuta ailegatzea. Honek zera dakar:
   * Helburu makinak mezua irakurtzeko datagrama hurrenkeran arabera antolatu behar dituela.
Konexiorik gabeko zerbitzuaren ondorioz, zera dakar:
   * Ezin dela jakin datagrama bat bere helburu ailegatu den ala ez
   * Kongestioak ezin dira aurreikusi.

## Kapsulazioa

Datagramak zeharkatzen dituen sare desberdinen tramaren datu eremuan bidaiatzen du. Datagrama bat router bat zeharkatzen duenean, datagrama tramatik aterako da hurrengo sarearen tramaren barruan sartzeko. Kapsulazio prozedura honen bidez IP datagrama batek sare desberdinen zehar (punturik punturako sareak, ATM, Ethernet eta Token Ring...) bidaiatzea posible du. IP datagrama berak ere datu eremu bat dauka, non goi-mailako geruzen paketeek bidaiatzen duten. Ikusi taula.
| IP Datagramaren Goiburukoa | IP Datagramaren Datu Eremua |
| Tramaren goiburukoa | Tramaren datu eremua (IP datagrama doa) | Tramaren azkena |

## IP datagramaren eremuak

IP datagrama bakoitzak normalean 1500 byte-eko tamaina izaten du, IPv4 eta Ethernet sareen kasuan. Hauetako datagrama baten egitura honakoa da:
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 13 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
| Bertsioa | Bertsioa | Bertsioa | Bertsioa | goiburuko luzera | goiburuko luzera | goiburuko luzera | goiburuko luzera | Zerbitzu mota | Zerbitzu mota | Zerbitzu mota | Zerbitzu mota | Zerbitzu mota | Zerbitzu mota | Zerbitzu mota | Zerbitzu mota | Datagramaren luzera | Datagramaren luzera | Datagramaren luzera | Datagramaren luzera | Datagramaren luzera | Datagramaren luzera | Datagramaren luzera | Datagramaren luzera | Datagramaren luzera | Datagramaren luzera | Datagramaren luzera | Datagramaren luzera | Datagramaren luzera | Datagramaren luzera | Datagramaren luzera | Datagramaren luzera |
| Datagramaren identifikazioa (16 bit)Identifikazioa | Datagramaren identifikazioa (16 bit)Identifikazioa | Datagramaren identifikazioa (16 bit)Identifikazioa | Datagramaren identifikazioa (16 bit)Identifikazioa | Datagramaren identifikazioa (16 bit)Identifikazioa | Datagramaren identifikazioa (16 bit)Identifikazioa | Datagramaren identifikazioa (16 bit)Identifikazioa | Datagramaren identifikazioa (16 bit)Identifikazioa | Datagramaren identifikazioa (16 bit)Identifikazioa | Datagramaren identifikazioa (16 bit)Identifikazioa | Datagramaren identifikazioa (16 bit)Identifikazioa | Datagramaren identifikazioa (16 bit)Identifikazioa | Datagramaren identifikazioa (16 bit)Identifikazioa | Datagramaren identifikazioa (16 bit)Identifikazioa | Datagramaren identifikazioa (16 bit)Identifikazioa | Datagramaren identifikazioa (16 bit)Identifikazioa | | D F | M F | Desplazamendua (13 bit) | Desplazamendua (13 bit) | Desplazamendua (13 bit) | Desplazamendua (13 bit) | Desplazamendua (13 bit) | Desplazamendua (13 bit) | Desplazamendua (13 bit) | Desplazamendua (13 bit) | Desplazamendua (13 bit) | Desplazamendua (13 bit) | Desplazamendua (13 bit) | Desplazamendua (13 bit) | Desplazamendua (13 bit) |
| TTL (iraupena) | TTL (iraupena) | TTL (iraupena) | TTL (iraupena) | TTL (iraupena) | TTL (iraupena) | TTL (iraupena) | TTL (iraupena) | Goiko protokoloa | Goiko protokoloa | Goiko protokoloa | Goiko protokoloa | Goiko protokoloa | Goiko protokoloa | Goiko protokoloa | Goiko protokoloa | Erroreak atzemateko funtzioa | Erroreak atzemateko funtzioa | Erroreak atzemateko funtzioa | Erroreak atzemateko funtzioa | Erroreak atzemateko funtzioa | Erroreak atzemateko funtzioa | Erroreak atzemateko funtzioa | Erroreak atzemateko funtzioa | Erroreak atzemateko funtzioa | Erroreak atzemateko funtzioa | Erroreak atzemateko funtzioa | Erroreak atzemateko funtzioa | Erroreak atzemateko funtzioa | Erroreak atzemateko funtzioa | Erroreak atzemateko funtzioa | Erroreak atzemateko funtzioa |
| Iturburuko IP helbidea ||||||||||||||||||||||||||||||||
| Helburuko IP helbidea ||||||||||||||||||||||||||||||||
| Aukerak (egotekotan) ||||||||||||||||||||||||||||||||
| Datuak ||||||||||||||||||||||||||||||||
Goiburukoa: Datagrama orok goiburuko bat du, zeinak bideratzea burutzeko behar den informazioa duen, beste informazio askoren artean. Bideratzaileek helburuko helbidea begiratzen dute datagramak helburu zuzenera bidali ahal izateko. Hauek dira goiburukoan agertzen diren atalak:
* Helburuko helbidea
Eremu hau agertzea ezinbestekoa da edozein sarearte-mailako protokolotan. Ematen duten informazioa nahitaezkoa da sarearte-mailako zerbitzua betetzeko, hau da, datagramak sareartearen mutur batetik beste bateraino helarazteko. Jatorrizko makinan eta bideko bideratzaileetan egindako datagramaren prozesamendua helbide honetan datza. Haren balioa aztertuta ebatziko dute konputagailu horiek nondik bideratu behar duten datagrama.
* Goiko protokoloa
Eremu hau helmugako konputagailuak behar du, eta ez bideko bideratzaileek. Helmugako IP entitateak datagrama nori eman behar dion jakiteko ezinbestekoa da. Hasiera batean, IP mailaren erabiltzailea garraio-maila denez, badirudi argi dagoela nori eman behar zaion: helburuko konputagailuko garraio-mailako entitateari. Baina TCP/IP ereduko garraio-mailako entitate bat baino gehiago aurkituko ditugu helburuko konputagailuan.
* Bertsioa (4 bit)
Honek datagramak nolako goiburukoa duen adierazten du, bertsio ezberdinek datagrama ezberdinak erabiltzen baitituzte. Hau da, eremu honek goiburukoa irakurtzeko gakoa ematen die datagrama aztertu behar duten programei. Horregatik da goiburukoaren lehenengo eremua.
* Jatorrizko helbidea (32 bit)
Irudian ikusten denez, helburuko helbidea ez ezik, jatorrizkoa ere datagramaren goiburukoan dago. Bideratzaileek ez dute jatorrizko helbide hori bideratzeko behar, nahikoa baitute helburukoarekin. Baina datagrama jasoko duenak, normalki, erantzuna eman beharko dio datagramaren igorleari. Horretarako behar da jatorrizko makinaren helbidea igorritako datagrametan.
* Goiburukoaren luzera
Datagrama prozesatu behar duten IP entitateek (bideko bideratzaileenak eta helburuko konputagailuarena) jakin behar dute goiburukoa non bukatzen den eta garraiatutako datuak non hasten diren. Goiburukoan aukerazko eremu batzuk daudenez, haren luzera ez da finkoa, eta eremu hau beharrezkoa suertatzen da.
* Datagramaren luzera
Goiburukoaren luzera ez ezik, datu-eremuarena ere ez dago finkatuta. Hasiera batean, datagrama osoaren luzera jakitea arkitekturako mailen arteko interfazearen kontua da, eta ez luke goiburukoan agertu behar. Hau da, sarbide-mailako entitateak kontrolatzen du zenbat byte erauzten duen tramatik, eta datu hori ematen dio IP mailako entitateari datagramarekin batera (nolabait «tori datagrama hau, hainbat bytetakoa» esango dio). Hala ere, sarbideko protokolo batzuek zaborra gehitzen diote transmititzeko ematen dieten datagramari. Hori da jatorrizko difusioko Ethernet sareen kasua, non talkak atzemango direla bermatzearren, tramek luzera minimo bat izan behar duten. Traman sartu behar den datagramak luzera minimo hori ez badu, zabor betegarria sartzen da tramaren informazio-eremuan. Gero, helburuan, datagramari itsatsita datorren betegarria bereizteko, datagramaren goiburukoan dugun luzera izeneko eremua erabiliko du IP entitateak. Luzera eremuan 16 bit daudenez, eta bytetan neurtzen denez, datagramarik handiena 65.536 bytekoa izan daiteke (datuak gehi goiburukoa). Dena dela, oso arraroa da 1.500 byte baina handiagoa den datagrama bat aurkitzea (hori da Ethernet sare batean sartzen den datagramarik handiena), eta sistema askok 576 bytera mugatzen dute datagramaren tamaina (eremu zabaleko sare askok onartzen duten tamaina maximoa).
* Iraupena edo TTL (ingelesetik: Time To Live)
Eremu honi balio bat ematen zaio jatorrizko konputagailuan, eta bideko bideratzaile bakoitzak 1 kentzen dio, gutxienez; eremuaren balioa 0-raino heltzen bada, bideratzaileak datagrama ezabatuko du, inora birbidali gabe. Mekanismo honen helburua da datagrama galduak edo oso atzeratuak saretik kentzea (adibidez, bideratze-errore bat badago eta datagramak begizta batean harrapatuta gelditzen badira). Beraz, sareko garbiketarako behar da eremu hau.
* Datagramaren identifikazioa
IP datagrama bat sareko pakete batean sartzeko handiegia baldin bada, zatitu egin behar da. Zati guztiek jatorrizko datagramaren identifikazioa eramango dute. Horrela helburuko konputagailuak zati guztiak bil ditzake.
* Desplazamendua
Eremu honek zati honen kokapena jatorrizko datagraman adierazten du.
* Bit-markak (edo flagak)
Hiru dira, baina aurrenekoa ez da erabiltzen. Besteak Ez zatitu bita eta Zati gehiago bita dira —ingelesez, Don’t Fragment (DF) eta More Fragments (MF)—. Batak bideratzaileei datagrama hori ezin dela zatitu jakinarazteko balio du (aplikazio batzuek horrela beharko dute). Besteak hori ez dela jatorrizko datagramari dagokion azkeneko zatia adierazten dio helburuko IP entitateari.
* Erroreak atzemateko funtzioa
Goiburukoari bakarrik ezartzen zaion funtzio matematiko sinplea da. Datagramak bere bidean bisitatuko dituen bideratzaile guztiek TTL eremuaren balioa aldatuko dutenez, birkalkulatu beharko dute eremu hau. Praktikan, bideratzaileek ez liokete inongo kasurik egin behar eremu honi, zeren gaur egungo sare gehienek IPrena baino askoz indartsuagoak diren erroreak atzemateko funtzioak erabiltzen baitituzte (CRC funtzioak gehienetan) beren tramaetan, eta, gainera, datagramaren eremu guztiei aplikatzen zaizkie funtzio horiek (ez bakarrik goiburukoari). Beraz, eremu honi kasu egitea denbora galtzea da: txartelak ez lioke IP mailari matxuratuta dagoen datagrama bat pasatuko. Horregatik eremu hau ez da beharrezkoa datagrama batean.
* Aukerak
Bideratzaile askok ez diote kasurik egiten. Protokoloaren ezaugarri berriak frogatzeko sartu zen eremu hau goiburukoan. Gaur egun aukera batzuk daude definituta. Adibidez, eremu honetan datagramak jarraitutako bidea adieraz daiteke (bideko bideratzaileak hori grabatzeko prest baldin badaude, noski). Horregatik eremu hau ez da beharrezkoa datagrama batean.
Datuen eremua: Eremu honek datagramaren gehiena okupatzen du. Eremu honetan konputagailu batek besteari eman nahi dion informazioa dago. Helburuko konputagailuak hau irakurriko du, eta honen arabera dagokion ekintza burutuko du.

## Ikus, gainera

* TCP/IP eredu
* Mailakatutako komunikazio
* OSI eredua
* Sare protokolo
* UDP
* TCP
* Azpisare-maskara
* Internet
* Intranet
* Estranet

## Erreferentziak

* Andrew S. Tanenbaum, Konputagailu-sareak (3. ed 2002), EHU ed.

## Kanpo estekak

Telekomunikazio Hiztegia: www.telekomunikaziohiztegia.org
* Datuak: Q214111
* TCP/IP-ri buruzko liburua