In realtà, la tabella in cui si registrano i servizi si basa su una registrazione fisica in una tabella detta port map. Si usano:
una tripla {numero_progr, numero_vers, protocollo_di_trasporto}
un numero di porta
manca invece il numero di procedura dato che tutti i servizi RPC condividono lo stesso gestore di trasporto.
la tabella è strutturata come insieme di elementi:
struct mapping {
unsigned long prog;
unsigned long vers;
/* uso delle costanti IPPROTO_UDP ed IPPROTO_TCP */
unsigned int prot;
unsigned int port;};
/* implementazione a lista dinamica della tabella */
struct *pmaplist { mapping map; pmaplist next;}
La gestione della tabella di port_map si basa su un processo unico per ogni nodo RPC detto port mapper, lanciato come demone
Il port mapper abilita due gestori di trasporto propri
con due socket legate allo stesso numero di porta (111), al fine di limitare il numero di porte riservate.
Il port mapper identifica il numero di porta associato ad un qualsiasi programma, realizzando così un’allocazione dinamica dei servizi sui nodi.
Il port mapper registra i servizi sul nodo e offre procedure per ottenere informazioni:
servizi locali (effetto sulla port map locale)
servizi remoti (tra i parametri, l’indirizzo Internet remoto)
Prima fase dell’RPC: riconoscimento del numero di porta del servizio.