Rozproszone systemy obiektowe

Podobne dokumenty
Tworzenie aplikacji rozproszonej w Sun RPC

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )

Zdalne wywołanie procedur. Krzysztof Banaś Systemy rozproszone 1

76.Struktura oprogramowania rozproszonego.

Oprogramowanie systemów równoległych i rozproszonych. Wykład 6

Zdalne wywoływanie procedur RPC. Dariusz Wawrzyniak 1

Zdalne wywoływanie procedur RPC

Zdalne wywoływanie procedur RPC

MODEL WARSTWOWY PROTOKOŁY TCP/IP

Systemy rozproszone. na użytkownikach systemu rozproszonego wrażenie pojedynczego i zintegrowanego systemu.

5. Model komunikujących się procesów, komunikaty

Wprowadzenie. Dariusz Wawrzyniak 1

Zdalne wywoływanie procedur RPC 27. października Dariusz Wawrzyniak (IIPP) 1

Programowanie współbieżne i rozproszone

Zdalne wywoływanie procedur RPC 27. października 2010

Programowanie z użyciem RPC

Wybrane działy Informatyki Stosowanej

Problemy niezawodnego przetwarzania w systemach zorientowanych na usługi

Wywoływanie metod zdalnych

Sieci komputerowe. Wykład 5: Warstwa transportowa: TCP i UDP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Middleware wprowadzenie października 2010

Zdalne wywołania procedur. Jarosław Kuchta Programowanie Współbieżne

Wywoływanie procedur zdalnych

Middleware wprowadzenie października Dariusz Wawrzyniak (IIPP) 1

Wywoływanie procedur zdalnych

RPC Remote Procedural Call. Materiały do prezentacji można znaleźć na stronie:

Systemy rozproszone System rozproszony

współbieżność - zdolność do przetwarzania wielu zadań jednocześnie

Aplikacje RMI

Mechanizmy pracy równoległej. Jarosław Kuchta

Programowanie rozproszone w języku Java

Wywoływanie metod zdalnych

Akademia Techniczno-Humanistyczna w Bielsku-Białej

Akademia Górniczo-Hutnicza im. Stanisława Staszica

Sieci komputerowe. Zajęcia 3 c.d. Warstwa transportu, protokoły UDP, ICMP

Architektury systemów rozproszonych LABORATORIUM. Ćwiczenie 1

Wywoływanie procedur zdalnych

Komunikacja i wymiana danych

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Laboratorium Sieci Komputerowych - 2

IBM DCE/DFS. Mikołaj Gierulski. 17 stycznia 2003

Sun RPC/XDR. Dariusz Wawrzyniak 1

Wstęp. Historia i przykłady przetwarzania współbieżnego, równoległego i rozproszonego. Przetwarzanie współbieżne, równoległe i rozproszone

Klient-Serwer Komunikacja przy pomocy gniazd

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ

Wykład 4: Protokoły TCP/UDP i usługi sieciowe. A. Kisiel,Protokoły TCP/UDP i usługi sieciowe

Budowa karty sieciowej; Sterowniki kart sieciowych; Specyfikacja interfejsu sterownika sieciowego; Open data link interface (ODI); Packet driver

1. Model klient-serwer

Rywalizacja w sieci cd. Protokoły komunikacyjne. Model ISO. Protokoły komunikacyjne (cd.) Struktura komunikatu. Przesyłanie między warstwami

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

external Data Representation

Stos TCP/IP. Warstwa aplikacji cz.2

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

WYKŁAD: Przetwarzanie rozproszone typu klient-serwer.

Przesyłania danych przez protokół TCP/IP

Sun RPC/XDR 10. listopada Dariusz Wawrzyniak (IIPP) 1

AKADEMIA GÓRNICZO-HUTNICZA im. Stanisława Staszica w Krakowie. Wydział Inżynierii Mechanicznej i Robotyki. Kierunek: Inżyniera Mechatroniczna

Bazy Danych i Usługi Sieciowe

Plan wykładu. 1. Sieć komputerowa 2. Rodzaje sieci 3. Topologie sieci 4. Karta sieciowa 5. Protokoły używane w sieciach LAN 6.

Programowanie współbieżne i rozproszone

Sieci komputerowe. Wstęp

