Два удаленных процесса приложения могут общаться в основном двумя разными способами:
-
Одноранговая связь: оба удаленных процесса выполняются на одном уровне и обмениваются данными с использованием некоторого общего ресурса.
-
Клиент-сервер: один удаленный процесс действует как клиент и запрашивает некоторый ресурс у другого процесса приложения, выступающего в роли сервера.
Одноранговая связь: оба удаленных процесса выполняются на одном уровне и обмениваются данными с использованием некоторого общего ресурса.
Клиент-сервер: один удаленный процесс действует как клиент и запрашивает некоторый ресурс у другого процесса приложения, выступающего в роли сервера.
В модели клиент-сервер любой процесс может выступать в роли сервера или клиента. Это не тип машины, размер машины или ее вычислительная мощность, которая делает его сервером; Именно способность обслуживать запрос делает машину сервером.
Система может действовать как Сервер и Клиент одновременно. То есть один процесс действует как сервер, а другой — как клиент. Также может случиться, что процессы клиента и сервера находятся на одном компьютере.
связь
Два процесса в модели клиент-сервер могут взаимодействовать различными способами:
-
Розетки
-
Удаленные вызовы процедур (RPC)
Розетки
Удаленные вызовы процедур (RPC)
Розетки
В этой парадигме процесс, выполняющий роль сервера, открывает сокет, используя хорошо известный (или известный клиенту) порт, и ожидает, пока не поступит какой-либо клиентский запрос. Второй процесс, действующий как Клиент, также открывает сокет, но вместо ожидания входящего запроса клиент обрабатывает «запросы в первую очередь».
Когда запрос поступает на сервер, он обслуживается. Это может быть либо обмен информацией, либо запрос ресурса.
Удаленный вызов процедур
Это механизм, в котором один процесс взаимодействует с другим посредством вызовов процедур. Один процесс (клиент) вызывает процедуру, лежащую на удаленном хосте. Процесс на удаленном хосте называется сервером. Оба процесса выделены заглушки. Это общение происходит следующим образом:
Клиентский процесс вызывает клиентскую заглушку. Он передает все параметры, относящиеся к локальной программе.
Все параметры затем упаковываются (маршалируются) и выполняется системный вызов для отправки их на другую сторону сети.
Ядро отправляет данные по сети, а другой конец получает их.
Удаленный хост передает данные в заглушку сервера, где они распаковываются.
Параметры передаются в процедуру, а затем процедура выполняется.
Результат отправляется обратно клиенту таким же образом.