* NFS intro xdr_wrapstring, encodes null terminated string - type of xdr being encoded - length of string (so receiver can malloc appropriate buf) - bytes of string in network order - maybe a null @ end - simple parity/checksum/CRC @ end Server calls registerrpc() - prognum: program number (64 bits) defined in /etc/rpc - versum: version of this protocol/program - procnum: procedure no. within program 1 (INIT), 2 (READ_OBJECT), 3 (WRITE_OBJ), 4 (FINISH), ... - input xdr procedure + void* data - output xdr procedure + void* data Every rpc service has its own program number, out of a large space (larger than 1024 reserved ports). - every computer runs a special broker called rpcsvc or portmapper - when client C wants to talk to server S for program P, it asks pormapper (on fixed port 111) on host S "what port number does program P runs on with version V" - then client knows which port on S to talk to for service P (and version V). NULL procedure: useful as liveness "ping" and to measure service RTT