Protokoły sieciowe - TCP/IP

Przykłady DFS z lotu ptaka :) NFS AFS Coda GoogleFS ZFS

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Architektura typu klient - serwer. Oprogramowanie systemów równoległych i rozproszonych. Wykład 6. Cechy architektury klient - serwer

Działanie komputera i sieci komputerowej.

Skąd dostać adres? Metody uzyskiwania adresów IP. Statycznie RARP. Część sieciowa. Część hosta

Sieci Komputerowe. Wykład 1: TCP/IP i adresowanie w sieci Internet

Podstawy Transmisji Danych. Wykład IV. Protokół IPV4. Sieci WAN to połączenia pomiędzy sieciami LAN

Czas w systemach rozproszonych. Krzysztof Banaś Systemy rozproszone 1

XML-RPC: Zdalne wykonywanie procedur

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

IPv6. Wprowadzenie. IPv6 w systemie Linux. Zadania Pytania. budowa i zapis adresu, typy adresów tunelowanie IPv6 w IPv4

Wykład I. Wprowadzenie do baz danych

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

Enkapsulacja RARP DANE TYP PREAMBUŁA SFD ADRES DOCELOWY ADRES ŹRÓDŁOWY TYP SUMA KONTROLNA 2 B 2 B 1 B 1 B 2 B N B N B N B N B Typ: 0x0835 Ramka RARP T

Sieciowa komunikacja procesów - XDR i RPC

external Data Representation

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Politechnika Śląska w Gliwicach Instytut Automatyki 2005/2006

Michał Jankowski. Remoting w.net 2.0

ZiMSK. Konsola, TELNET, SSH 1

Kierunek: technik informatyk 312[01] Semestr: II Przedmiot: Urządzenia techniki komputerowej Nauczyciel: Mirosław Ruciński

Systemy Rozproszone Technologia ICE

System komputerowy. Sprzęt. System komputerowy. Oprogramowanie

Programowanie Sieciowe 1

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład X

Sieci równorzędne, oraz klient - serwer

Wykład 2: Budowanie sieci lokalnych. A. Kisiel, Budowanie sieci lokalnych

Charakterystyka sieci klient-serwer i sieci równorzędnej

Komunikacja międzyprocesowa. Krzysztof Banaś Systemy rozproszone 1

Ćwiczenie nr: 9 Obliczenia rozproszone MPI

Adres IP

MASKI SIECIOWE W IPv4

Adresowanie grupowe. Bartłomiej Świercz. Katedra Mikroelektroniki i Technik Informatycznych. Łódź, 25 kwietnia 2006

Plan wykładu. Domain Name System. Hierarchiczna budowa nazw. Definicja DNS. Obszary i ich obsługa Zapytania Właściwości.

ZiMSK dr inż. Łukasz Sturgulewski, DHCP

Transkrypt:

Rozproszone systemy obiektowe Grzegorz Jabłoński Mariusz Orlikowski 1 Rozproszone systemy obiektowe, G. Jabłoński, Katedra Mikroelektroniki i Technik Informatycznych, Politechnika Łódzka 2010

Program wykładu Wprowadzenie Sockets ONC (Sun) RPC CORBAIce DCOM 2

Co to jest system rozproszony? Poznajemy go po tym, że pracę uniemożliwia nam awaria komputera, o którym nigdy wcześniej nie słyszeliśmy Leslie Lamport, 1987 Zespół (być może) heterogenicznych węzłów połączonych w sieć, która zapewnia dostęp do dzielonych zasobów lub usług Zespół niezależnych komputerów, który widziany jest przez użytkownika jako jeden spójny system 3

Główne cechy systemu rozproszonego Wiele komputerów Mogą być homo- lub heterogeniczne Połączonych w sieć Typowo sieć ogólnego przeznaczenia, nie skonstruowaną celowo na potrzeby systemu rozproszonego Współpracujących w celu dzielenia zasobów lub usług Program jest wykonywany na więcej niż jednym komputerze 4

