Datagram

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj

Datagram – podstawowa jednostka przekazu powiązana z siecią komutacyjną pakietów. Datagramy zwykle są zbudowane z sekcji nagłówka i ładunku.

Datagramy dostarczają możliwość bezpołączeniowej komunikacji w sieci komutacyjnej pakietów. Dostarczenie, czas dostarczenia i kolejność data gramów nie musi być gwarantowana przez sieć.

Historia[edytuj | edytuj kod]

Wyrażenie „datagram” pojawiło się pierwotnie wraz z projektem CYCLADES, czyli siecią zmieniających się pakietów, stworzone w 1970 roku i przedstawione przez Louisa Pouzina jest kombinacją słów „dane” (ang. data) i „telegram”. CYCLADES było pierwszą siecią, która zrzucała odpowiedzialność rzetelnego przekazu danych na hosty, a nie na samą sieć, używając niesolidnych datagramów i powiązanego mechanizmu „end-to-end”.

„Inspiracją dla datagramów były dwa źródła. Pierwsze to badania Donalda Davies’a. Stworzył on bowiem symulacje sieci datagramów, mimo że żadnej nie zbudował, technicznie wyglądała ona wykonalnie do funkcjonowania. Druga to: lubię proste rzeczy. Nie widziałem żadnego sensu, by narzucać dwa poziomy protokołów „end-to-end”. Myślałem, że jeden wystarczał.’’

~ Louis Pouzin

Te pomysły były potem przyjęte do stworzenia Protokołu internetowego (IP) i innych sieciowych protokołów.

Definicja[edytuj | edytuj kod]

RFC1594 definiuje określenie datagram następująco:

„Samodzielna, niezależna jednostka danych niosąca wystarczalną informację, kierowaną od źródła do wybranego komputera bez pośrednictwa wcześniejszych wymian między źródłem, destynowanym komputerem, a siecią transportową.”

~ RFC 1594

Datagram musi być samodzielny i niewspierany wcześniejszymi wymianami, ponieważ nie ma tu żadnego łączenia z ustalonym czasem trwania między dwoma komunikującymi się punktami, jak np. w wielu konwersacjach telefonicznych.

Sieć datagramów jest często porównywana do serwisu mailowego; użytkownik przekazuje jedynie adres przeznaczenia i nie otrzymuje gwarancji dostarczenia i potwierdzenia udanego przekazania e-maila. Datagramy są więc uznawane jako niegodne polegania na sobie. Serwis datagramów rozrzuca je bez wcześniejszego ustalenia ich ścieżki. Jest więc uznawana za bezpołączeniową. Nie przywiązuje się również uwagi do kolejności, w jakiej inne datagramy są wysyłane lub otrzymywane. Co ciekawe, te same datagramy mogą podróżować różnymi ścieżkami, zanim dotrą do identycznego miejsca docelowego.

Struktura[edytuj | edytuj kod]

Każdy datagram składa się z dwóch składników: nagłówka i ładunku danych. Nagłówek zawiera wszystkie niezbędne informacje do transportu pierwotnego zestawu do miejsca przeznaczenia bez konieczności wcześniejszych wymian, między zestawem a siecią. Nagłówki mogą zawierać adresy źródła i miejsca docelowego, ale również typowane pola. Ładunek to dane, które mają zostać przetransportowane. Proces zagnieżdżania się ładunku danych w oznaczonym nagłówku nazywany jest kapsułkowaniem.

Protokół internetowy[edytuj | edytuj kod]

Protokół internetowy definiuje standardy dla kilku typów datagramów.

Warstwa internetowa to serwis datagramów dostarczana przez IP np. UDP jest napędzane przez serwis datagramów w warstwie internetowej. IP jest bezpołączeniowym, dostępnym, niesolidnym serwisem dostarczania informacji. TCP jest wyższym poziomem protokołem działającym na szczycie IP, który dostarcza rzetelny łączeniowo-zorientowany serwis.

Określenie datagram jest często używane, jako synonim pakietu, ale są to niuansy. Słowo datagram jest generalnie zarezerwowane dla pakietów z niesolidnych serwisów, które nie mogą określić nadawcy, gdy przesyłanie się nie powiodło. Z kolei termin pakiet przypisany jest dla jakiegokolwiek pakietu, zaufanego, lub niezaufanego. Datagramy to pakiety IP szybką i niepewną usługę jak UDP. Wszystkie pakiety IP są datagramami, aczkolwiek w warstwie DCP, to co jest określane segmentem TCP, jest czasem potrzebnym fragmentem IP z datagramu. To jednak odnosi się do pakietów.

Zobacz też[edytuj | edytuj kod]

Przypisy[edytuj | edytuj kod]