Temat : Identyfikacja aplikacji socket.
Gniazda powstały jako koncepcja systemowej obsługi protokołu TCP/IP. Początki gniazd i powstania ich pierwszych specyfikacji sięgają Uniwersytetu Berkeley i ich dystrybucji UNIX'a Berkeley Software Distribution (BSD). Pełen mechanizm socketów zaimplementowano w 4.2 BSD Unix w roku 1983. Później z powodzeniem zastosowano standard SOCKET w innych systemach operacyjnych (m. in. WINDOWS, LINUX).
Gniazdem
(socket) nazywamy mechanizm komunikacyjny stosowany między
procesami działającymi w środowiskach UNIX oraz TCP/IP. Gniazda
definiują metody wymiany informacji oraz interfejs programowania
pozwalający budować aplikacje klient/serwer.
Socket jest
zdefiniowany jako końcówka (endpoint) dla komunikacji głównie
przez protokoły TCP/IP. Jest także zgodny z innymi protokołami (
m. in. IPX/SPX) oraz komunikacją międzyprocesową, ale zaznaczono,
że w niniejszej pracy się nimi nie zajmujemy. Socket z punktu
widzenia protokołu IP nie wnosi nic nowego, gdyż jest on "ponad
nim" (leży w wyższych warstwach). Socket jest obiektem
utrzymywanym przez system operacyjny i rezerwowanym przez program
użytkowy do jednoznacznej identyfikacji połączenia TCP lub
strumienia UDP, a więc definiującym dostęp aplikacji do warstwy
transportowej i sesji ( Transport & Session Layer ).
Socket
zdefiniowany jest przez 4 liczby:
- adres zdalny (adres IP
komputera po "przeciwnej stronie"),
- port zdalny
(numer portu do którego się odnosimy po "przeciwnej
stronie"),
- adres lokalny,
- port lokalny,
Rodzaje socketów:
Standard socket obsługuje wszystkie typowe mechanizmy połączeń TCP i UDP i daje aplikacji gotowy engine połączeń sieciowych. Typowa aplikacja korzysta ze Standard Socket.
Jeśli jednak aplikacja potrzebuje dostęp bezpośredni do przesyłanych pakietów, ma możliwość operowania na Raw Socket, co daje dostęp do każdego bitu przesyłanych pakietów IP. Ze względu na zagrożenia spowodowane bezpośrednim dostępem do nagłówków IP (IP Spoofing, SYNC flood) w środowisku LINUX raw sockety są dostępne tylko dla root'a.
Podział ze względu na rodzaj transmisji:
- TCP - (SOCK_STREAM) - zapewnia pewne, dwukierunkowe, sekwencyjne połączenie
- TCP/IPUDP - (SOCK_DGRAM) - przesyła datagramy bez połączeń i mechanizmów kontroli
- RAW - (SOCK_RAW) - raw socket (polskie "surowy socket") - tylko dla super-user'
Temat: Proces przesyłania danych, elementy pakietu. Routing trasowanie przesyłanie danych.
Rozgłaszanie grupowe (multicasting) jest technologią opierającą się na następujących zasadach:
- routery obsługujące transmisję przekazują pakiety multicastowe do danej sieci tylko wtedy, gdy w tej sieci znajduje się przynajmniej jeden członek konkretnej grupy multicastowej, pojedynczy host może być członkiem jednej grupy lub większej ich liczby.
- komputery do powiadomienia routera o członkostwie w danej grupie lub o jego rezygnacji wykorzystują protokół IGMP, hosty zgłaszają za pomocą IGMP swoje członkostwo w grupie multicastowej do dowolnego sąsiadującego routera multicastowego.
- komputery mogą być odbiorcami, nadawcami lub pełnić obie te funkcje jednocześnie w danej grupie multicastowej.
Dane przesyłane są na specjalne adresy multicastowe określające grupę, która jest zainteresowana konkretnym typem danych.
- Wszystkie multicastowe adresy IP mieszczą się w zakresie od 224.0.0.0 do 239.255.255.255..
- Adresy w zakresie 224.0.0.0 do 224.0.0.255 są zarezerwowane dla protokołów w sieciach lokalnych i nie mogą być przekazywane przez routery, np. adresy 224.0.0.5 i 224.0.0.6 wykorzystywane są przez protokół routingu OSPF do przesyłania informacji między wszystkimi routerami.
- Zakres adresów od 224.0.1.0 do 238.255.255.255 jest zakresem adresów globalnych, które mogą być wykorzystywane do multicastingu między organizacjami oraz przez Internet
- Część z nich jest zarezerwowana dla niektórych aplikacji, np. 224.0.1.1 dla protokołu NTP (Network Time Protocol).
- Zakres adresów od 239.0.0.0 do 239.255.255.255 jest zakresem o ograniczonym zasięgu, przeznaczonym dla grup lokalnych lub jednej organizacji.
Protokoły routingu. Informacje o trasach w tablicach routingu mogą być wprowadzane statycznie przez administratora, lecz wymaga to dużo czasu i rekonfiguracji wszystkich routerów w przypadku zmian w sieci. Routery mogą również uczyć się tras w sposób dynamiczny. W tym celu korzystają z protokołów routingu do wymiany między sobą informacji o trasach lub topologii sieci.
- Protokół RIP (Routing Information Protocol) jest protokołem wykorzystującym algorytm wektora odległości. Ze względu na niskie wymagania sprzętowe może być używany przez wszystkie routery.
- Protokół OSPF (Open Short Path First) jest, podobnie jak RIP, protokołem otwartym, co oznacza, że jego specyfikacja jest ogólnie dostępna.