Trendy technologiczne 5 Przetwarzanie równoległe podział obliczeń między wiele komputerów Dwa sposoby budowy takich systemów Systemy wieloprocesorowe ściśle powiązane, procesory współdzielą pamięć i zegar, komunikacja odbywa się przez pamięć dzieloną, wydzielona wewnętrzna sieć komunikacyjna Systemy rozproszone luźno powiązane, procesory nie dzielą pamięci i zegara, komunikacja odbywa się poprzez zewnętrzną sieć ogólnego przeznaczenia Tanie, wydajne komputery osobiste Wydajne sieci

Motywacja dla systemów rozproszonych Dzielenie zasobów Przyspieszenie obliczeń Części składowe mogą działać współbieżnie Równoważenie obciążenia Niezawodność Przy odpowiedniej nadmiarowości częściowo uszkodzony system może pracować nadal Komunikacja Wsparcie dla aplikacji do pracy grupowej 6

Terminologia Z punktu widzenia każdego procesora w systemie rozproszonym reszta procesorów i ich zasoby są zdalne, jego własne są lokalne Jednostki obliczeniowe w systemie rozproszonym bywają różnie nazywane Hosty, węzły, komputery, maszyny,... 7

Systemy operacyjne Sieciowe systemy operacyjne Każdy komputer ma własny SO SO zawiera usługi sieciowe umozliwiające dostęp do zdalnych zasobów Użytkownik jest świadomy istnienia wielu komputerów i musi się tym jawnie zajmować Rozproszone systemy operacyjne SO wielu komputerów współpracują ze sobą tworząc wrażenie pojedynczego systemu Użytkownik jest nieświadomy istnienia wielu komputerów Middleware Warstwa oprogramowania między SO i aplikacjami wspierającymi przetwarzanie rozproszone 8

Sieciowe systemy operacyjne Typowym przykładem są r-polecenia w systemie UNIX Remote login (rlogin) Przezroczyste, dwukierunkowe połączenie Remote file transfer (rcp) Lokalizacja plików nie jest przezroczysta dla użytkownika Brak prawdziwego dzielenia plików Rsh, rexec etc. Usługi są implementowane jako procesy na zdalnym komputerze czekające na połączenia 9

Rozproszone systemy operacyjne Wbudowane wsparcie dla Migracji danych Całego pliku z miejsca A do miejsca B lub jedynie jego aktualnie niezbędnych części Migracji obliczeń Przeniesienie obliczeń w inne miejsce może być bardziej efektywne niż przeniesienie danych Migracji procesów Proces nie jest zawsze wykonywany na komputerze na którym został uruchomiony (równoważenie obciążeń lub niezawodność) 10

Cele projektowe systemów rozproszonych 11 Przezroczystość Z punktu widzenia użytkownika system rozproszony powinien wyglądać jak konwencjonalny, scentralizowany system Dlaczego trudno to osiągnąć Inne typy uszkodzeń Wydajność zależy od podziału obliczeń Innym aspektem przezroczystości jest mobilność użytkowników Użytkownik siadający przy dowolnym komputerze w systemie powinien widzieć to samo Przezroczystość nie zawsze jest korzystna Dobre udogodnienie to takie, które można wyłączyć Potrzeba wiedzy o rozproszonej naturze w celu optymalizacji aplikacji

Inne cele: niezawodność Odporność na uszkodzenia Dodanie komputerów do systemu zwiększa prawdopodobieństwo, że któryś z nich ulegnie uszkodzeniu Tak jak w przypadku macierzy dyskowych RAID, chcemy z wady uczynić zaletę: stosujemy replikację stanu obliczeń, dzięki czemu system może pracować (być może mniej wydajnie) nawet przy występowaniu uszkodzeń Powinien wspierać automatyczną reintegrację komputerów w systemie rozproszonym 12

Inne cele: skalowalność Zdolnośc systemu do adaptacji do zwiększonego obciążenia Zmniejszenie wydajności i zajęte zasoby Konieczność zapewnienia rezerwowych zasobów w celu zapewnienia niezawodności i poprawnej pracy przy zwiększonym obciążeniu (np. wytrzymanie slashdot effect w przypadku serwerów www) Zasada: zapotrzebowanie na usługi pojedynczego komponentu systemu powinno być ograniczone z góry przez pewną stałą, niezależnie od liczny węzłów w systemie 13

