Сервер (программное обеспечение)

Се́рверное програ́ммное обеспечение (се́рвер,  от  — служить; множественное число се́рверы, в разговорном языке также употребляется сервера́) — в информационных технологиях — программный компонент вычислительной системы, выполняющий сервисные (обслуживающие) функции по запросу клиента, предоставляя ему доступ к определённым ресурсам или услугам.

Роль сервера 
Понятия сервер и клиент и закреплённые за ними роли образуют программную концепцию «клиент-сервер».

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

Формат запросов клиента и ответов сервера определяется протоколом. Спецификации открытых протоколов описываются открытыми стандартами, например, протоколы Интернета определяются в документах RFC.

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

Аппаратное обеспечение 

У слова «сервер» есть и другое значение — компьютер, выполняющий серверные задачи, или компьютер (или иное аппаратное обеспечение), специализированный (по форм-фактору и/или ресурсам) для использования в качестве аппаратной базы для серверов услуг (иногда — услуг определённого направления), разделяя ресурсы компьютера с программами, запускаемыми пользователем. Такой режим работы называется «невыделенным», в отличие от «выделенного» (), когда компьютер выполняет только сервисные функции. Строго говоря, на рабочей станции (для примера, под управлением Windows XP) и без того всегда работает несколько серверов — сервер удалённого доступа (терминальный сервер), сервер удалённого доступа к файловой системе и системе печати и прочие удалённые и внутренние серверы.

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

Универсальные серверы 
Универсальные серверы — особый вид серверной программы, не предоставляющий никаких услуг самостоятельно. Вместо этого универсальные серверы предоставляют серверам услуг упрощённый интерфейс к ресурсам межпроцессного взаимодействия и/или унифицированный доступ клиентов к различным услугам. Существуют несколько видов таких серверов:
 inetd (от  — демон сервисов IP) — стандартное средство UNIX-систем — программа, позволяющая писать серверы TCP/IP (и сетевых протоколов других семейств), работающие с клиентом через перенаправленные inetd потоки стандартного ввода и вывода (stdin и stdout).
 RPC (от  — удалённый вызов процедур) — система интеграции серверов в виде процедур, доступных для вызова удалённым пользователем через унифицированный интерфейс. Интерфейс, изобретённый Sun Microsystems для своей операционной системы (SunOS, Solaris; Unix-система), в настоящее время используется как в большинстве Unix-систем, так и в Windows.
 Прикладные клиент-серверные технологии Windows:
 (D-)COM ( — модель составных объектов) и др. — Позволяет одним программам выполнять операции над объектами данных, используя процедуры других программ. Изначально данная технология предназначена для их «внедрения и связывания объектов» (OLE ), но в общем позволяет писать широкий спектр различных прикладных серверов. COM работает только в пределах одного компьютера, DCOM доступна удалённо через RPC.
 Active-X — Расширение COM и DCOM для создания мультимедийных приложений.

Универсальные серверы часто используются для написания всевозможных информационных серверов — серверов, не нуждающихся в специфической работе с сетью и не имеющих никаких задач, кроме обслуживания клиентов. Например, в роли серверов для inetd могут выступать обычные консольные программы и скрипты.

Большинство внутренних и сетевых специфических серверов Windows работают через универсальные серверы (RPC, (D-)COM).

Маршрутизация 
Строго говоря, сервер маршрутизации не является сервером в классическом смысле, а является базовой функцией поддержки сети операционной системой.

Для TCP/IP маршрутизация является базовой функцией стека IP (кода поддержки TCP/IP). Маршрутизацию своих пакетов к месту назначения выполняет любая система в сети, маршрутизацию же чужих пакетов (форвардинг) выполняют только маршрутизаторы (также известные как роутеры или шлюзы). Задачи маршрутизатора при форвардинге пакета:
 принять пакет
 найти машину, на которую следует этот пакет, или следующий маршрутизатор по маршруту к ней (в таблице маршрутов)
 передать пакет или вернуть ICMP-сообщение о невозможности его доставки по причинам:
 назначение недостижимо () — у пакета кончилось «время жизни» прежде чем он достиг места назначения
 хост недостижим () — компьютер или следующий маршрутизатор выключен или не существует
 сеть недостижима () — маршрутизатор не имеет маршрута в сеть назначения
 если пакет не может быть доставлен по причине перегрузки маршрутизатора (или сети) — отбросить пакет без уведомлений

