background image

2001 © Sławomir Jeżewski Katedra Informatyki Stosowanej 
PŁ.

Programowanie sieciowe 

Wykład VII a

SUN RPC

(Remote Procedure Call) 

background image

Typy programowania w sieci

Jawne programowanie sieciowe

Niejawne programowanie sieciowe

background image

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 )

background image

Sun RPC 

Materiały i opisy

RFC 1831 [Srinivasan 1995a]

RFC 1832 [Srinivasan 1995b]

background image

Proceduralny model 

programu

background image

Proceduralny model 

programu

background image

Proceduralny model 

programu - rozszerzenie

background image

Proceduralny model 

programu - rozszerzenie

background image

Struktura programu

background image

Model klient-server 

usługi RPC

Program wywołujący procedurę – klient

Program oferujący procedury – serwer

background image

Model klient-server 

usługi RPC

UDP

TCP

background image

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

background image

Działanie serwera

Oczekuj na połączenie klienta

Pobierz dane od klienta  * 

Wykonaj działania

Zwróć wyniki *

Zamknij połączenie

background image

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

background image

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

background image

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

background image

Zewnętrzna reprezentacja 

Danych 

XDR

Problem N-kwadrat konwersji danych

Konwersja  symetryczna 

Big Endian

background image

Podstawowe zasady konwersji XDR

int 

32 bity  Liczba całkowita ze znakiem 

void

 

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 

background image

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   

background image

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

background image

Model procedury rpcgen

Procedura A 

Procedura
sprzęgająca 

Procedura
łącznikowa
klienta 

Klient

Procedura A 

Procedura
sprzęgająca 

Procedura
łącznikowa 

serwera 

Serwer

background image

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 


Document Outline