Architektura klient-serwer Zadania aplikacji są podzielone między komputery klienckie i serwery Typowo serwery posiadają jakieś szczególne cechy, niemożliwe do bezpośredniego uzyskania w dużej liczbie klientów Więcej pamięci, więcej lub szybsze procesory, więcej pamięci, licencje na kosztowne oprogramowanie etc. Wybór sposobu podziału aplikacji zależy od chrakterystyki klienta, serwera, aplikacji, sieci komunikacyjnej i spodziewanego obciążenia systemu Thin client vs. thick client 14

Komunikacja w systemach rozproszonych 15 Brak fizycznej pamięci dzielonej, konieczność przesyłania komunikatów Podstawowe operacje to Send() i Receive() Client wysyła zapytanie i czeka na odbiór odpowiedzi. Serwer odbiera zapytanie i wysyła odpowiedź Dane muszą być w jakiś sposób zakodowane w ciele komunikatu Komunikaty mogą być zawodne lub niezawodne (w przypadku zawodnych, wyższa warstwa musi zapewnić niezawodność transmisji) Operacje mogą być blokujące i nieblokujące Może być oparta na specjalizowanym protokole lub protokole ogólnego przeznaczenia (np. TCP/IP)

16 OSI Reference Model

1 April 1990 - RFC 1149 Standard for the transmission of IP datagrams on avian carriers Implementation: http://www.blug.linux.no/rfc1149/ Script started on Sat Apr 28 11:24:09 2001 vegard@gyversalen:~$ /sbin/ifconfig tun0 tun0 Link encap:point-to-point Protocol inet addr:10.0.3.2 P-t-P:10.0.3.1 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:150 Metric:1 RX packets:1 errors:0 dropped:0 overruns:0 frame:0 TX packets:2 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 RX bytes:88 (88.0 b) TX bytes:168 (168.0 b) vegard@gyversalen:~$ ping -i 900 10.0.3.1 PING 10.0.3.1 (10.0.3.1): 56 data bytes 64 bytes from 10.0.3.1: icmp_seq=0 ttl=255 time=6165731.1 ms 64 bytes from 10.0.3.1: icmp_seq=4 ttl=255 time=3211900.8 ms 64 bytes from 10.0.3.1: icmp_seq=2 ttl=255 time=5124922.8 ms 64 bytes from 10.0.3.1: icmp_seq=1 ttl=255 time=6388671.9 ms --- 10.0.3.1 ping statistics --- 9 packets transmitted, 4 packets received, 55% packet loss round-trip min/avg/max = 3211900.8/5222806.6/6388671.9 ms vegard@gyversalen:~$ exit Script done on Sat Apr 28 14:14:28 2001 17

Implementacja warstw Information Transfer Application layer Message Conversion layer Presentation Session Transport Converted Message Packet layer Pkt Hdr First Pkt Pkt Hdr Second Pkt Frame layer Frame Hdr Pkt Hdr First Pkt Frame Hdr Pkt Hdr Second Pkt 18 Physical layer Frames sent out onto network

Kilka ważniejszych protokołów 7 - Application DoD Netware/Novell IBM 6 - Presentation 5 - Session 4 - Transport UDP TCP SPX NetBIOS 3 - Network IP IPX 2 - Data Link 1 - Physical Network Card UDP:User Datagram Protocol TCP:Transmission Control Protocol IP:Internet Protocol SPX:Sequenced Packet exchange IPX:Internetwork Packet exchange 19

Implementowany protokół Zaimplementować serwer pierwiastkujący liczby rzeczywiste i podający bieżący czas na serwerze Oparty na protokole TCP W celu zapewnienia przenośności między różnymi procesorami wszystkie liczby przesyłamy w standardzie Big Endian RQ ID pozwala na rozróżnienie różnych zapytań Pytanie o pierwiastek: 0 0 0 1 RQ ID Liczba (IEEE double) Odpowiedź: 1 0 0 1 RQ ID Pierwiastek (IEEE double) 20

Implementowany protokół Datę i czas przesyłamy w postaci tekstowej, bez kończącego zera Długość podajemy w kolejności Big Endian W jednym połączeniu można przesłać kilka zapytań Kolejność odpowiedzi może być inna, niż kolejność zapytań Pytanie o czas: 0 0 0 2 RQ ID Odpowiedź: 1 0 0 2 RQ ID Długość (BE) Data i czas 21

