2001 © Sławomir Jeżewski Katedra Informatyki Stosowanej
PŁ.
Programowanie sieciowe
Wykład VII a
SUN RPC
(Remote Procedure Call)
Typy programowania w sieci
•
Jawne programowanie sieciowe
•
Niejawne programowanie sieciowe
Historia
•
1975 White
–
Xerox Corporation
–
Courier 1981
–
Cedar 1984
•
1985 Bob Lyon
–
Sun Microsystems
–
ONC/RPC ( Open network Computing / Remote
Procedure Call )
•
1985
–
Apollo
•
NCA/RPC ( Network Computing Archtecture )
–
Hevlett Packard
•
OSF DCE ( Open Software Fundation Distributed
Computing Environment )
Sun RPC
Materiały i opisy
•
RFC 1831 [Srinivasan 1995a]
•
RFC 1832 [Srinivasan 1995b]
Proceduralny model
programu
Proceduralny model
programu
Proceduralny model
programu - rozszerzenie
Proceduralny model
programu - rozszerzenie
Struktura programu
Model klient-server
usługi RPC
Program wywołujący procedurę – klient
Program oferujący procedury – serwer
Model klient-server
usługi RPC
•
UDP
•
TCP
Algorytm postępowania
przy uruchamianiu
serwera
•
Utwórz gniazdo bierne
•
Zarejestruj numer gniazda w bazie
odwzorowań
•
Przetwarzaj żądania kolejnych klientów
–
Oczekuj na połączenie klienta
–
Pobierz dane od klienta
–
Wykonaj działania
–
Zwróć wyniki
–
Zamknij połączenie
Działanie serwera
•
Oczekuj na połączenie klienta
•
Pobierz dane od klienta *
•
Wykonaj działania
•
Zwróć wyniki *
•
Zamknij połączenie
Algorytm działania
klienta
Połącz z zarządcą bazy odwzorowań ( Port 111)
Zapytaj o numer portu przydzielonego
programowi
Połącz z programem RPC na porcie wskazanym
przez zarządcę
Wyślij komunikat z poleceniem
Format komunikatów
RPC
struct rpc_msg
{
unsigned int mesgid;
msg_type mesgt;
union
{
call_body cbody;
rply_body rbody;
}
}
struct call_body
{
unsigned int rpcvers;
unsigned int rprog;
unsigned int rprogvers;
unsigned int rproc;
struct opaque_auth cred;
struct opaque_auth verf;
struct args argumenty;
}
struct opaque_auth
{
auth_type atype;
opaque body<400;
}
AUTH_NULL
AUTH_UNIX
AUTH_SHORT
AUTH_DES
AUTH_KERBEROS
Identyfikacja procedury
( program, procedura, wersja )
0x00000000 - 0x1fffffff
Sun Microsystems
0x20000000 - 0x3fffffff
0x40000000 - 0x5fffffff
0x60000000 - 0x7fffffff
0x80000000 - 0x9fffffff
0xa0000000 - 0xbfffffff
0xc0000000 - 0xdfffffff
0xe0000000 - 0xffffffff
Administrator w danym ośrodku
Numery tymczasowe
Numery zarezerwowane
Numery zarezerwowane
Numery zarezerwowane
Numery zarezerwowane
Numery zarezerwowane
Zewnętrzna reprezentacja
Danych
XDR
Problem N-kwadrat konwersji danych
Konwersja symetryczna
Big Endian
Podstawowe zasady konwersji XDR
int
32 bity Liczba całkowita ze znakiem
void
0
unsigned int 32 bity Liczba całkowita bez znaku
bool
32 bity Wartość boolowska
double
64 bity Liczba zmiennoprzecinkowa
hyper
64 bity
Liczba całkowita bez znaku
Unsigned hyper
64 bity
Liczba całkowita bez znakiem
float
32 bity Liczba zmiennoprzecinkowa
Zmienna
Rozmiar
Opis
Podstawowe zasady konwersji XDR
opaque
Dowolna
Dane nie konwertowane
Typ zmiennej
Rozmiar
Opis
string
Dowolna
Łańcuch znaków ASCII
fixed array
Dowolna
Tablica o ustalonym rozmiarze
symbolic constant
Dowolna
stała symboliczna
structure
Dowolna
struktura C
Discriminated
union
Dowoln
a
unia C / rekord z wariantami
Pascal
counted array
Dowolna
Tablica o zmiennym rozmiarze
Konstrukcja komunikatu
XDR
xdr_bool
xdr_int
xdr_char
xdr_double
xdr_ptrchar
xdr_ptrdouble
xdr_ptrint
xdr_float
xdr_float
xdr_enum
xdr_float
xdr_void
xdr_string
xdr_vector
xdrmem_creat
e
Model procedury rpcgen
Procedura A
Procedura
sprzęgająca
Procedura
łącznikowa
klienta
Klient
Procedura A
Procedura
sprzęgająca
Procedura
łącznikowa
serwera
Serwer
2001 © Sławomir Jeżewski Katedra Informatyki Stosowanej
PŁ.
Programowanie sieciowe
Wykład II b
Rozgłaszanie i rozsyłanie grupowe
( Protokół IGMP )
Internet Group Management Protocol