Архитектура «клиент‑сервер» — это способ организовать взаимодействие в вычислительных системах, где роли распределены между поставщиками услуг (серверами) и их потребителями (клиентами). Клиент и сервер — это программы; они могут работать на одном устройстве, но чаще находятся на разных машинах и общаются по сети. Сервер ждёт запросов и выдаёт ресурсы: файлы по HTTP или FTP, потоки мультимедиа, ответы баз данных, почтовые и мессенджер‑сервисы. Один сервер обслуживает многих клиентов, поэтому его обычно ставят на выделённый мощный компьютер и тоже называют сервером, а устройства с клиентскими программами — клиентами.
Роль клиента и сервера
В модели клиент‑сервер сервер предоставляет сервис, а клиент запрашивает его. Сервера различают по функциям: одни отдают веб‑страницы, другие хранят файлы, третьи управляют базами данных. Ресурс может быть программой, данными или даже аппаратной составляющей; предоставление доступа к этим ресурсам и есть сама услуга.
Одна и та же машина может одновременно выступать и клиентом, и сервером — всё зависит от задач. Клиентские и серверные компоненты могут работать на одном устройстве или на разных. Взаимодействие между серверами для синхронизации или репликации часто называют межсерверным взаимодействием.
Протоколы и API
Сервис — это абстракция: клиенту не нужно знать внутреннюю реализацию сервера, достаточно понимать формат ответа. Общение строится по схеме «запрос — ответ», и для этого нужен общий язык — протокол.
API — это формальный интерфейс сервиса. Он задаёт формат данных и упрощает анализ ответов, делая обмен между разными платформами предсказуемым и удобным.

Надёжность и защита
Сервер может одновременно получать большое число запросов, тогда на первый план выходят планирование и приоритезация задач. Чтобы избежать злоупотреблений и сохранить доступность, серверы применяют ограничения на поток запросов. Атаки типа «отказ в обслуживании» эксплуатируют обязанность сервера отвечать, перегружая его. При передаче конфиденциальных данных используют шифрование для защиты информации.

Сравнение с одноранговой архитектурой
В клиент‑серверной модели есть центр — сервер, который концентрирует ресурсы и нагрузку. Это требует масштабирования аппаратной части и балансировки нагрузки при росте числа клиентов. В одноранговой (peer‑to‑peer) сети узлы равноправны: они напрямую делятся ресурсами и распределяют нагрузку между собой. Если один узел падает, другие продолжают обслуживать сеть. При изменении доступности протоколы перенаправляют запросы. Обе модели относятся к распределённым системам и используются в разных задачах.
Преимущества клиент‑серверной архитектуры следующего характера:
- централизованное хранение данных;
- повышенная защита доступа;
- экономия ресурсов на клиентских устройствах;
- отсутствие дублирования сервера на клиентах;
- возможность масштабирования при росте нагрузки.
Основные недостатки этой архитектуры следующие:
- единая точка отказа;
- высокая стоимость мощного серверного оборудования;
- потребность в квалифицированном администрировании;
- сложность развёртывания и настройки инфраструктуры.
Многоуровневая архитектура клиент — сервер
Многоуровневая архитектура разделяет функции по слоям, что делает систему гибче и удобнее в сопровождении. Типичный набор уровней включает:
- уровень представления (клиент);
- уровень логики приложения (сервер приложений);
- уровень данных (сервер базы данных).
Такое разделение упрощает масштабирование, тестирование и независимую модернизацию каждого слоя.

Сеть с выделенным сервером
Сеть с выделенным сервером — это локальная сеть, где ресурсы централизованы и управляются одним или несколькими серверами. Клиенты обращаются к файлам, принтерам и другим сервисам через эти серверы, что упрощает администрирование и контроль доступа. В учебной литературе, в частности в книге Эндрю Таненбаума «Компьютерные сети», подробно описаны преимущества такой организации в корпоративных средах.

