он должен удостовериться в достижении запросом адресата и отправке ответа на него.
Хотя протокол RPC фундаментально независим от используемого транспорта, он часто применяется поверх протоколов UDP/IP (User Datagram Protocol/Internet Protocol), по природе ненадежных.
На уровне RPC реализуется надежная служба дейтаграмм путем отслеживания запросов, не получивших ответа, и периодической повторной посылки их, осуществляемой до тех пор, пока ответ не будет получен.
Ранее показан типичный формат запроса и обратного (удачного) сообщения RPC. Переменная xid — идентификатор передачи, являющийся меткой запроса. Клиент генерирует для каждого запроса уникальный номер xid, сервер в ответном сообщении возвращает то же значение переменной. Это позволяет клиенту идентифицировать, на какой из запросов пришел ответ, а серверу обнаруживать дубликаты запросов (появляющиеся после повторов запросов клиентов). Поле direction указывает, является ли сообщение запросом или ответом. Поле rpc_vers содержит номер версии используемого протокола RPC (текущая версия — 2). Переменные prog и vers указывают на номер программы, обеспечивающей определенную службу RPC, а также ее версию. Служба RPC может поддерживать многопротокольные версии. Например, протокол NFS имеет программный номер 100 003 и различается версиями 2 и 3. Поле ргос конкретизирует процедуру, которую необходимо вызвать служебной программой. В ответном сообщении поля reply_stat и accept_stat содержат информацию о статусе.
Протокол RPC применяет пять механизмов опознания обращающегося к серверу - AUTH_NULL, AUTHJJNIX, AUTH_SH0RT, AUTH_DES, AUTH_KERB. При задании AUTH_NULL какая-либо проверка отсутствует, метод AUTH_UNIX основан на привилегиях, принятых в UNIX, и включает в себя имя клиентской машины, идентификатор пользователя и один или несколько групповых идентификаторов. Сервер может сгенерировать AUTH_SH0RT после получения привилегий AUTH_UNIX и возвратить их клиенту для использования в после дующих запросах. Такой подход применяется потому, что сервер способен очень быстро идентифицировать клиентов по привилегиям AUTH_SH0RT, тем самым ускоряя процесс аутентификации. Описанное средство является дополнительным и поддерживается далеко не всеми службами. Средство проверки AUTH_DES использует механизм закрытых ключей [36], AUTH_KERB основано на методике Kerberos [32]. Выбор инструмента контроля осуществляется каждой службой самостоятельно. Файловая система NFS поддерживает все пять перечисленных механизмов, ограничивая применение AUTH_NULL для процедуры NULL1. Большинство реализаций NFS, тем не менее, используют преимущественно AUTH_UNIX.
Корпорация Sun представила также язык программирования RPC и компилятор языка, называемый rpcgen. Служба, основанная на RPC, может быть полностью описана при помощи этого языка. При переработке описания программа rpcgen создает набор исходных файлов на С, которые содержат процедуры преобразования XDR и фиктивные версии клиентских и серверных процедур, а также заголовочный файл, включающий в себя определения, используемые совместно сервером и клиентом.
Реализация NFS
В этом разделе будут рассмотрены реализации протокола NFS в стандартных системах UNIX. Протокол NFS был перенесен и на He-UNIX-системы, такие как MS-DOS и VMS. Некоторые решения являются чисто клиентскими или серверными, в то время как другие версии предлагают оба варианта. Более того, существуют серверные реализации под конкретные системы, созданные компаниями Auspex, Network Alliance Corporation и Novell, не работающие под управлением систем, предназначенных для общих целей. Созданы и реализации NFS на прикладном уровне для различных операционных систем, многие из которых доступны бесплатно или условно-бесплатно. Конечно, эти варианты системы в деталях устроены по разному. Некоторые интересные варианты будут описаны в разделе 10.8. В этом разделе мы расскажем только о реализации NFS на уровне ядра для традиционных систем UNIX, поддерживающих интерфейс vnode/vfs.
Опубликовал katy
July 12 2015 06:49:33 ·
0 Комментариев ·
3140 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.