Динамическая маршрутизация 
Решения динамической маршрутизации призваны собирать информацию о текущем состоянии сложной сети и поддерживать таблицу маршрутов через эту сеть, чтобы обеспечить доставку пакета по кратчайшему и самому эффективному маршруту.

Из этих решений клиент-серверную модель использует только BGP ( — протокол пограничного шлюза), применяемый для глобальной маршрутизации. Локальные решения (RIP OSPF) используют в своей работе бродкастовые и мультикастовые рассылки.

Сетевые службы 
Сетевые службы обеспечивают функционирование сети; например, серверы DHCP и BOOTP обеспечивают стартовую инициализацию серверов и рабочих станций, DNS — трансляцию имён в адреса и наоборот.

Серверы туннелирования (например, различные VPN-серверы) и прокси-серверы обеспечивают связь с сетью, недоступной роутингом.

Серверы AAA и Radius обеспечивают в сети единую аутентификацию, авторизацию и ведение логов доступа.

Информационные службы 
К информационным службам можно отнести как простейшие серверы, сообщающие информацию о хосте (time, daytime, motd) и пользователях (finger, ident), так и серверы для мониторинга, например SNMP. Большинство информационных служб работают через универсальные серверы.

Особым видом информационных служб являются серверы синхронизации времени — NTP. Кроме информирования клиента о точном времени NTP-сервер периодически опрашивает несколько других серверов на предмет коррекции собственного времени. Помимо времени, анализируется и корректируется скорость хода системных часов. Коррекция времени осуществляется ускорением или замедлением хода системных часов (в зависимости от направления коррекции), чтобы избежать проблем, возможных при простой перестановке времени.

Файловые серверы 

Файловые серверы представляют собой серверы для обеспечения доступа к файлам на диске сервера.

Прежде всего это серверы передачи файлов по заказу, по протоколам FTP, TFTP, SFTP и HTTP. Протокол HTTP ориентирован на передачу текстовых файлов, но серверы могут отдавать в качестве запрошенных файлов и произвольные данные, например динамически созданные веб-страницы, картинки, музыку и т. п.

Другие серверы позволяют монтировать дисковые разделы сервера в дисковое пространство клиента и полноценно работать с файлами на них. Это позволяют серверы протоколов NFS и SMB. Серверы NFS и SMB работают через интерфейс RPC.

Недостатки файл-серверной системы:

 Очень большая нагрузка на сеть, повышенные требования к пропускной способности. На практике это делает практически невозможной одновременную работу большого числа пользователей с большими объёмами данных.
 Обработка данных осуществляется на компьютере пользователя. Это влечёт повышенные требования к аппаратному обеспечению каждого пользователя. Чем больше пользователей, тем больше денег придётся потратить на оснащение их компьютеров.
 Блокировка данных при редактировании одним пользователем делает невозможной работу с этими данными других пользователей.
 Безопасность. Для обеспечения возможности работы с такой системой Вам будет необходимо дать каждому пользователю полный доступ к целому файлу, в котором его может интересовать только одно поле.

Серверы доступа к данным 
Серверы доступа к данным обслуживают базу данных и отдают данные по запросам. Один из самых простых сервисов подобного типа — LDAP ( — облегчённый протокол доступа к спискам).

Для доступа к серверам баз данных единого протокола не существует, однако ряд баз данных объединяет использование единых правил формирования запросов — языка SQL ( — язык структурированных запросов). Наряду с ними есть и другие — NoSQL базы данных.

Медиа серверы 
Медиасерверы предоставляют сети доступ к мультимедийным источникам, от аудио/видео по запросу (что приближает медиасерверы к файл-серверам) до стриминга аудио/видео в реальном времени.

VoIP / IP-телефония 
Серверы IP-телефонии (VoIP) — программные коммутаторы (софтсвитчи), IP-АТС, виртуальные АТС и серверы ВКС, а также специализированные серверы Интернет-сервисов (таких как Skype) обеспечивают пользователей возможностями голосовой и видео-связи в режиме реального времени посредством компьютерной сети. 
Кроме собственно передачи потоковых медиа-данных (аудио и видео), сервер IP-телефонии подобно классической АТС реализует возможность регистрации оконечного терминала, маршрутизацию вызова и корректное установление соединения между пользователями, а также нередко и дополнительные виды обслуживания. 

