Multipleksowanie i Demultipleksowanie

    Protokoły komunikacyjne wykorzystują metody multipleksowania i demultipleksowania na poziomach wszystkich warstw. Przy wysyłaniu komputer nadawcy dołącza do danych dodatkowe bity, które wskazują typ komunikatu, program, który go nadał oraz używane protokoły. Wszystkie komunikaty są umieszczane w przeznaczonych do przesyłania ramkach sieciowych i łączone w strumień pakietów. U odbiorcy zaś te informacje są używane do sterowania przetwarzaniem.

 

 

    Na rysunku widać w jaki sposób oprogramowanie warstwy interfejsu sieciowego używa typu ramki do wybierania procedury, która obsługuje ramkę. Mówimy, że interfejs sieciowy demultipleksuje ją. W celu umożliwienia takiego wyboru, oprogramowanie nadawcy musi przed transmisją ustawiać pole typu ramki. Stąd każdy moduł oprogramowania, który wysyła ramki, używa pola typu do opisania zawartości ramki.

 

    Multipleksowanie i demultipleksowanie pojawia się w prawie wszystkich warstwach protokołów. Przykładowo, gdy interfejs sieciowy zdemultipleksuje ramki i prześle te z nich, które zawierają datagramy IP do modułu IP, oprogramowanie IP wydobędzie z nich datagramy i dalej je zdemultipleksuje zgodnie z protokołem transportu. Rysunek pokazuje demultipleksowanie w warstwie IP. Aby zdecydować w jaki sposób obsłużyć datagram, oprogramowanie intersieci sprawdza nagłówek datagramu i wybiera na podstawie typu datagramu odpowiednie procedury. W naszym przykładzie możliwe typy datagramów to: ICMP, UDP, TCP oraz EGP.

    Multipleksowanie, Demultipleksowanie i porty UDP

    Oprogramowanie UDP musi przyjmować datagramy UDP pochodzące od wielu programów użytkowych i przekazywać je warstwie IP w celu przesłania, a także odbierać datagramy UDP nadchodzące od warstwy IP i przekazywać odpowiednim programom użytkowym.

    Teoretycznie wszelkie multipleksowanie i demultipleksowanie między oprogramowaniem UDP i programami użytkowymi jest realizowane przez mechanizm portów. W praktyce każdy program użytkowy musi uzyskać od systemu operacyjnego port protokołu i odpowiadający mu numer portu, zanim będzie mógł wysłać datagram UDP. Po przydzieleniu portu każdy datagram, który jest wysyłany przez program użytkowy przez ten port, będzie miał odpowiedni numer portu w polu PORT NADAWCY UDP.

    Przy przetwarzaniu danych wejściowych UDP przyjmuje datagramy nadchodzące od oprogramowania IP i demultipleksuje je w zależności od portu UDP odbiorcy.

 

 

    Porty UDP można utożsamiać z kolejkami. W większości implementacji, gdy program użytkowy żąda od systemu przydzielenia określonego portu, system tworzy wewnętrzną kolejkę nadchodzących komunikatów. UDP, otrzymując datagram, sprawdza, czy numer portu odbiorcy odpowiada jednemu z obecnie używanych portów. Jeśli nie, wysyła komunikat ICMP “port niedostępny” i porzuca datagram. Jeśli któryś z portów pasuje, to UDP umieszcza nowy datagram w kolejce portu, skąd program użytkowy może go pobrać.

    Aby zakończyć rozważania dotyczące portów należy jeszcze wyjaśnić skąd komputer nadawca ma wiedzieć jakich numerów portu używa komputer odbiorca.

    Istnieją dwa różne podejścia do problemu przydzielania numerów portów. Jedno z nich opiera się na centralnym autorytecie. Każdy zgadza się na przydzielenie numerów portów, według potrzeb, przez władzę centralną, która publikuje listy przydzielonych numerów. Następnie wszelkie oprogramowanie używa numerów określonych na takiej liście. To podejście jest nazywane powszechnym przyporządkowaniem, a przydział portów określony przez władzę centralną - powszechnie znanym przydziałem portów.

    Drugie podejście do zagadnienia przydzielania portów wykorzystuje wiązania dynamiczne. W tym przypadku numery portów nie są znane globalnie. Gdy program potrzebuje portu, zostaje on przydzielony przez oprogramowanie sieciowe. Aby ustalić bieżący przydział portów na tym komputerze, trzeba wysłać zapytanie, którego portu używa interesująca nas usługa.

    Projektanci TCP/IP wybrali rozwiązanie pośrednie, w którym niektóre numery portów są przydzielane centralnie, lecz wiele numerów jest dostępnych dla programów użytkowych. Przydzielone numery portów zaczynają się od małych wartości i rosną, duże wartości są wykorzystywane do przydzielania dynamicznego.


| Wprowadzenie | Sieć komputerowa | Protokoły | Model OSI (Open Systems Interconnection) | TCP/IP a model OSI | Adresowanie fizyczne | Adresy IP |

| Protokół Odwzorowania Adresów (ARP) | Protokół Odwrotnego Odwzorowania Adresów (RARP) | Internet Protocol (IP) | Kapsułkowanie | Fragmentacja |

| Koleje Życia Datagramu | ICMP | Określanie Ostatecznego Adresata | UDP | Multipleksowanie I Demultipleksowanie | Transmission Control Protocol (TCP) |

| Idea przesuwających się okien | Segment TCP | Porty i połączenia | Konfiguracja TCP/IP w systemie Unix | Przyszłość TCP/IP | Bibliografia |