![](/stc/img/evkova.png)
Модель клиент-сервер. Основы
Содержание:
Введение
В настоящее время модель «Клиент-сервер» очень популярна среди компаний, объединений и пр, т.к. она экономична, имеет свою защиту, к одной базе данных можно подключиться с разных компьютеров (при наличии доступа к базе и подключении к сети сервера), что в свою очередь удобно, как для маленьких компаний, так и для компаний «миллиоников».
Модель «Клиент-сервер» - это такая модель, при которой сервер является «поставщиком», а клиент «заказчиком».
Для того чтобы клиент мог использовать ресурсы сервера, он должен иметь приложение, для взаимодействия с ним, как это показано на рис. 1
Клиентское приложение
Клиентское
приложение
Клиентское приложение
Сервер базы данных
Рис.1
1.Сервер
В современном языке слово «сервер» обозначает одновременно два понятия: выделенный или приспособленный для тех или иных сетевых сервисных функций компьютер и специализированное программное обеспечение, которое принимает и обрабатывает задачи пользователей. Важной особенностью обоих вариантов является то, что и аппаратное устройство, и софт адаптированы для решения определенных сетевых запросов без прямого вмешательства человека. Это свойство отличает физический сервер от, например, рабочей станции, которая подразумевает присутствие оператора. Классифицируют серверы, как правило, по признаку решаемых ими задач (почтовые, терминальные, 1С, веб) и по внешнему исполнению устройства (tower – вертикальные, аппараты для серверных стоек – горизонтальные).[1]
Для того, чтобы понять, как работает сервер, достаточно воспользоваться примером из каждодневной практики пользователя Интернета. Итак, пользователь в строке поиска набирает то, что хочет найти. Текст этот принято называть запросом. После отправки запрос, с использованием сложной системы маршрутизации, попадает на сервер. Сервер обрабатывает запрос и отправляет пользователю решение. Такой пример допускает сильное упрощение. Существует множество серверов, решающих узкие задачи, но, в общем, работа системы примерно так и выглядит.
Сервер можно представить себе в виде обычного компьютера. Зачастую так и бывает. Персональный компьютер, на котором установлен специальное программное обеспечение, может работать сервером, обеспечивая функционирование небольшой локальной сети или отдельного сайта. Но из настольного компьютера не получится мощный сервер. Для работы сетей с большим количеством клиентов используются рабочие станции, оснащенные оборудованием большой вычислительной мощности и обеспеченные значительными возможностями для хранения информации. Для работы таких структур необходимы специальные помещения, запасные источники электроэнергии и обслуживать их может только высококвалифицированный персонал.
Обеспечивают работу серверов UNIX-подобные операционные системы, в том числе Linux, FreeBSD, IRIX. Не так часто, но используются серверные варианты операционных систем компаний Microsoft, Apple, Sun и других. UNIX-подобные операционные системы предпочтительнее из-за меньших требований к ресурсообеспечению и из-за высокой надежности. Оборудование производят компании с мировым именем. Среди них Intel, IBM, Hewlett-Packard, NEC.[2]
Если вы возьмете обычный компьютер, закачаете туда фильмов, откроете папку с фильмами на доступ по сети - то это уже и будет выделенный медиа сервер. То есть грубо говоря - сервер это компьютер (или программа), выполняющие одну или несколько функций для многих людей (ну для одного крайне редко), который служит для чего-либо.
Сервера бывают разных типов, вот некоторые из них:
Контроллер домена- для обеспечения безопасности и удобства обслуживания компьютерной сети, пользователь должен иметь логин и пароль для доступа на свой компьютер. Можно просто поставить его средствами операционной системы. Но тогда если пользователь забыл или потерял пароль, переехал на другой компьютер, уволился, устроился на работу - системному администратору придется выполнять много лишних действий. В случае с сервером достаточно произвести его настройку. То есть каждое действие выполняется проще и быстрее. Чаще всего Контроллер Домена совмещен с Сервером Данных.
Сервер данных (файлов) и личных папок - если пользователь хранит данные на своем компьютере - то в результате сбоя данные могут быть потеряны (сейчас делают малонадежное оборудование, не то что раньше). Чтобы этого не произошло, данные необходимо хранить в надежном месте. И дублировать. При наличии Контроллера Домена, компьютер пользователей может быть настроен так - чтобы данные, которые пользователь сохраняет к себе на компьютер попадали на сервер и хранились там. Таким образом придется меньше бояться за сохранность данных.
Сервер Приложений - 1С, Консультант+, Гарант - это самые простые программы, которые могут быть устновлены на сервере для обеспечения доступа большому числу сотрудников. [3]
Сервер Имен (DNS) - в сети каждому компьютеру присвоен ip адрес (айпи, айпишник). Между собой компьютеры общаются, обращаясь именно по нему. Для человеков такой вид обращения мало удобен. Например чтобы зайти на сайт ya.ru необходимо было бы набрать: 213.180.204.8 Удобного мало. Вот и придумали обращаться к компьютерам по имени. А сервер имен и есть та программа, которая помогает преобразовывать цифры в читаемые имена. В офисной сети сервер DNS чаще всего совмещен с Контроллером Домена.
Почтовый Сервер -электронная почта. Без нее невозможно представить офисную жизнь. Многим пользователям кажется, что электронная почта - это программа, которая стоит к них на компьютере. Но на самом деле - почтовая программа это только оболочка, а самая главная часть - и есть Почтовый Сервер. Это то место, откуда отправляется почта, куда она приходит. Почтовый сервер общается с другими почтовыми серверами на основе конфигурационных файлов, заданных пользователем. Самые известные почтовые серверы это: Sendmail, Postfix, IIS, Kerio. Почту можно принимать и без почтовой программы - через сайт. А сайты лежат на веб-сервере.
Веб Сервер - это, наверное, самый популярный вид сервера в мире, учитывая то что по статистике каждый день в мире создаются более 7млн. вебстраниц. Веб-сервер нужен чтобы хранить сайты и веб-приложения. Самый популярный веб-сервер - этоApache.
Шлюз - каждый офис имеет выход в интернет. Но кабель интернета, приходящий в здание - один. А пользователей может быть тысяча. Как сделать так чтобы раздать один интернет на тысячу пользователей?
Самые сообразительные скажут: нужен хаб или свитч. Но эти устройства лишь соединяют. А для интернета нам нужно задать каждому пользователю маршрут. Тут нам и поможет шлюз (маршрутизатор, роутер). Это может быть как аппаратная железка (CISCO, JUNIPER, D-LINK) а может быть и сервер с программами. Шлюз лучше делать отдельно от контроллера домена и файлов. А вот сервер имен можно разместить тут. Также как и прокси-сервер.
Прокси Сервер - (от англ. proxy — «представитель, уполномоченный»). Это сервер, который осуществляет запрос в Интернет вместо вас. Зачем это нужно? Анонимность,безопасность,экономия трафика,контроль за посещением сайтов сотрудниками,авторизация выхода в Интернет,блокировка баннеров,блокировка нежелательных сайтов и многое другое. Перечень возможностей такой программы велик.
Сервер Баз Данных - разные программы используют базы данных (MySQL, Oracle, Postgress, MSSQL) для своей работы. Это могут быть сайты, бухгалтерские и многие другие программы. Для большого количества данных ставится выделенный сервер баз данных.[4]
Терминальный Сервер- нужен для создания удаленной работы на сервере сотрудникам. Например - у вас много офисов и всем нужно работать с одной программой или вы не хотите чтобы кто-то знал где находится ваш сервер.Терминальный сервер может быть поставлен для Тонких Клиентов - компьютеров с ограниченными функциями и возможностью загружаться по сети с Терминального сервера.
Видеосервер - если установлена система видеонаблюдения, то один из вариантов ее использования - хранить записи на видеосервере. А просматривать их с помощью разных программ.[5]
Медиа Сервер- используется, в основном, в домашних сетях и домашних кинотеатрах. На нем хранятся видео, музыка, игры. Нужен чтобы много людей могли получать доступ к одному контенту (содержимому).
Термин «сервер» толкуют по-разному. Иногда его относят к оборудованию, а иногда — к ПО. В некотором смысле оба этих определения относятся к архитектуре, подготовленной к получению запросов извне и отвечающей на эти запросы путем выдачи информации заданного типа. Разумеется, в обоих случаях ядром системы является соответствующее ПО. Когда об оборудовании говорят как о сервере, обычно имеют в виду, что на нем работает одна или более серверных программ, что он может быть предназначен для той или иной роли и, возможно, состоит из компонентов, обеспечивающих высокую степень готовности. Вообще говоря, слово «сервер» имеет тот же корень, что и «сервис». Таким образом, с точки зрения аппаратных средств сервер — это компьютер, который способен оказывать некоторые услуги другим, подсоединенным к нему компьютерам. Подразумевается, что компьютеры каким-то образом связаны с сервером и друг с другом (рис. 1).[6]
Рис.1
2. Основы модели «Клиент-сервер
Модели клиент-сервер - это технология взаимодействия в информационной сети. Сервер обладает правом управления тем или иным ресурсом, а клиент – пользования им. Каждый конкретный сервер определяется видом того ресурса, которым он владеет. Например, назначением сервера баз данных является обслуживание запросов клиентов, связанных с обработкой данных; файловый сервер, или файл-сервер, распоряжается файловой системой.[7]
Этот принцип распространяется и на взаимодействие программ. Программа, выполняющая предоставление соответствующего набора услуг, рассматривается в качестве сервера, а программы, пользующиеся этими услугами, принято называть клиентами. Программы имеют распределенный характер, т.е. одна часть функций прикладной программы реализуется в программе-клиенте, а другая - в программе-сервере, а для их взаимодействия определяется некоторый протокол.
Рассмотрим эти функции. Один из основных принципов технологии клиент-сервер заключается в разделении функций стандартного интерактивного приложения на четыре группы, имеющие различную природу:
Функции ввода и отображения данных.
Прикладные функции, характерные для данной предметной области (для банковской системы - открытие счета, перевод денег и т.д.).
Функции хранения и управления информационно-вычислительными ресурсами (базами данных, файловыми системами и т.д.).
Служебные функции, осуществляющие связь между функциями первых трех групп.
В соответствии с этим в любом приложении выделяются следующие логические компоненты: компонент представления (presentation), реализующий функции первой группы; прикладной компонент (businessapplication), поддерживающий функции второй группы; компонент доступа к информационным ресурсам (resource manager), поддерживающий функции третьей группы, а также вводятся и уточняются соглашения о способах их взаимодействия (протокол взаимодействия).[8]
Клиент и сервер не играют симметричную роль. Процесс-сервер инициализируется и, затем, переходит в состояние ожидания запросов от возможных клиентов. Как правило, процесс-клиент запускается в интерактивном режиме и посылает запросы серверу. Сервер исполняет полученный запрос, причем это может подразумевать диалог с клиентом, а может и нет. Затем сервер вновь переходит в состояние ожидания других клиентов.
Различают два типа процессов-серверов:
- итеративные серверы: процесс-сервер сам обрабатывает ответ. Этот тип сервера используется в случае, если время обработки весьма непродолжительно или если сервер используется единственным клиентом.
- параллельные серверы: процесс-сервер вызывает для обработки вызова клиента другой процесс . Этот процесс создается системным вызовом fork (). Порождающий процесс не блокируется по окончании выполнения порожденного процесса и может, таким образом, ждать другие запросы.
С каждым сервером связан служебный (сервисный) адрес. Клиент посылает запросы по этому адресу. В зависимости от вида осуществляемой обработки данных, различают серверы без состояния (stateless) и серверы с состоянием (statefull). Сервер без состояния не сохраняет о своих клиентах никакой информации. Сервер с состоянием сохраняет информацию о состоянии своих клиентов после каждого запроса. В случае разрыва связи, повторный запуск проще у серверов без состояния, но иногда это может привести к случайным срабатываниям.
Модель клиент-сервер- это еще один подход к структурированию ОС. В широком смысле модель клиент-сервер предполагает наличие программного компонента - потребителя какого-либо сервиса - клиента, и программного компонента - поставщика этого сервиса - сервера. Взаимодействие между клиентом и сервером стандартизуется, так что сервер может обслуживать клиентов, реализованных различными способами и, может быть, разными производителями. При этом главным требованием является то, чтобы они запрашивали услуги сервера понятным ему способом. Инициатором обмена обычно является клиент, который посылает запрос на обслуживание серверу, находящемуся в состоянии ожидания запроса. Один и тот же программный компонент может быть клиентом по отношению к одному виду услуг, и сервером для другого вида услуг. Модель клиент-сервер является скорее удобным средством ясного представления функций того или иного программного элемента в той или иной ситуации, нежели технологией. Эта модель успешно применяется не только при построении ОС, но и на всех уровнях программного обеспечения, и имеет в некоторых случаях более узкий, специфический смысл, сохраняя, естественно, при этом все свои общие черты.[9]
В целях обеспечения эффективности и целостности работы, ОС реализуется двумя режимами работы: режим пользователя(usermode) ирежим ядра(kernelmode).
Применительно к структурированию ОС идея состоит в разбиении ее на несколько процессов - подсистем, каждая из которых выполняет отдельный набор сервисных функций - например, управление памятью, создание или планирование процессов. Каждая подсистема выполняется в пользовательском режиме. Клиент, которым может быть либо другой компонент ОС, либо прикладная программа, запрашивает сервис, посылая сообщение на сервер. Ядро ОС (называемое здесь микроядром), работая в привилегированном режиме, доставляет сообщение нужному серверу, сервер выполняет операцию, после чего ядро возвращает результаты клиенту с помощью другого сообщения.
Каждая система в модели клиент/сервер выполняет одну или более операций по сохранению данных, доступу к данным или их обработке. Системы клиент/сервер не могут быть построены с помощью компьютеров, которые используют терминал, или персональных компьютеров, работающих в режиме эмуляции терминала, соединенных с другими такими компьютерами. В подобной конфигурации терминалы или персональные компьютеры, работающие в режиме терминала, являются пассивными. Они только посылают и отображают наборы символов.[10]
Когда персональные компьютеры и серверы объединены, общая обработка должна быть разделена между сервером, мэйнфреймом или миникомпьютером и системой клиента. Объемы работы, выполняемые клиентом и сервером, определяются их возможностями. Их взаимодействие представляет собой форму групповой работы, которая позволяет достигать высокой эффективности и скорости во всех операциях. Система клиент/сервер подразумевает неравное деление нагрузки при обработке данных. Такое деление обуславливается тем, что возможности сервера и клиента в области обработки данных отличаются. Более быстрый и большой сервер передает данные быстрее, сохраняет большие объемы информации и обычно выполняет более операции, чем система клиента.[11]
Персональные компьютеры в системе клиент/сервер, используемые в качестве клиентов, имеют меньшую мощность. При этом они выполняют и пропорционально меньший объем работы. В основном они отвечают и выдают ему инструкции для манипуляций с данными, которые требуют больших ресурсов. Клавиатура персональных компьютеров и их монитор позволяют им работать как устройство ввода, генерирующее команды и данные, а также как выводное устройство, отображающее данные пользователю.[12]
MicrosoftSQLServer– это универсальный пример системы клиент-сервер.SQL Server 7.0 представляет собой существенно переработанную версию системы управления базами данных корпорацииMicrosoftи в отличие от своих предшественниц может быть установлена не только на платформе Windows NT, но теперь также и на Windows 95/98.[13]
СУБД SQL Server имеет в своем составе программное обеспечение для установки на серверные системы и клиентское программное обеспечение, которое устанавливается на персональные компьютеры клиентов. Графический интерфейс пользователяWindows, используемый некоторыми приложениями, позволяет создавать, поддерживать и получать доступ к базам данных и ко всем объектам баз данных со стороны клиента.
В системах клиент-сервер приложение, работающее на сервере (система управления базами данных) отвечает за создание и поддержку объектов баз данных в виде таблиц и индексов. Сервер поддерживает целостность ссылок и безопасность, а также обеспечивает возможность восстановления данных в случае широкого спектра отказов.
Приложения клиента выполняют всю работу по взаимодействию с пользователем, включая отображение информации и предоставление возможности работы с приложением через графический интерфейс пользователя. После того как из сервера выбраны строки данных, приложение может создавать их копии для локального хранения и последующего манипулирования с данными. Вы также можете контролировать тип доступа к информации, с которой они работают на сервере.
Если вы работаете с локальными копиями информации, работа может производиться без связи с сервером. После того как вы закончили свою работу, изменения посылаются обратно на сервер или (если вы использовали информацию только для просмотра) происходит простой отказ от работы с базой данных.[14]
Работая с программным обеспечением клиента, вы можете манипулировать данными прямо в базе данных SQL Server. Вы обязательно должны записывать все изменения на сервер. Это необходимо для того, чтобы другие пользователи могли получить доступ к самой последней информации в базе данных.
Вы также можете получить доступ к SQL Server прямо с клавиатуры сервера. Прямой доступ к серверу особенно удобен для администрирования. Но такие действия не являются операциями типа клиент/сервер, так как они осуществляются локально, а не по сети. Microsoft SQL Server поставляется с 32-разрядными версиями приложений Windows – инструментов работы с SQL Server через Windows, которые обычно используются на клиентских компьютерах.[15]
3. Технология "Клиент-сервер" применительно к Internet
С появлением глобальных сетей многоуровневая архитектура «Клиент – сервер» нашла свое применение в Internet. Другими словами, архитектура Internet не что иное, как архитектура «Клиент – сервер»: пользователь всегда работает с программой - клиентом (InternetExplorer или NetscapeNavigator), которая обращается к web-серверам, обслуживающим одновременно десятки и сотни запросов от клиентов по всему миру.
Компьютеры - серверы постоянно соединены с глобальной сетью и готовы предоставлять сервис (например, пересылать почту), отвечая при этом на десятки и сотни запросов одновременно. Web - серверы защищены от сбоев электропитания и работают обычно под одной из модификаций ОС UNIX.
Клиенты - персональные компьютеры, на которых установлены браузеры для поиска информации в сети Internet. Такой компьютер не соединен с глобальной сетью постоянно, а подключается по мере необходимости.
Помимо клиентов-браузеров бывают и другие клиенты, например, клиенты электронной почты (OutlookExpress, NetscapeMessenger, TheBat, PegasusMail, Pine, Eudora и другие.), клиенты для приема и передачи файлов (ftp-клиенты), telnet-клиенты, которые необходимы для интерактивной работы на удаленном узле (простейшийtelnet-клиент - программа telnet.exe) и многие другие.[16]
Программы-серверы также разнообразны: web – сервер, DNS – сервер, ftp-сервер (для передачи файлов), сервер приложений (для удаленной работы с приложениями), сервер электронной почты и другие.
Технология «Клиент – сервер» для Internet организована следующим образом (рис.6):
- клиент формирует и посылает запрос на сервер;
Передачу с сервера на рабочую станцию документов и других объектов по запросам, поступающим от браузера, обеспечивает функционирующая на сервере программа, называемая web-сервером. Когда web-браузеру необходимо получить документы или другие объекты от Web-сервера, он отправляет серверу соответствующий запрос. При достаточных правах доступа между сервером и навигатором устанавливается логическое соединение.
- сервер производит необходимые манипуляции с данными, формирует результат и передаёт его клиенту;
Сервер обрабатывает запрос, передает web-навигатору результаты обработки и разрывает установленное соединение. Таким образом, web-сервер выступает в качестве информационного концентратора, который доставляет информацию из разных источников, а потом в однородном виде предоставляет ее пользователю.
На сервере размещаются web-документы, которые визуализируются и интерпретируются программой навигации (например, web-браузер), функционирующей на рабочей станции.
- клиент получает результат, отображает его на устройстве вывода и ждет дальнейших действий пользователя. [17]
Логически web-документ представляет собой гипертекстовый документ, объединяющий ссылками различныеweb-страницы. Web-страница может быть связана с компьютерными программами и содержать ссылки на другие объекты. В web-страница помимо текста может содержать мультимедийный объект (рисунок, звук, видео), программу, которая при переходе на нее по ссылке, будет передана с сервера на рабочую станцию для интерпретации или запуска на выполнение навигатором или любой другой сервис – электронную почту, копирование файлов с другого компьютера сети, поиск информации и так далее.
Цикл повторяется, пока пользователь не закончит работу с сервером.
Рис.6
В сервисе WWW для передачи информации применяется протокол НТТР, при работе которого сервер не имеет никакой информации о состоянии браузера. При этом взаимодействовать с сервером возможно только через механизм URL, это создает некоторые трудности при реализации клиентской части. Схема передачи информации по протоколу НТТР состоит из следующих этапов (рис.7):
- браузер преобразует доменное имя из URL в IP-адрес и устанавливает соединение с сервером;
- браузер передает остальную часть URL на сервер;
- сервер определяет по URL путь и имя файла, при необходимости формирует его динамически;
- сервер пересылает файл браузеру;
- сервер разрывает соединение;
- браузер отображает документ.[18]
Существует множество технологий и языков программирования для написания серверных и клиентских Internet – приложений. В настоящее время большое распространение получила технология Java, с помощью которой можно строить универсальные системы со смешанной архитектурой, приложения, выполняемые на стороне клиента, называются апплетами (applets), на стороне сервера - сервлетами (servlets). Достаточно большой популярностью пользуется Flash-технология, в рамках которой можно создавать медиа-насыщенные интерактивные ресурсы, основная рабочая нагрузка при этом ложится на компьютер пользователя.
Рис. 7
С помощью CGI (CommonGatewayInterface) приложений возможно взаимодействие с любыми базами данных через формирование SQL запросов, или другие механизмы; также возможна реализация счетчиков посещений, гостевых книг и других расширений. CGI реализуется через скрипты на любом из языков программирования высокого уровня (наиболее часто используют С++, Perl, VisualBasic, Pascal, Java).
ServerSidesIncludes (SSI/SSI+) - технология динамического формирования документов (в том числе и работы с БД). Скрипт (точнее серверные инструкции) находится в HTML файле обычно имеющем расширение sht или shtm, при этом серверные инструкции размещаются между специальными разделителями (tokens), а сами инструкции записаны на языке Сscript, хотя это в большей степени зависит собственно от сервера. При пересылке такой файл сканируется сервером на наличие SSI инструкций и результат динамически подставляется в посылаемый документ. SSI реализуется через специальные компоненты (динамические библиотеки), которые входят в состав сервера. По аналогичному принципу организована работа со скриптами на языке PHP, в этом случае, программные конструкции включаются в HTML с помощью разделителей <? php и ?>.
Схожей по технике формирования динамических страниц является технология ActiveServerPages (ASP) от Microsoft. Данная технология опирается на использование разнообразных объектов и компонент (COM, ActiveX и тому подобное), работа с которыми ведётся средствами языков VBScript или JavaScript. [19]
Internet Server Application Programming Interface (ISAPI), реализуется через механизм DLL. C помощью ISAPI Internet connector возможно взаимодействие с базами данных (SQL Server, Oracle, RBase, Access, Paradox, dBASE) через драйверы Open Database Connectivity (ODBC), также возможна реализация других расширенных функций (создание различных фильтров запросов). Основным средством разработки приложений является Microsoft Visual C++ (The Internet Server API Extension Wizard). Данный механизм поддерживается Microsoft Internet Information Server (MS IIS). [20]
Также нашли свое применение JavaScript, VBScript, SGML, HTML, XML и другие языки, ориентированные на описание структур документов.
4. Технология «Клиент-сервер» применительно к Intranet
Для реализации всех достоинств глобальной сети в пределах сети организации, при этом обеспечивая секретность внутренней информации разработали Intranet.[21]
Intranet - частная компьютерная сеть, являющаяся внутренней web-системой, локализованной в пределах одной организации, в которой используются стандарты и протоколы Internet (сервисы Web, TCP/IP, http, протоколы связи и HTML – страницы). Другими словами, Intranet – это частная, защищенная внутрикорпоративная сеть, при построении которой используются технологии Internet, доступная только сотрудникам организации, причем независимо от их физического местонахождения, ведь для доступа в Intranet сети используется Internet как транспорт
Термин «Intranet» впервые появился 19 апреля 1995 году в журнале DigitalNews&Review.
Для преобразования локальной или региональной компьютерной сети в Intranet не потребуется распродавать старое оборудование, можно обойтись уже существующими ресурсами.
Архитектура Intranet основана на архитектуре «Клиент-сервер»
В качестве клиентских программ используются браузеры. При изменениях функциональности корпоративной информационной системы обновление клиентского ПО не требуется. Web-сервер выступает в качестве сервера приложений. Клиент и сервер взаимодействуют обычно по локальной сети, где есть выход в Internet через брандмауэр. Брандмауэром (firewall) – это компьютер с установленным на нем специальном программным обеспечением, позволяющим:
- идентифицировать любого входящего извне пользователя, чтобы запретить или разрешить ему доступ;
- аудит и протоколирование вхождений - запись, кто, когда и зачем входил во внутреннюю сеть;
- криптографию - шифрование секретной информации.
- экранирование - возможность односторонней передачи данных.
Рис. 8 – Простейшая схема Intranet с архитектурой «Клиент – сервер»
Наличие диалоговых свойств в HTML и интерфейса CGI позволяет строить Internet-приложения с доступом к БД. Наиболее распространена схема динамической публикации отчетов. При этом в качестве CGI-процедуры используется параметризуемый генератор отчетов. Однако это не единственная схема, возможно применять программы ввода и обновления информации в БД. [22]
Если используются традиционные статичные страницы гипертекста, то в ответ на запрос клиента Web-сервер передает страницу в формате HTML. При работе с базой данных клиент указывает в форме программу или сценарий для запуска на сервере. Серверная процедура получает введенные пользователем данные, формирует и передает SQL-запрос (определяющий логику управления данными) и, возможно, данные к СУБД. Сервер БД по запросу выполняет обновление, вставку, удаление или выборку записей из БД. CGI-процедура преобразует полученные результаты в формат HTML или в формат диалоговых переменных. Затем Web-сервер посылает полученную HTML-cтраницу или значения диалоговых переменных браузеру для отображения. [23]
Использование CGI-процедур имеет ряд недостатков – статичное представление информации, преобразование результата-отчета в HTML-файл, отсутствие динамического просмотра изменения информации в базе данных, процедура «не помнит состояний запросов» – каждое обращение к БД требует повторного установления соединения. Кроме того, такой принцип работы перегружает коммуникационную среду и имеет системные издержки при запуске серверных процессов.
Для устранения недостатков CGI используют возможности специальных API для Web-серверов и включают дополнительное «релейное» звено в архитектуру. Все это только подталкивает к дальнейшему совершенствования архитектуры «Клиент-сервер».
Intranet имеет пять основных функций:
- электронная почта;
- совместное использование файлов;
- каталогизация;
- кросс-платформенная совместимость;
- поиск и управление сетью. [24]
Эти функции позволяют организации публиковать, хранить, извлекать и управлять информацией, причем формируется единое информационное пространство, сотрудники могут находиться на различных этажах здания центрального офиса компании, в различных регионах и даже в разных странах.
Основные достоинства Intranet:
-универсальность;
Благодаря технологии Intranet поддерживается единый документооборот в организации, если различные ее подразделения используют отличные друг от друга средства доступа к информации.
-прозрачная интеграция;
Web, благодаря поддержке открытых стандартов, легко интегрируется в уже существующую гетерогенную среду, сохраняя затраты на аппаратное обеспечение.
-гибкость;
Web, как средство доступа к базам данных и приложениям, меняет традиционное отношение к архитектуре «Клиент – сервер». Используя браузер, как средство доступа к корпоративной сети, пользователь получает единый инструмент для работы с базами данных, приложениями и различными другими службами.
-ценовая эффективность;
По сравнению с традиционными методами разработки, дистрибуции и поддержки приложений «Клиент – сервер» затраты при использовании IntranetWeb-технологии достаточно низкие. Например, в Web-приложениях, работающих с базами данных, используя Web-браузер как единый интерфейс, существенно снижается стоимость разработки и сопровождения программного обеспечения клиентской части.
- безопасность;
Используя гибкие и мощные механизмы защиты можно построить Intranet-сеть той степени защищенности, которая необходима.
-высокая производительность.
Для достижения такого уровня производительности в сети используется один из основополагающих принципов построения Intranet - наращиваемость. [25]
Недостатки Intranet:
- легкий доступ к корпоративным данным может спровоцировать их утечку к конкурентам через недобросовестного работника;
- работоспособность и гибкость Интранет требуют значительных накладных расходов на разработку и администрирование;
- Intranet, как и любая сеть может быть взломана и использована в корыстных целях.
5. Защита архитектуры «Клиент-сервер»
Принято разделять классическую и многозвенную архитектуру клиент-сервер. В первом случае имеется выделенный сервер, который полностью обрабатывает запросы некоторого количества клиентов. Типичным примером такого сервера является сервер баз данных. Такой подход требует высоких аппаратных затрат для оборудования сервера. Должна также обеспечиваться бесперебойная работа самого сервера, что требует очень серьезного подхода к его администрированию и разработке ПО для него. Во втором случае существует несколько серверов, которые дифференцируются по своим функциям, причем каждый из них может выступать как сервером, так и клиентом. Обычно эти промежуточные серверы называются серверами приложений, так как с ними взаимодействует прикладное ПО. Эти серверы обслуживают ограниченное количество различных запросов, которые определяются необходимостью работы конкретных приложений. В сложной системе серверы приложений маршрутизируют свои запросы к разным главным серверам, оптимально распределяя их загрузку. Одним из примеров многозвенной архитектуры может служить Web-сервер, который используется для доступа клиентов к базе данных с помощью Web-браузера.[26]
Список наиболее очевидных угроз в архитектуре клиент-сервер выглядит следующим образом:
1) пассивный перехват передаваемых запросов;
2) модификация (активный перехват) передаваемых запросов;
3) пассивный перехват ответов клиенту;
4) модификация ответов клиенту;
5) выдача злоумышленником себя за определенный сервер;
6) выдача злоумышленником себя за определенного клиента;
7) перегрузка сервера выдачей большого числа случайных запросов, что может привести к отказу обслуживания новых клиентов;
8) случайные сбои и ошибки функционирования аппаратуры и программных элементов сервера;
9) злоумышленные действия зарегистрированных клиентов;
10) другие виды атак на ПО сервера.[27]
Защите подлежат все составляющие данной архитектуры:
а) клиент - его аппаратная платформа, базы данных и программное обеспечение (в том числе и операционные системы);
б) сервер - его аппаратная платформа, средства администрирования, управления передачей данных и другое программное обеспечение;
в) оборудование и обеспечение линий связи, соединяющее клиентов и серверы.
Защита в двух указанных типах архитектур клиент-сервер различается. В первом случае основные средства безопасности должны помещаться на сервере, обладать повышенной отказоустойчивостью и иметь возможность обслуживать большое количество клиентов. На клиентском месте средства безопасности, в основном, не должны допускать проникновение защищаемой информации во внешний мир, а также обеспечивать проверку подлинности сервера. В многозвенной архитектуре средства безопасности должны быть размещены на серверах приложений, а в случае необходимости - на главных серверах (если каналы связи между различными серверами проходят по физически незащищенной зоне). Часто бывает удобно создавать отдельно выделенный сервер безопасности как специальный тип сервера приложений.
В распределенных вычислительных средах, в отличие от централизованных, решение проблемы безопасности усложняется, что обусловлено рядом факторов.
Распределенная система имеет несколько точек входа, через которые осуществляется доступ к данным. Это могут быть файл-серверы, рабочие станции и серверы БД. Чем больше в системе таких входов, тем острее проблема безопасности. Открытая архитектура систем клиент-сервер предполагает, что пользователи имеют возможность делать с БД все, что угодно, т.е. не только читать данные, но и модифицировать ее структуру, дописывая новые таблицы, хранимые процедуры и пр.[28]
Уровень защиты всей системы определяется степенью защиты ее самого уязвимого звена, которым, как правило, являются включенные в сеть персональные компьютеры. Многие производители СУБД, стараясь облегчить жизнь конечных пользователей, перекладывают функции контроля доступа к данным на ОС.
Распределенная система нередко состоит из нескольких баз данных, расположенных на разных серверах. БД каждого сервера, являясь составной частью одной общей БД, в то же время функционирует самостоятельно и должна иметь свой собственный механизм безопасности.
Бывает, что данные из одной таблицы хранятся на разных физических устройствах. Маршрут доступа к данным программируется посредством задания связей между хранимой по фрагментам информации: указываются реквизиты пользователя (регистрационное имя и пароль), тип сетевого протокола и имя БД. К сожалению, все эти параметры приходится описывать в тексте сценариев. Чтобы засекретить указанную информацию, пароли можно хранить в словаре данных в зашифрованном виде.
Наличие нескольких внутренних БД в распределенной системе, с одной стороны, усложняет проблему безопасности, а с другой - упрощает ее. Поскольку любая БД администрируется автономно, для каждой из них можно реализовать свой собственный способ защиты. Кроме того, в такой архитектуре легко изолировать и обслуживать конфиденциальную информацию. Когда хакер взламывает защиту БД, он получает доступ к содержимому только одной БД, а не ко всей системе в целом.
Для планирования общей системы защиты в распределенной среде полезно наметить уровни обороны. Чтобы добраться до данных, например, с помощью штатных программ администрирования, пользователю необходимо сначала попасть в компьютер (уровень защиты рабочей станции), потом в сеть (сетевой уровень защиты), а уж затем на сервер БД. При этом оперировать конкретными данными пользователь сможет лишь при наличии соответствующих прав доступа (уровень защиты СУБД). Для работы с БД через клиентское приложение придется преодолеть еще один барьер - уровень защиты приложения.[29]
Система защиты должна предоставлять разные уровни доступа к данным: от самого простого (и распространенного), когда всем уполномоченным пользователям предоставляется возможность чтения всех таблиц БД с неконфиденциальной информацией, до наиболее сложного, при котором доступ к данным организован на уровне отдельных строк или столбцов таблиц. Между двух полюсов лежат промежуточные уровни: выборочное чтение и выборочная модификация. В первом случае пользователи могут только просматривать, а во втором - просматривать и редактировать записи из ограниченного списка таблиц, который заранее определяется администратором системы.
Более четко принципы создания защищенных средств связи объектов в распределенных системах могут быть сформулированы следующим образом:
1. Взаимодействие между объектами должно осуществляться по физически выделенному каналу.
2. Нужно заранее предусмотреть ситуацию, когда все сообщения, передаваемые по каналу связи, могут быть перехвачены. Это не должно нарушить безопасность системы в целом, либо отрицательные последствия должны быть минимальными.
3. Взаимодействие объектов должно быть организовано по виртуальному каналу связи.
4. Для создания виртуального канала рекомендуется использование криптоалгоритмов с открытым ключом (цифровая подпись сообщений и их шифрование).
5. На сетевом уровне должен быть обеспечен контроль за маршрутом сообщений для аутентификации адреса отправителя.
6. Для обеспечения доступности всех сетевых ресурсов должен осуществляться контроль за виртуальными соединениями - как при их создании, так и при использовании.
7. Полезно руководствоваться принципом, согласно которому наиболее безопасна та система, в которой информация об объектах изначально полностью определена, и в которой не используются алгоритмы удаленного поиска.
8. Использование алгоритмов удаленного поиска лучше всего организовать на выделенном сервере, взаимодействие с которым осуществляется только по виртуальному (а не широко-вещательному) каналу с применением надежных алгоритмов защиты соединения при обязательном использовании статической ключевой информации.[30]
Рассмотрим средства обеспечения безопасности, имеющиеся в арсенале администратора системы клиент-сервер.
Во-первых, это разнообразные коммерческие продукты третьих фирм. Например, аппаратно-программный комплекс PacketShaper для назначения приоритетов доступа (группам, пользователям) к ресурсам Internet. Для трафика выделяются участки полосы пропускания (10 Мбит/с шириной) по приоритетам, определяемым по IP-адресу или типу используемого приложения. Аппаратная часть комплекса имеет два порта Ethernet и устанавливается между концентратором и маршрутизатором. Программная часть управляет пропускной способностью TCP-соединения по заголовкам пакетов без прерывания сеанса связи; а также контролирует уровни сервиса с возможностью регулировать скорость соединения и предотвращать перегрузку сети. Управление этим комплексом осуществляется через обычный браузер - Netscape Navigator или Microsoft Internet Explorer.
Вторым примером может служить FloodGate. Это средство динамически управляет пропускной способностью сети на основе весовых коэффициентов и регулирует трафик, направляемый группам и отдельным пользователям в зависимости от использования и активности подключений и их приоритетов.
Во-вторых, это встроенные возможности СУБД, которые администратор может и должен использовать в целях защиты информации. Их ценность в том, что контроль доступа происходит постоянно, а не только в момент загрузки приложения. Контроль доступа к БД может быть полностью реализован на сервере. Клиентское приложение просто считывает пароль пользователя и отсылает его на сервер. Далее СУБД по своим внутренним таблицам пользователей проверяет, имеет ли право данный пользователь работать в БД. В случае положительного ответа формируется соединение с рабочей станцией, в противном случае выдается предупреждение, и связь с сервером не устанавливается.[31]
В крупных информационных системах число таблиц может достигать нескольких сотен, и задавать права доступа по всем таблицам для каждого пользователя утомительно. Этот процесс упрощается за счет функций предоставления прав доступа группам пользователей с последующей корректировкой индивидуальных прав. Принадлежность пользователя к конкретной группе определяется типом выполняемых им функций, или ролей, в системе (например, группа разработчиков, менеджеров, операторов, участников тестирования). К сожалению, во многих СУБД минимальным элементом данных, для которого возможен контроль доступа, является таблица. На практике же часто требуется контролировать доступ по отдельным записям или полям. В этом случае проблему приходится решать либо на уровне приложения, например, с помощью табличных фильтров, либо за счет модификации структуры БД путем денормализации таблиц, либо комбинируя оба способа.
Применение средств защиты на уровне приложения - наиболее сложный и дорогой вариант, так как реализовать его может только сам разработчик приложения. Этот метод предоставляет более строгий контроль доступа к данным, поскольку позволяет заложить в систему алгоритмы всевозможных проверок, отличные от стандартных, хорошо известных хакерам.
Некоторые разработчики коммерческих приложений вместе с основными продуктами поставляют собственные программы администрирования своих же приложений. При этом администратору системы не нужны внешние программы администрирования, так как вся необходимая информация (списки пользователей, их пароли и права доступа) контролируется упомянутыми утилитами.
Чтобы обеспечить контроль целостности структуры БД, прикладная система, или утилита, администрирования может проверить текущее состояние БД и сравнить его с эталоном (аналогом контрольной суммы), характеристика которого жестко "зашита" в код приложения. При обнаружении несовпадения в аудиторском журнале будет сделана соответствующая запись, или приложение само перестанет работать. Например, легко подменить стандартную процедуру одноименной новой, которая будет делать то же, что и старая, плюс дополнительные функции, полезные хакеру.[32]
Особую роль играют аудиторские журналы, но не те, которые ведутся самой СУБД, а собственные журналы приложения, где фиксируются ошибки и сообщения прикладной системы, а также информация обо всех действиях пользователей. Анализ этих журналов позволяет произвести статистический учет ошибок, установить, какие функции системы пользуются наибольшей популярностью, составить профиль активности пользователей (с какими данными они работают, сколько времени на это тратят и т.д.).
Наконец, на прикладном уровне можно реализовать традиционные защитные мероприятия, касающиеся процедуры регистрации пользователей, работы экранных заставок и блокираторов клавиатуры.[33]
Мониторы безопасности - это программы управления безопасностью в распределенных системах, использующие глобальные таблицы безопасности, в которых хранятся пользовательские пароли для доступа ко всем узлам системы. Если пользователь правильно вводит первый пароль, от ввода остальных он освобождается. Всю работу за него выполняет монитор, который следит за тем, к какой подсистеме обращается пользователь, выбирает нужный пароль из таблицы и передает его на вход соответствующей подсистемы. В сложных сетевых средах для реализации процедур однократной регистрации применяются также доверительные отношения между серверами разных доменов.[34]
Самый простой и распространенный способ - это централизованный контроль средств безопасности. Суть его заключается в том, что для всех элементов распределенной системы используется единый пароль, который после ввода или замены тиражируется по всем узлам системы. Недостаток этой схемы заключается в следующем: при зависании процессора, на котором работает процедура тиражирования, блокируется работа всей системы. Кроме того, если кто-то сумеет перехватить (расшифровать, угадать) пароль на одном узле, то получит свободный доступ к системе в целом.
Другой, более надежный, но и более сложный в реализации способ заключается в том, что глобальные таблицы безопасности доступны всем подчиненным системам. В результате можно отказаться от унификации паролей на всех подсистемах и контролировать доступ ко всем ресурсам из любого узла. При таком подходе администратор только раз настраивает пароли пользователей для всех уровней (сетевого, операционной системы и сервера БД). Эти первичные пароли запоминаются в глобальной таблице безопасности и затем используются монитором безопасности, сопровождающим пользователя в его перемещении по узлам распределенной среды. В дальнейшем пароли каждого уровня не требуется менять вручную, поскольку они автоматически генерируются имеющимися на более низких уровнях подсистемами защиты.[35]
Таким образом, на всех узлах системы действуют уникальные пароли, которые сгенерированы машинным способом и с трудом поддаются подбору. Несмотря на то, что на практике машинные пароли никто не вводит вручную, системы защиты каждого уровня все же могут администрироваться индивидуально, а не только из центрального пункта. Недостаток описанной схемы заключается в том, что сбой централизованной системы защиты, работающей на выделенном процессоре, блокирует доступ всех пользователей к системе в целом. Для борьбы с этой проблемой приходится прибегать к "горячему" резервированию, т.е. хранить копии таблиц безопасности на резервной машине. В этом случае отказ одного процессора будет активизировать работу другого.
Заключение
Архитектура «Клиент-сервер» хорошо подходит для сетей в которые входит много компьютеров. Она отлично подходит для компаний, так как обладает всеми нужными качествами, в том числе безопасность, надежность, экономичность и пр.
Архитектура «Клинт-сервер» с легкостью адаптируется под любые нужды, ее легко обновлять, ею удобно пользоваться даже при 100 и более подключенных к серверу пользователям.
Архитектура «Клиент-сервер» не уступает другим архитектурам, и если выбирать для сети в которую входит более 20 компьютеров, то следует выбрать именно ее.
Список используемой литературы:
- Руководство системного администратора для профессионалов, Бруксбэнк Э., Хабербергер Дж., изд. «Питер», 2001.
- Сеть для офиса и Linux-сервер своими руками, Стахнов А. А., изд. «БХВ-Петербург», 2006.
- Локальные сети: архитектура, алгоритмы, проектирование, Новиков Ю.В., Кондратенко С.В., Эд Уилсон, изд. «Эком», 2000.
- Информационная безопасность, В. Шаньгин, изд. «ДМК ПРЕСС», 2014 г.
- Базы данных. Язык SQL для студента, В. Дунаев, изд. «БХВ-Петербург», 2006.
- Локальные сети. Модернизация и поиск неисправностей, А. Поляк-Брагинский, изд. «БХВ-Петербург», 2012.
- Администрирование структурированных кабельных систем, А. Семенов, изд. «Компания АйТи», 2014.
- Базы данных. Курс лекций, Р. Латыпова, изд. «Проспект», 2015.
- Информационные системы, С. Жданов, М. Соболева, изд. «Прометей», 2015 г.
- Сети интранет. Внутреннее движение, Д. Саймино, изд. «Book Media Publisher», 1997.
- Аудит безопасности Intranet, С. Петренко, 2002 г.
- Информационная безопасность, В.Мельников, изд. «Academia», 2013 г.
- Информационная безопасность и защита информации, В. Шаньгин, изд. «ДМК Пресс», 2014 г.
-
Руководство системного администратора для профессионалов, Бруксбэнк Э., Хабербергер Дж., изд. «Питер», 2001 ↑
-
Сеть для офиса и Linux-сервер своими руками, Стахнов А. А., изд. «БХВ-Петербург», 2006. ↑
-
Сеть для офиса и Linux-сервер своими руками, Стахнов А. А., изд. «БХВ-Петербург», 2006. ↑
-
Сеть для офиса и Linux-сервер своими руками, Стахнов А. А., изд. «БХВ-Петербург», 2006. ↑
-
Сеть для офиса и Linux-сервер своими руками, Стахнов А. А., изд. «БХВ-Петербург», 2006. ↑
-
Руководство системного администратора для профессионалов, Бруксбэнк Э., Хабербергер Дж., изд. «Питер», 2001 ↑
-
Руководство системного администратора для профессионалов, Бруксбэнк Э., Хабербергер Дж., изд. «Питер», 2001 ↑
-
Локальные сети: архитектура, алгоритмы, проектирование, Новиков Ю.В., Кондратенко С.В., Эд Уилсон, изд. «Эком», 2000. ↑
-
Информационная безопасность, В. Шаньгин, изд. «ДМК ПРЕСС», 2014 г.
-
Информационная безопасность, В. Шаньгин, изд. «ДМК ПРЕСС», 2014 г. ↑
-
Базы данных. Язык SQL для студента, В. Дунаев, изд. «БХВ-Петербург», 2006
-
Локальные сети. Модернизация и поиск неисправностей, А. Поляк-Брагинский, изд. «БХВ-Петербург», 2012
-
Администрирование структурированных кабельных систем, А. Семенов, изд. «Компания АйТи», 2014.
-
Администрирование структурированных кабельных систем, А. Семенов, изд. «Компания АйТи», 2014. ↑
-
Локальные сети. Модернизация и поиск неисправностей, А. Поляк-Брагинский, изд. «BHV», 2009. ↑
-
Базы данных. Курс лекций, Р. Латыпова, изд. «Проспект», 2015.
-
Базы данных. Курс лекций, Р. Латыпова, изд. «Проспект», 2015. ↑
-
Информационные системы, С. Жданов, М. Соболева, изд. «Прометей», 2015 г.
-
Информационные системы, С. Жданов, М. Соболева, изд. «Прометей», 2015 г. ↑
-
Информационные системы, С. Жданов, М. Соболева, изд. «Прометей», 2015 г.
-
Сети интранет. Внутреннее движение, Д. Саймино, изд. «Book Media Publisher», 1997.
-
Аудит безопасности Intranet, С. Петренко, 2002 г.
-
Аудит безопасности Intranet, С. Петренко, 2002 г. ↑
-
Сети интранет. Внутреннее движение, Д. Саймино, изд. «Book Media Publisher», 1997. ↑
-
Сети интранет. Внутреннее движение, Д. Саймино, изд. «Book Media Publisher», 1997. ↑
-
Информационная безопасность, В.Мельников, изд. «Academia», 2013 г.
-
Информационная безопасность и защита информации, В. Шаньгин, изд. «ДМК Пресс», 2014 г.
-
Информационная безопасность и защита информации, В. Шаньгин, изд. «ДМК Пресс», 2014 г. ↑
-
Информационная безопасность и защита информации, В. Шаньгин, изд. «ДМК Пресс», 2014 г. ↑
-
Информационная безопасность, В.Мельников, изд. «Academia», 2013 г. ↑
-
Информационная безопасность, В.Мельников, изд. «Academia», 2013 г. ↑
-
Информационная безопасность, В.Мельников, изд. «Academia», 2013 г. ↑
-
Информационная безопасность, В.Мельников, изд. «Academia», 2013 г. ↑
-
Информационная безопасность и защита информации, В. Шаньгин, изд. «ДМК Пресс», 2014 г. ↑
-
Информационная безопасность и защита информации, В. Шаньгин, изд. «ДМК Пресс», 2014 г. ↑
- Модель клиент-сервер (Основы модели «Клиент-сервер»)
- История развития средств вычислительной техники (Начало современной истории электронной вычислительной техники)
- Анализ внешней и внутренней среды организации (Анализ внешней и внутренней среды ООО «ЦСС»)
- Технология обслуживания клиентов в ресторане (Характеристика составляющих понятия «культура обслуживания»)
- Роль мотивации в поведении организации (Теоретические подходы к управлению мотивацией труда)
- Особенности гостиничного обслуживания в мотелях
- Конкурентные стратегии фирм на внутреннем и/или мировом рынках (Лидерство за счет экономии на издержках)
- Документирование и инвентаризация
- Сетевые операционные системы (Определение операционной системы)
- Виды и состав угроз информационной безопасности (Определение информационной безопасности)
- Анализ методов кодирования данных (Основные определения)
- Проектирование реализации операций бизнес-процесса «Предоставление рекламных услуг