Inne paradygmat projektowania Projektowanie zorientowane na komunikację Zaprojektuj protokół Napisz program zgodny z protokołem Projektowanie zorientowane na aplikację Napisz program Sockety RPC Podziel program i dodaj protokół komunikacyjny 22

RPC Remote Procedure Call Wywołanie procedury (podprogramu) działającej na innym komputerze Problemy Identyfikacja i dostęp do zdalnej procedury Parametry Wartości zwracane 23

Zdalna procedura Client blah, blah, blah bar bar = foo(a,b); blah, blah, blah protocol Server int int foo(int x, x, int int y ) { if if (x>100) return(y-2); else if if (x>10) return(y-x); else return(x+y); } 24

Sun RPC Jest kilka różnych specyfikacji RPC Jedną z powszechnie stosowanych jest Sun RPC (ONC RPC) NFS (Network File System) jest oparty na RPC Bogaty zestaw narzędzi pomocniczych 25

10 kroków wywołania RPC Client Process Client routines Server Process Server routines local procedure call = (1) (10) (6) (5) Client stub Server stub system call = (2) (9) (7) (4) Network routines (8) (3) = network communication Network routines local kernel remote kernel 26

Organizacja Sun RPC Remote Program Shared Global Data Procedure 1 Procedure 2 Procedure 3 27

Argumenty procedur W Sun RPC mozna przekazac do procedury jedynie pojedynczy argument Zazwyczaj jest to struktura, zawierająca kilka wartości 28

RPCGEN Istnieje narzędzie ułatwiające tworzenie klientów i serwerów RPC Program rpcgen wykonuje większość pracy programisty Wejściem do programu rpcgen jest definicja protokołu w formie listy zdalnych procedur i typów parametrów 29

Plik definicji protokołu Opis interfejsu zdalnych procedur Prawie prototypy funkcji Definicje wszystkich struktur danych używanych w wywołaniach (typy argumentów i wartości zwracanych) Może również zawierać współdzielony kod (współdzielony przez klienta i serwer) 30

Przykładowy plik definicji protokołu struct twonums { int a; int b; }; program UIDPROG { version UIDVERS { int RGETUID(string<20>) = 1; string RGETLOGIN( int ) = 2; int RADD(twonums) = 3; } = 1; } = 0x20000001; 31

Język XDR Typy danych XDR to nie to samo, co typy języka C Istnieje odwzorowanie (ang. mapping) między typami danych używanymi przez XDR i C tym głównie zajmuje się rpcgen Składnia XDR jest w większości zbliżona do C Różnica przy łańcuchach i tablicach 32

Tablice w XDR Tablice o stałej długości wyglądają tak samo, jak w C int foo[100] Tablice o zmiennej długości wyglądają następująco int foo<> lub int foo<maxsize> Domyślna długość maksymalna to 2 32-1 33

Tablice w XDR co jest wysyłane int x[n] int y<m> x 0 x 1 x 2... x n-1 k jest rzeczywistym rozmiarem tablicy k m k y 0 y 1... y 2 y k 34

Łańcuchy w XDR Deklarowane podobnie, jak tablice o zmiennej długości string s<100> Wysyłana jest długość łańcucha, a następnie sekwencja znaków ASCII... n s 0 s 1 s 2 s 3 s n-1 n jest rzeczywistą długością łańcucha (wysyłaną jako int) 35

Identyfikacja procedur Każda procedura jest identyfikowana przez Nazwa komputera (Adres IP) Identyfikator programu (32-bitowa liczba całkowita) Identyfikator procedury (32-bitowa liczba całkowita) Numer wersji programu Dla celów testowych i uproszczenia migracji 36

Identyfikator programu Każdy zdalny program ma unikalny identyfikator Zakresy identyfikatorów 0x00000000-0x1fffffff Defined by Sun 0x20000000-0x3fffffff Defined by user 0x40000000-0x5fffffff Transient 0x60000000-0xffffffff Reserved 37

Identyfikator procedury i numer wersji programu Identyfikatory procedur zwykle zaczynają się od 1 i przyjmują wartości kolejnych liczb całkowitych Numery wersji zwykle zaczynają się od 1 i przyjmują wartości kolejnych liczb całkowitych 38