В отдельных случаях, в зависимости от реализуемой технологии и административных настроек, VoIP-сервер может обеспечивать только управление — регистрацию пользователя в сети и коммутацию поступающих вызовов, без непосредственного участия в передаче медиа-данных между кклиентскими терминалами. В этом случае потоковые данные с полезной нагрузкой передаются напрямую между конечными пользователями (peer-to-peer) и / или некоторыми промежуточными устройствами, приложениями. Известно, что такой вариант прямой связи с управлением через сервер  применяется в Skype, Viber, Telegram и WhatsApp. Также, подобный режим нередко применяется в корпоративных IP-АТС.

В качестве клиентских терминалов к VoIP-серверу могут выступать VoIP-телефоны, видеотелефоны, программные телефоны (софтфоны), а также обычные аналоговые телефонные аппараты подключенные через VoIP-шлюз.
Сервер IP-телефонии может работать как самостоятельное устройство для обеспечения связи между внутренними пользователями или быть подключенным к какой-либо сторонней сети, в том числе к телефонной сети общего пользования, через Интернет или через сеть оператора телефонной связи.

Службы обмена сообщениями 
Службы обмена сообщениями позволяют пользователю передавать и получать сообщения (обычно — текстовые).

В первую очередь это серверы электронной почты, работающие по протоколу SMTP. SMTP-сервер принимает сообщение и доставляет его в локальный почтовый ящик пользователя или на другой SMTP-сервер (сервер назначения или промежуточный). На многопользовательских компьютерах пользователи работают с почтой прямо на терминале (или в веб-интерфейсе). Для работы с почтой на персональном компьютере почта забирается из почтового ящика через серверы, работающие по протоколам POP3 или IMAP.

Для организации конференций существует серверы новостей, работающие по протоколу NNTP.

Для обмена сообщениями в реальном времени существуют серверы чатов. Существует большое количество чат-протоколов, например, IRC, Jabber и OSCAR.

Серверы удалённого доступа 
Серверы удалённого доступа, через соответствующую клиентскую программу, обеспечивают пользователя аналогом локального терминала (текстового или графического) для работы на удаленной системе.

Для обеспечения доступа к командной строке служат серверы telnet, RSH и SSH.

Графический интерфейс для Unix-систем — X Window System — имеет встроенный сервер удалённого доступа, так как с такой возможностью разрабатывался изначально. Иногда возможность удалённого доступа к интерфейсу Х-Window неправильно называют «X-Server» (этим термином в X-Window называется видеодрайвер).

Стандартный сервер удалённого доступа к графическому интерфейсу Microsoft Windows называется терминальный сервер.

Некоторую разновидность управления (точнее, мониторинга и конфигурирования) также предоставляет протокол SNMP. Компьютер или аппаратное устройство для этого должно иметь SNMP-сервер.

Серверы приложений 
Серверы предоставляющие сети прикладные сервисы (в том числе — вычислительные).

Игровые серверы 
Игровые серверы служат для одновременной игры нескольких пользователей в единой игровой ситуации. Некоторые игры имеют сервер в основной поставке и позволяют запускать его в невыделенном режиме (то есть позволяют играть на машине, на которой запущен сервер).

Прочие серверы 
Принт-серверы позволяют пользователям сети совместно использовать общий принтер.

Факс-сервер позволяет пользователям сети отправлять факсимильные сообщения.

Серверные решения 
Серверные решения — операционные системы и/или пакеты программ, оптимизированные под выполнение компьютером функций сервера и/или содержащие в своем составе комплект программ для реализации типичного набора сервисов.

В качестве примера серверных решений можно привести Unix-системы, изначально предназначенные для реализации серверной инфраструктуры.

Также необходимо выделить пакеты серверов и сопутствующих программ (например комплект веб-сервер/PHP/MySQL для быстрого развёртывания хостинга) для установки под Windows (для Unix свойственна модульная или «пакетная» установка каждого компонента, поэтому , но они существуют. Наиболее известное — LAMP).

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

Серверные решения служат для упрощения организации базовой ИТ-инфраструктуры компаний, то есть для оперативного построения полноценной сети в компании, в том числе и «с нуля». Компоновка отдельных серверных приложений в решение подразумевает, что решение предназначено для выполнения большинства типичных задач; при этом значительно снижается сложность развёртывания и общая стоимость владения ИТ-инфраструктурой, построенной на таких решениях.

Примечания 

Сетевое программное обеспечение