15.3 Программы и процедуры RPC
15.3 Программы и процедуры RPC
Основные концепции RPC достаточно просты:
? Служба RPC реализуется одной или несколькими выполняющимися на сервере программами. Например, существуют отдельные программы управления доступом и блокировок файлов.
? Каждая программа может выполнять несколько процедур. Идея состоит в том, что процедура должна реализовывать одну простую, четко ограниченную функцию. Например, существуют отдельные процедуры файлового доступа NFS для операций чтения, записи, переименования и удаления файлов.
? Каждой программе присвоен числовой идентификатор.
? Каждая процедура программы также имеет числовой идентификатор.
На момент написания книги выделением уникальных номеров для программ занималась компания Sun Microsystems (в будущем это должно перейти под юрисдикцию IANA). Диапазоны идентификаторов программ показаны в таблице 15.1. Числовой идентификатор присваивается процедурам программы разработчиком этой программы. Например, процедура чтения NFS — 6, а переименования NFS — 11.
Таблица 15.1 Присваивание номеров в RPC
0–1fffffff Определяются компанией Sun (rpc@sun.com) 20000000–3fffffff Номера только для использования внутри сайта 40000000–5fffffff Для приложений, динамически генерирующих номера программ 60000000–7fffffff Зарезервировано 80000000–9fffffff Зарезервировано a0000000–bfffffff Зарезервировано c0000000–dfffffff Зарезервировано e0000000–ffffffff ЗарезервированоЗапрос клиента RPC идентифицирует запускаемую программу и процедуру по ее номеру. Например, чтобы прочитать файл, запрос RPC обратится к программе 100003 (NFS) и процедуре 6 (чтение). На рис. 15.3 показано клиентское приложение, обращающееся к удаленной процедуре программы 100003.
Опыт показывает, что через какое-то время программы меняются. Процедуры дорабатываются, и их становится все больше. По этой причине запрос RPC должен указывать версию программы. Очень часто на хосте сервера одновременно работает несколько версий одной программы RPC.
Рис. 15.3. Доступ к удаленной процедуре из клиентского приложения
Удаленный запрос к процедуре (RPC) послан от клиента серверу в форматированном сообщении. RPC не заботится о том, какой транспортный протокол используется для пересылки сообщения. В мире TCP/IP RPC может работать поверх UDP или TCP, но можно использовать и другой транспорт.
Хотя обычно предполагается взаимодействие клиента с уникальным сервером, запросы RPC могут передаваться в многоадресных или широковещательных рассылках.