Serwer iteracyjny W Sun RPC najwyżej jedna zdalna procedura może być wykonywana w danym momencie Jeżeli zostanie wywołana kolejna, wywołanie jest blokowane do momentu zakończenia pierwszego W niektórych sytuacjach (np. operacje na bazie danych) może to być korzystne 39

Semantyka wywołania procedury Co oznacza wywołanie lokalnej procedury Jest ona uruchomiona dokładnie raz Co oznacza wywołanie zdalnej procedury Może nie być uruchomiona dokładnie raz, jeżeli stosuje się domyslny protokół UDP Semantyka co najmniej raz Jeżeli procedura zwraca wartość Semantyka zero lub więcej razy Jeżeli procedura nie zwraca wartości 40

Zdalna procedura deposit() deposit(gwjaccount,$100) Zawsze należy pamiętać, że nie wiadomo, ile razy procedura została wywołana Sieć może powielić wywołanie (UDP) 41

Dynamiczne mapowanie portów Serwery RPC zwykle nie używają dobrze znanych portów Klient zna Program ID i adres IP serwera RPC zawiera mechanizm umożliwiający znalezienie numeru portu zdalnego programu Usługa wyszukiwania portów musi być uruchomiona na każdym komputerze, który zawiera serwery RPC Serwer RPC rejestruje się w tym serwisie Jestem programem 35 i nasłuchuję na porcie 12343 42

Dynamiczne mapowanie portów Program implementujący wyszukiwanie portów nosi nazwę portmapper Portmapper to również serwer RPC Portmapper nasłuchuje na porcie 111 43

Programowanie z użyciem Sun RPC Biblioteka RPC to zestaw narzędzi służących do automatyzacji tworzenia klientów i serwerów RPC Klienci RPC to procesy wywołujące zdalne procedury Serwery RPC to procesy zawierające procedury, które mogą być wywoływane przez klientów 44

Programowanie z użyciem Sun RPC Biblioteka RPC Procedury XDR Biblioteka RPC Wywołanie usługi RPC Rejestracja w portmapperze Przekazanie nadchodzących wywołań do właściwych procedur Generator programów 45

Biblioteka RPC Funkcje niskiego i wysokiego poziomu które mogą być używane w serwerach i klientach Wysokopoziomowe funkcje zapewniają prosty dostęp do usług RPC 46

Wysokopoziomowa biblioteka RPC int callrpc( char *host, u_long prognum, u_long versnum, u_long procnum, xdrproc_t inproc, char *in, xdrproc_t outproc, char *out); 47

Wysokopoziomowa biblioteka RPC int registerrpc( u_long prognum, u_long versnum, u_long procnum, char *(*procname)(), xdrproc_t inproc, xdrproc_t outproc); 48

Wysokopoziomowa biblioteka RPC void svc_run(); svc_run() to dyspozytor (ang. dispatcher) Dyspozytor czeka na połączenia przychodzące i wywołuje odpowiednią funkcję w celu obsłużenia danego zgłoszenia 49

Ograniczenia biblioteki wysokopoziomowej Wysokopoziomowa biblioteka RPC wspiera jedynie UDP (nie TCP) W celu użycia TCP należy używać biblioteki niskopoziomowej Biblioteka wysokopoziomowa nie wspiera uwierzytelniania 50

Niskopoziomowa biblioteka RPC Pełna kontrola nad wszystkimi opcjami RPC TCP & UDP Wartości timeout Broadcast 51

RPCGEN Protocol Description Input File rpcgen 52 Client stubs XDR filters Header file Server skeleton C Source Code

Pliki wyjściowe rpcgen > rpcgen foo.x foo_clnt.c foo_svc.c foo_xdr.c foo.h (client stubs) (server main) (xdr filters) (shared header file) 53

Kompilacja klienta > gcc -o fooclient foomain.c foo_clnt.c foo_xdr.c foomain.c zawiera funkcję main() klienta (i być może inne funkcje) która wywołuje usługi rpc za pośrednictwem funkcji pośredniczących (ang. stub functions) w foo_clnt.c Funkcje pośredniczące używają filtrów xdr 54

Kompilacja serwera > gcc -o fooserver fooservices.c foo_svc.c foo_xdr.c fooservices.c zawiera definicje zdalnych procedur 55