Интегрированные сети ISDN

         

Формат RPC-отклика



Рисунок 4.5.16.3. Формат RPC-отклика


Поле отклик, содержащее 1, указывает на то, что данное сообщение представляет собой отклик на поступивший ранее запрос. Поле статус содержит 0 в случае, если запрос воспринят. Запрос игнорируется при конфликте кодов RPC-версии или неудачной идентификации клиента. Поле флаг результата принимает значение 0 при успешной обработке запроса. Ненулевое значение этого поля указывает на ошибку.

Для записи параметров RPC-запросов, откликов, параметров и результатов выполнения процедуры используется внешнее представление данных (XDR – External Data Representation, RFC-1014). Отправитель, формируя RPC-сообщение, использует XDR-формат, а получатель преобразует данные из этого формата в традиционное представление.

Существует два базовых вида отклика: MSG_ACCEPTED (сообщение принято) и MSG_DENIED (не принято). Факт приема сообщения не означает выполнение запрошенных процедур, поэтому клиенту выдается дополнительная информация о результатах взаимодействия его запроса с удаленной системой. RPC может найти применение при построении больших распределенных информационных систем, баз данных и систем управления. XDR позволяет программисту избежать написания специальных программ преобразования. Например, в разных ЭВМ используются различные форматы представления чисел с плавающей запятой. XDP берет на себя согласование форматов и делает написание прикладных программ машинно-независимым.

Программы RPC-сервера используют большое число портов с нестандартизованными номерами. Для управления использованием этих портов имеется специальная программа (portmapper), которая имеет номер 100000, номер версии -2 и сама пользуется портом номер 111. Распределение номеров портов можно посмотреть с помощью программы:

/usr/etc/rpcinfo -p



program

vers

proto

port

[программа

версия

протокол

порт

название программы]

100000

2

tcp

111

portmapper

100000

2

udp

111

portmapper

100029

1

udp

664

keyserv

100005

1

udp

702

mountd (монтирует демон для NFS)

100005

2

udp

702

mountd

100005

1

tcp

705

mountd

100005

2

tcp

705

mountd

100003

2

udp

2049

nfs (сама NFS)

100026

1

udp

714

bootparam

100024

1

udp

717

status

100024

1

tcp

719

status

100021

1

tcp

720

nlockmgr (NFS-менеждер)

100021

1

udp

1031

nlockmgr

100021

3

tcp

724

nlockmgr

100021

3

udp

1032

nlockmgr

100010

1

udp

718

etherstatd

100020

2

udp

1033

llockmgr

100020

2

tcp

729

llockmgr

100021

2

tcp

732

nlockmgr

100021

2

udp

1034

nlockmgr

100011

1

udp

1041

rquotad

100001

2

udp

1042

rstatd

100001

3

udp

1042

rstatd

100001

4

udp

1042

rstatd

100002

1

udp

1043

rusersd

100002

2

udp

1043

rusersd

100012

1

udp

1044

sprayd

100008

1

udp

1045

walld

Отсюда видно, что некоторые программы имеют несколько версий, а каждая комбинация номера программы, версии и протокола имеет свой собственный номер порта. В таблице 4.5.16.1 приведены ссылки на некоторые RPC-программы, используемые с NFS.



Содержание раздела