Systemy rozproszone Komunikacja (I) Protokoły warstwowe Wywołanie zdalnych procedur Wywołanie zdalnych obiektów Komunikacja zorientowana na komunikaty Komunikacja potokowa Systemy rozproszone / Komunikacja (I)
Niezbędne uzgodnienia Ile Volt powinno być wykorzystywanych do wysłania 0-bit sygnału, a ile dla 1-bitowego? Jak odbiorca wie, która wiadomość jest ostatnia? Jak można wykryć, że wiadomość została uszkodzona lub zagubiona? Jak długie są liczby, ciągi znaków i inne struktury danych? W jaki sposób są one reprezentowane? ISO OSI = Model OSI = Model referencyjny Open Systems Interconnection Protokoły: połączeniowe, bezpołączeniowe. zestaw protokołów= stos protokołów = zbiór protokołów używanych w danym systemie Systemy rozproszone / Komunikacja (I)
Protokoły warstwowe (1) 2-1 Warstwy, interfejsy, i protokoły w modelu OSI. Systemy rozproszone / Komunikacja (I)
Protokoły warstwowe (2) 2-2 Typowy komunikat przesyłany przez sieć. Systemy rozproszone / Komunikacja (I)
Warstwa łącza danych 2-3 Wymiana komunikatów pomiędzy nadawcą a odbiorcą w warstwie łącza danych. Systemy rozproszone / Komunikacja (I)
Wymiana komunikatów Typowe komunikaty: Proszę prześlij ponownie wiadomość n. Już była ponownie wysłana, Nie, nie była No nie, była wysyłana, OK, może i tak, ale jednak prześlij ją ponownie. Systemy rozproszone / Komunikacja (I)
TCP w architekturze klient-serwer 2-4 Zwykły tryb TCP TranzakcyjnyTCP (T/TCP) Systemy rozproszone / Komunikacja (I)
Protokoły na poziomie sieci Warstwa sieciowa pakiety IP wirtualne kanały ATM (jednokierunkowy protokół zorientowany na połączenie), zbiór kanałów wirtualnych pogrupowanych w ścieżki wirtualne - predefiniowane trasy między parami hostów. Warstwa transportowa TCP, UDP TP0 – TP4, the official ISO transport protocols, RTP – protokół transportowy czasu rzeczywistego Systemy rozproszone / Komunikacja (I)
Protokoły warstwy pośredniej (I) Warstwa pośrednia – aplikacja, która logicznie „mieszka” w warstwie aplikacji, ale zawiera wiele protokołów ogólnego przeznaczenia, które zabezpieczają swoje warstwy, niezależnie od innych, bardziej specyficznych rodzajów oprogramowania. Przykłady protokołów: różne sposoby uwierzytelniania (dowodzenie podawanej tożsamości), protokołów autoryzacji (przyznawanie dostępu), szereg rozproszonych protokołów zatwierdzania(do zabezpieczenia niepodzielności), protokoły rozproszonych transakcji Systemy rozproszone / Komunikacja (I)
Protokoły warstwy pośredniej (II) 2-5 Referencyjny model ISO OSI dostosowany do komunikacji sieciowej Systemy rozproszone / Komunikacja (I)
Wysokopoziomowe usługi komunikacji w warstwie pośredniej wywołanie zdalnej procedury, wywołanie zdalnego obiektu, usługi do obsługi kolejek komunikatów, komunikacja strumieniowa. Systemy rozproszone / Komunikacja (I)
Wywołanie zwykłej procedury Przekazywanie parametrów w lokalnej procedurze: stos przed wywołaniem Stos kiedy wywoływana procedura jest aktywna Systemy rozproszone / Komunikacja (I)
Wywołanie zdalnej procedury Kiedy próbujemy wywołać procedury znajdujące się na innych komputerach, powstają pewne delikatne problemy: różne przestrzenie adresowe, muszą być przekazane parametry i wyniki, obie maszyny mogą ulec awarii. Standardowe typy parametrów wywołania funkcji: przez wartość, przez referencję, przez kopiowanie/odtworzenie. Systemy rozproszone / Komunikacja (I)
Stuby klienta i serwera Zasada realizacji RPC pomiędzy klientem a serwerem Systemy rozproszone / Komunikacja (I)
Etapy wywołania zdalnej procedury Procedura Klienta wywołuje stub Klienta w zwykły sposób Stub Klienta buduje wiadomość, wywołuje lokalny OS OS klienta wysyła wiadomość do zdalnego OS Zdalny OS przekazuje komunikat do stuba Serwera Stub Serwera rozpakowuje parametry, wywołuje Serwer Serwer działa, wynik wraca do stuba Stub Serwera opakowuje go w wiadomość, wywołuje lokalny OS OS Serwera wysyła wiadomość do OS Klienta OS Klienta przekazuje wiadomość do stuba Klienta Stub rozpakowuje wynik, zwraca go do Klienta Systemy rozproszone / Komunikacja (I)
Przekazywanie parametrów (1) 2-8 Etapy wykonywania zdalnego obliczenia poprzez RPC marshalling parametrów– opakowanie parametrów w komunikat. Systemy rozproszone / Komunikacja (I)
Przekazywanie parametrów (2) Mainframe’y IBM – kodowanie EBCDIC, PC IBM - ASCII big endian – słowo przechowywane ‘big-end-first’ (kolejność sieciowa, SPARC) little endian – słowo przechowywane ‘little-end-first’ (Pentium, VAX, PDP). Oryginalny komunikat na Pentium Komunikat po odbiorze na SPARC Komunikat po inwersji. Liczby w pudełkach oznaczają adres każdego bajtu Systemy rozproszone / Komunikacja (I)
Specyfikacja parametrów i generacja stubów Przykład uzgodnienia odn. protokołu Procedura Odpowiedni komunikat. Systemy rozproszone / Komunikacja (I)
Rozszerzone modele RPC Doors lokalna IPC może być bardziej skuteczna od komunikacji sieciowej doors - procedura w przestrzeni adresowej procesu serwera, która może być wywołana przez proces umieszczony razem z serwerem, doors powinny być zarejestrowane by można było je wywołać (door_create), w Solaris, każde doors ma nazwę pliku (fattach), wywołanie doors przez door_call (OS robi upcall), wynik zwracany do klienta poprzez door_return. korzyści:: jednolity mechanizm, wywoływanie procedur, dla skutecznej komunikacji w systemie rozproszonym, wady: konieczność rozróżniania standardowego wywołania procedur, wywoływania innych procesów lokalnych, wywołania zdalnych procesów. Systemy rozproszone / Komunikacja (I)
Zasada wykorzystywania doors jako mechanismu IPC. Systemy rozproszone / Komunikacja (I)
Asynchroniczne RPC (1) 2-12 Połączenie między klientem a serwerem w tradycyjnym RPC Interakcja z użyciem asynchronicznego RPC Systemy rozproszone / Komunikacja (I)
Klient i serwer współdziałające poprzez dwa asynchroniczne RPC 2-13 Klient i serwer współdziałające poprzez dwa asynchroniczne RPC odłożone synchroniczne RPC - asynchroniczne RPC z drugim wywołaniem ze strony serwera, jedno-kierunkowe RPC – klient nie czeka na akceptację żądania, problem z niezawodnością Systemy rozproszone / Komunikacja (I)
Tworzenie Klienta i Serwera 2-14 Kroki w pisaniu klienta i serwera w DCE RPC. Systemy rozproszone / Komunikacja (I)
Łączenie Klienta z Serwerem 2-15 Łączenie klient-serwer w DCE. Systemy rozproszone / Komunikacja (I)
Ogólna organizacja zdalnego obiektu z proxy po stronie klienta. Obiekty rozproszone 2-16 Ogólna organizacja zdalnego obiektu z proxy po stronie klienta. Systemy rozproszone / Komunikacja (I)
Łączenie Klienta z Obiektem Distr_object* obj_ref; //Deklaruj referencję do obiektu w całym systemie obj_ref = …; // Inicjalizuj referencję do rozproszonego obiektu obj_ref-> do_something(); // Połącz niejawnie i wywołaj metodę (a) Distr_object obj_ref; // Deklaruj referencję do obiektu w całym systemie Local_object* obj_ptr; //Deklaruj wskaźnik do lokalnych obiektów obj_ref = …; //Inicjalizuj referencję do rozproszonego obiektu obj_ptr = bind(obj_ref); //Jawnie połącz i uzyskaj wskaźnik do lokalnego proxy obj_ptr -> do_something(); //Wywołaj metodę na lokalnym proxy (b) (a) Niejawne połączenie z użyciem tylko globalnych referencji (b) Jawne połączenie z użyciem globalnych i lokalnych referencji Systemy rozproszone / Komunikacja (I)
Przekazywanie parametrów 2-18 Sytuacja przy przekazywaniu obiektów przez referencję lub wartość. Systemy rozproszone / Komunikacja (I)
Model rozrposzonego obiektu DCE Rozproszone dynamiczne obiekty w DCE. Rozrposzone nazwane obiekty Systemy rozproszone / Komunikacja (I)