Сервер или клиент - это функции, которые выполняет компьютер. Любой компьютер в сети может выполнять функции сервера или клиента, а может выполнять обе эти функции одновременно. Все зависит от программного обеспечения.
Функции сервера (serve - обслуживать) - выполнять операции по запросам клиентов. Это может быть: хранение и передача файлов, выполнение приложений с выдачей результатов, обслуживание принтеров и т.д. Если компьютер выполняет только функции сервера, то его , обычно, называют выделенный сервер. Нередко у такого компьютера выключены или вовсе отсутствуют монитор или клавиатура, а все управление им производится с других компьютеров через сеть.
Если компьютер не выполняет никаких серверных функций в сети, то такой компьютер называют рабочей станцией (workstation) , за ним работают пользователи.
Если же компьютеры в сети одновременно выполняют и серверные, и клиентские функции, то такая сеть называется одноранговая.
Различные Операционные системы (OS) по разному приспособлены для функций сервера и клиента. Существует ряд операционных систем специально предназначенных для выполнения серверных задач.
Основной принцип технологии "клиент-сервер" заключается в разделении функций приложения на три группы:
- ввод и отображение данных (взаимодействие с пользователем);
- прикладные функции, характерные для данной предметной области;
- функции управления ресурсами (файловой системой, базой даных и т.д.)
Поэтому, в любом приложении выделяются следующие компоненты:
- компонент представления данных
- прикладной компонент
- компонент управления ресурсом
Связь между компонентами осуществляется по определенным правилам, которые называют "протокол взаимодействия".
Рассмотрим, как выглядит разграничение функций между сервером и клиентом.
Функции приложения-клиента:
Посылка запросов серверу.
Интерпретация результатов запросов, полученных от сервера.
Представление результатов пользователю в некоторой форме (интерфейс пользователя).
Функции серверной части:
Прием запросов от приложений-клиентов.
Интерпретация запросов.
Оптимизация и выполнение запросов к БД.
Отправка результатов приложению-клиенту.
Обеспечение системы безопасности и разграничение доступа.
Управление целостностью БД.
Реализация стабильности многопользовательского режима работы.
«Клиент — сервер» (англ. client–server) — вычислительная или сетевая архитектура, в которой задания или сетевая нагрузка распределены между поставщиками услуг, называемыми серверами, и заказчиками услуг, называемыми клиентами. Фактически клиент и сервер — это программное обеспечение. Обычно эти программы расположены на разных вычислительных машинах и взаимодействуют между собой через вычислительную сеть посредством сетевых протоколов, но они могут быть расположены также и на одной машине. Программы-сервера ожидают от клиентских программ запросы и предоставляют им свои ресурсы в виде данных (например, загрузка файлов посредством HTTP, FTP, BitTorrent, потоковое мультимедиа или работа с базами данных) или в виде сервисных функций (например, работа с электронной почтой, общение посредством систем мгновенного обмена сообщениями или просмотр web-страниц во всемирной паутине). Поскольку одна программа-сервер может выполнять запросы от множества программ-клиентов, её размещают на специально выделенной вычислительной машине, настроенной особым образом, как правило, совместно с другими программами-серверами, поэтому производительность этой машины должна быть высокой. Из-за особой роли такой машины в сети, специфики её оборудования и программного обеспечения, её также называют сервером, а машины, выполняющие клиентские программы, соответственно, клиентами.