Datagram
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ść datagramów nie musi być gwarantowana przez sieć.
Historia
edytujWyraż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 Daviesa. 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
edytujRFC1594 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. Te same datagramy mogą podróżować różnymi ścieżkami, zanim dotrą do identycznego miejsca docelowego.
Struktura
edytujKaż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
edytujProtokół 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 niuanse. 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.