DCN - модель клиент-сервер

Два удаленных процесса приложения могут взаимодействовать в основном двумя разными способами:

  • Одноранговый: оба удаленных процесса выполняются на одном уровне и обмениваются данными с использованием некоторого общего ресурса.

  • Клиент-сервер: один удаленный процесс действует как клиент и запрашивает некоторый ресурс у другого процесса приложения, выступающего в роли сервера.

В модели клиент-сервер любой процесс может выступать в роли сервера или клиента. Это не тип машины, размер машины или ее вычислительная мощность, которая делает его сервером; Именно способность обслуживать запрос делает машину сервером.

Система может действовать как Сервер и Клиент одновременно. То есть один процесс действует как сервер, а другой - как клиент. Также может случиться, что процессы клиента и сервера находятся на одном компьютере.

связь

Два процесса в модели клиент-сервер могут взаимодействовать различными способами:

  • Розетки

  • Удаленные вызовы процедур (RPC)

Розетки

В этой парадигме процесс, выполняющий роль сервера, открывает сокет, используя хорошо известный (или известный клиенту) порт, и ожидает, пока не поступит какой-либо клиентский запрос. Второй процесс, действующий как Клиент, также открывает сокет, но вместо ожидания входящего запроса клиент обрабатывает «запросы в первую очередь».

Когда запрос поступает на сервер, он обслуживается. Это может быть либо обмен информацией, либо запрос ресурса.

Удаленный вызов процедур

Это механизм, в котором один процесс взаимодействует с другим посредством вызовов процедур. Один процесс (клиент) вызывает процедуру, лежащую на удаленном хосте. Процесс на удаленном хосте называется сервером. Оба процесса выделены заглушки. Это общение происходит следующим образом:

  • Клиентский процесс вызывает клиентскую заглушку. Он передает все параметры, относящиеся к локальной программе.

  • Все параметры затем упаковываются (маршалируются) и выполняется системный вызов для отправки их на другую сторону сети.

  • Ядро отправляет данные по сети, а другой конец получает их.

  • Удаленный хост передает данные в заглушку сервера, где они распаковываются.

  • Параметры передаются в процедуру, а затем процедура выполняется.

  • Результат отправляется обратно клиенту таким же образом.