Читаем TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security) полностью

ПроцедураОписание
RPCBPROC_SETИспользуется службой регистрации программ через локальную RPCBIND.
RPCBPROC_UNSETИспользуется для отмены регистрации локальной программы.
RPCBPROC_GETADDRВозвращает клиенту универсальный адрес программы.
RPCBPROC_GETVERSADDRВ запрос включается нужный номер версии программы.
RPCBPROC_GETADDRLISTВыводит список адресов программы. Клиент может выбрать из нескольких доступных транспортных протоколов.
RPCBPROC_DUMPСписок всех элементов базы данных RPCBIND (например, предоставление сведений для вывода командой rpcinfo).
RPCBPROC_BCASTПоддержка широковещательного запроса — RPCBIND пересылает запрос локальной программе.
RPCBPROC_INDIRECTПоддержка косвенных запросов, которые являются многоадресными — RPCBIND пересылает их локальной программе и возвращает назад результат или сообщение об ошибке.
RPCBPROC_GETTIMEВозвращает местное время сервера, отсчитанное в секундах от полночи первого дня января 1970 г.
BPCBPBOC_UADDR2TADDRПреобразование универсальных адресов в адреса, специфичные для данного транспорта.
RPCBPROC_TADDR2UADDRПреобразование специфичных для транспорта адресов в универсальные адреса.
RPCBPROC_GETSTATПредоставление статистики о количестве и типах полученных запросов.
<p>15.8 Сообщения RPC</p>

Клиент RPC посылает запросы серверу и получает ответы на них в специальных сообщениях. Что должны содержать эти сообщения, чтобы клиент и сервер поняли друг друга?

Необходим идентификатор транзакции, определяющий соответствие между запросом и ответом. Запрос клиента должен указывать программу и процедуру, которую он хочет запустить. Клиенту необходим некоторый способ идентифицировать себя через мандат (credentials), доказывающий право использования службы. Наконец, запрос клиента должен содержать входные параметры. Например, запрос чтения NFS должен идентифицировать файл и количество читаемых байтов.

В дополнение к сообщению о результатах успешных запросов серверу необходим способ сообщения клиенту об отмене запроса и причинах такой отмены. Запрос может быть отклонен при несоответствии версий программы или ошибке при аутентификации клиента. Сервер должен сообщить об ошибках в параметрах или событиях, например: "Не могу найти файл".

На рис. 15.5 показано взаимодействие клиента с программой сервера. Клиент посылает запрос. Когда работа затребованной процедуры завершается, серверная программа возвращает ответ. Как видно из рис. 15.5, запрос включает:

■ Идентификатор транзакции

■ Текущий номер версии RPC

■ Номер программы

■ Версию программы

■ Номер процедуры

■ Мандат аутентификации

■ Проверочные сведения (verifier) аутентификации

■ Входные параметры

Рис. 15.5. Сообщения RPC

Если процедура выполнена успешно, ответ содержит результаты. Если при выполнении выявлены проблемы, ответ будет содержать информацию об ошибках.

<p>15.9 Аутентификация в RPC</p>

Некоторые службы не нуждаются в защите. Для вывода времени дня на сервере служба RPC может быть оставлена открытой для общего доступа. Однако клиент, обращающийся к личным данным, должен обеспечить некоторую опознавательную информацию (проходить аутентификацию). В некоторых случаях важно, чтобы сервер также подтверждал свою подлинность. Не следует посылать номер своей кредитной карточки через систему интерактивных заказов, если не будет гарантии в подлинности сервера. Таким образом, в некоторых случаях аутентификационные данные должен предоставлять как клиент, так и сервер (они будут как в запросах, так и в ответах).

В сообщении запроса аутентификационные сведения RPC пересылаются в двух полях:

■ Поле мандата (credentials) — содержит идентификационную информацию.

Перейти на страницу:

Похожие книги