Чтение онлайн

на главную - закладки

Жанры

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

Фейт Сидни М.

Шрифт:

100005 1 udp 746 mountd

100005 2 udp 746 mountd

100005 1 tcp 749 mountd

100003 2 udp 2049 nfs

100005 2 tcp 749 mountd

100026 1 udp 761 bootparam

100024 1 udp 764 status

100024 1 tcp 766 status

100021 1 tcp 767 nlockmgr

100021 1 udp 1033 nlockmgr

100021 3 tcp 771 nlockmgr

100021 3 udp 1034 nlockmgr

100020 1 udp 1035 llockmqr

100020 1 tcp 776 llockmgr

100021 2 tcp 779 nlockmgr

100021 2 udp 1036 nlockmgr

100011 1 udp 1070 rquotad

100001 2 udp 1111 rstatd

100001 3 udp 1111 rstatd

100001 4 udp 1111 rstatd

100002 1 udp 1124 rusersd

100002 2 udp 1124 rusersd

100012 1 udp 1127 sprayd

100008 1 udp 1132 walld

Отметим

интересный момент: для определения состояния приложения RPC использовалось другое приложение Remote Procedure Call.

Команда rpcinfo -b выполняет широковещательную рассылку в сети, запрашивая все работающие серверы о выполняемых ими программах и версиях этих программ. В приведенном ниже примере запрашиваются сведения о версии 1 программы spray под номером 100012.

> rpcinfo -b 100012 1

128.36.12.1 casper.na.cs.yale.edu 128.36.12.28 tesla.math.yale.edu 128.36.12.6 bink.na.cs.yale.edu

Каждая программа RPC имеет пустую процедуру с номером 0, возвращающую только ответ "Я активна". Нижеприведенная команда rpcinfo -u посылает сообщение пустой процедуре программы spray хоста bulldog.cs.yale.edu:

> rpcinfo -u bulldog.cs.yale.edu 100012

program 100012 version 1 ready and waiting

15.7 Программа rpcbind

В последних версиях RPC программа portmapper заменена на rpcbind. Исходная программа portmapper связывалась с UDP или TCP. Rpcbind независима от используемого транспортного протокола. Эта программа возвращает строку ASCII, содержащую адресную информацию, которая не зависит от используемого транспорта и называется форматом универсального адреса (universal address format).

15.7.1 Назначение rpcbind

Программа rpcbind основана на тех же принципах, что и portmapper. При инициализации программы RPC ей выделяется один или несколько динамически назначенных адресов для транспорта. Программа регистрирует полученные адреса в rpcbind, через которую они становятся известными клиентам.

Запрос клиента содержит номер программы и номер версии. Но в ответе rpcbind указывается универсальный адрес, который может предоставлять специальные сведения для NetWare SPX/IPX, SNA, DECnet или AppleTalk, а не для TCP или UDP. Тип предоставленного в ответе транспортного адреса зависит от используемого для запроса транспортного протокола.

Как и к portmapper, к rpcbind обращаются по общеизвестному порту 111 через UDP или TCP. Для других коммуникационных протоколов должен использоваться другой, заранее определенный локальный доступ.

Подобно portmapper, rpcbind поддерживает службу широковещательных рассылок RPC. Рассылки направляются на общеизвестную точку доступа к транспорту, определенную для службы rpcbind, например порт 111 для UDP или TCP. Каждая программа rpcbind, которая отслеживает широковещательные рассылки, может от имени клиента вызвать нужную ей локальную сервисную программу, получить ответ и переслать его клиенту. Версия 4 протокола RPC позволяет клиентам получать через rpcbind такой же вид косвенного обслуживания при многоадресной рассылке, как и при широковещательной.

15.7.2 Процедуры rpcbind

Процедуры программы rpcbind версии 4 представлены в таблице 15.3.

Таблица 15.3 Процедуры rpcbind

Процедура Описание
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 Предоставление статистики о количестве и типах полученных запросов.

15.8 Сообщения RPC

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

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

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

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

Поделиться:
Популярные книги

Совок 2

Агарев Вадим
2. Совок
Фантастика:
альтернативная история
7.61
рейтинг книги
Совок 2

Сама себе хозяйка

Красовская Марианна
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Сама себе хозяйка

СД. Том 17

Клеванский Кирилл Сергеевич
17. Сердце дракона
Фантастика:
боевая фантастика
6.70
рейтинг книги
СД. Том 17

Первый пользователь. Книга 3

Сластин Артем
3. Первый пользователь
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Первый пользователь. Книга 3

Хочу тебя навсегда

Джокер Ольга
2. Люби меня
Любовные романы:
современные любовные романы
5.25
рейтинг книги
Хочу тебя навсегда

Адъютант

Демиров Леонид
2. Мания крафта
Фантастика:
фэнтези
6.43
рейтинг книги
Адъютант

Убивать, чтобы жить

Бор Жорж
1. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать, чтобы жить

Измена. Испорченная свадьба

Данич Дина
Любовные романы:
современные любовные романы
короткие любовные романы
5.00
рейтинг книги
Измена. Испорченная свадьба

Я – Орк. Том 3

Лисицин Евгений
3. Я — Орк
Фантастика:
юмористическое фэнтези
попаданцы
5.00
рейтинг книги
Я – Орк. Том 3

Крестоносец

Ланцов Михаил Алексеевич
7. Помещик
Фантастика:
героическая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Крестоносец

Совок – 3

Агарев Вадим
3. Совок
Фантастика:
фэнтези
детективная фантастика
попаданцы
7.92
рейтинг книги
Совок – 3

С Д. Том 16

Клеванский Кирилл Сергеевич
16. Сердце дракона
Фантастика:
боевая фантастика
6.94
рейтинг книги
С Д. Том 16

Назад в СССР: 1986 Книга 5

Гаусс Максим
5. Спасти ЧАЭС
Фантастика:
попаданцы
альтернативная история
5.75
рейтинг книги
Назад в СССР: 1986 Книга 5

Ретроградный меркурий

Рам Янка
4. Серьёзные мальчики в форме
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Ретроградный меркурий