Слово «сервер» также применяется для обозначения сервисного аппаратного обеспечения, это значение рассматривается в статье Сервер (аппаратное обеспечение)

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

Роль сервераПравить

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

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

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

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

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

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

Аппаратными серверами (аппаратное обеспечение) называются узкоспециализированные решения со встроенным программным обеспечением (англ. firmware; в отличии от компьютеров, где программное обеспечение необходимо устанавливать), определяющим специализацию и возможные предоставляемые услуги. Аппаратные сервера, как правило, более просты и надежны в эксплуатации, потребляют меньше электроэнергии и, иногда, более дешевы. Но вместе с тем они менее гибки (так как изначально ограничены в выполняемых задачах) и, часто, ограничены в ресурсах.

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

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

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

Классификация cтандартных серверовПравить

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

Универсальные серверыПравить

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

  • inetd от англ. internet super-server daemon демон сервисов IP — стандартное средство UNIX-систем — программа, позволяющая писать серверы TCP/IP (и сетевых протоколов других семейств), работающие с клиентом через перенаправленные inetd потоки стандартного ввода и вывода (stdin и stdout).
  • RPC от англ. Remote Procedure Call удаленный вызов процедур — система интеграции серверов в виде процедур доступных для вызова удаленным пользователем через унифицированный интерфейс. Интерфейс изобретенный Sun Microsystems для своей операционной системы (SunOS, Solaris; Unix-система), в настоящее время используетстся как в большинстве Unix-систем, так и в Windows.
  • Прикладные клиент-серверные технологии Windows:
    • (D-)COM (англ. (Distributed) Component Object Model — модель составных объектов) и др. — Позволяет одним программам выполнять операции над объектами данных используя процедуры других программ. Изначално данная технология предназначена для их «внедрения и связывания объектов» (OLE англ. Object Linking and Embedding), но в общем позволяет писать широкий спектр различных прикладных серверов. COM работает только в пределах одного компьютера, DCOM доступна удаленно через RPC.
    • Active-X — Расширение COM и DCOM для создания мультимедиа-приложений для Интернета.

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

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

МаршрутизацияПравить

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

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

  • принять пакет
  • найти машину на которую следует этот пакет или следующий маршрутизатор по маршруту к ней (в таблице маршрутов)
  • передать пакет или вернуть ICMP-сообщение о невозможности его доставки по причинам:
    • Назначение недостижимо (Destination unreachable) — у пакета кончилось «время жизни» прежде чем он достиг места назначения
    • Хост недостижим (Host unreachable) — компьютер или следующий маршрутизатор выключен или не существует
    • Сеть недостижима (Network unreachable) — маршрутизатор не имеет маршрута в сеть назначения
  • если пакет не может быть доставлен по причине перегрузки маршрутизатора (или сети) — отбросить пакет без уведомлений

Маршрутизация других семейств протоколов (IPX, AppleTalk и т. п.), выполняется сходным образом, в соответствии с их спецификациями.

Динамическая маршрутизацияПравить

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

Из этих решений клиент-серверную модель использует только BGP (англ. Border Gateway Protocol — протокол пограничного шлюза), применяемый для глобальной маршрутизации. Локальные решения (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 (англ. Lightweight Directory Access Protocol — облегчённый протокол доступа к спискам).

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

Службы обмена сообщениямиПравить

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

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

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

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

Серверы удаленного доступаПравить

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

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

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

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

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

Серверы разделения ресурсовПравить

Некоторые серверы призваны разделить доступ к аппаратным устройствам, например сервер печати разделяет доступ к принтеру или другому печатающему устройству.

Игровые серверыПравить

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

Править