0–1fffffff | Определяются компанией Sun ([email protected]) |
20000000–3fffffff | Номера только для использования внутри сайта |
40000000–5fffffff | Для приложений, динамически генерирующих номера программ |
60000000–7fffffff | Зарезервировано |
80000000–9fffffff | Зарезервировано |
a0000000–bfffffff | Зарезервировано |
c0000000–dfffffff | Зарезервировано |
e0000000–ffffffff | Зарезервировано |
Запрос клиента RPC идентифицирует запускаемую программу и процедуру по ее номеру. Например, чтобы прочитать файл, запрос RPC обратится к программе 100003 (
Опыт показывает, что через какое-то время программы меняются. Процедуры дорабатываются, и их становится все больше. По этой причине запрос RPC должен указывать версию программы. Очень часто на хосте сервера одновременно работает несколько версий одной программы RPC.
Рис. 15.3. Доступ к удаленной процедуре из клиентского приложения
Удаленный запрос к процедуре (RPC) послан от клиента серверу в форматированном сообщении. RPC не заботится о том, какой транспортный протокол используется для пересылки сообщения. В мире TCP/IP RPC может работать поверх UDP или TCP, но можно использовать и другой транспорт.
Хотя обычно предполагается взаимодействие клиента с уникальным сервером, запросы RPC могут передаваться в многоадресных или широковещательных рассылках.
15.4 Типичная программа RPC
Наиболее известной программой RPC является NFS. Соответствующая команда
> spray -с 100 plum
sending 100 packets of lnth 86 to plum …
in 10.1 seconds elapsed time,
29 packets (29.00%) dropped by plum
Sent: 9 packets/sec, 851 bytes/sec
Rcvd: 7 packets/sec, 604 bytes/sec
Программа
> rusers
Zonker.num.cs.yale.edu leonard jones harris
Mark.num.cs.yale.edu davis sherman
Duke.num.cs.yale.edu burry victor
. . .
15.5 Работа с дубликатами запросов RPC
Если служба основана на протоколе TCP, запросы и ответы будут доставляться надежно. TCP берет на себя обеспечение целостности доставляемых данных.
Если RPC базируется на UDP, то, в зависимости от требований конкретного приложения, клиент и сервер должны обеспечить собственный тайм-аут, повторную пересылку и стратегию выделения дублированных сообщений. Разработчик приложения может выбрать для клиента любую из следующих стратегий:
■ Если в пределах тайм-аута не будет получен ответ, послать сообщение об ошибке конечному пользователю, который и должен снова инициировать запрос к службе.
■ Если в пределах тайм-аута не будет получен ответ, отправить запрос еще раз. Повторять эту операцию до тех пор, пока не будет получен ответ или не будет достигнут максимальный предел повторной пересылки.
Если клиент повторно посылает запрос, разработчик должен реализовать на сервере стратегию обработки дубликатов сообщений. Сервер может:
■ Не фиксировать ранее выполненные операции. При поступлении запроса выполнить процедуру, даже если это был дубликат запроса. Отметим, что для некоторых процедур (например, чтение набора байт из файла) в этом нет ничего страшного. Конечно, клиент может и дальше получать двойные ответы, но может и блокировать их, отслеживая ранее выполненные транзакции.
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии