Что такое клиент и сервер. Характеристика технологии «клиент-сервер. Недостатки технологии «клиент-сервер»

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

Web-серверы

Изначально представляли доступ к гипертекстовым документам по протоколу HTTP (Huper Text Transfer Protocol). Сейчас поддерживают расширенные возможности, в частности работу с бинарными файлами (изображения, мультимедиа и т.п.).

Серверы приложений

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

Серверы баз данных

Серверы баз данных используются для обработки пользовательских запросов на языке SQL. При этом СУБД находится на сервере, к которому и подключаются клиентские приложения.

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

Файл-сервер хранит информацию в виде файлов и представляет пользователям доступ к ней. Как правило файл-сервер обеспечивает и определенный уровень защиты от несакционированного доступа.

Прокси-сервер

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

Во-вторых, сохраняет часто запрашиваемую информацию в кэш-памяти на локальном диске, быстро доставляя ее пользователям без повторного обращения к Интернету.

Файрволы (брандмауэры)

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

Почтовые серверы

Представляют услуги по отправке и получению электронных почтовых сообщений.

Серверы удаленного доступа (RAS)

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

Это лишь несколько типов из всего многообразия клиент-серверных технологий, используемых как в локальных, так и в глобальных сетях.

Для доступа к тем или иным сетевам сервисам используются клиенты, возможности которых характеризуются понятием «толщины». Оно определяет конфигурацию оборудования и программное обеспечение, имеющиеся у клиента. Рассмотрим возможные граничные значения:

«Тонкий» клиент

Этот термин определяет клиента, вычислительных ресурсов которого достаточно лишь для запуска необходимого сетевого приложения через web-интерфейс. Пользовательский интерфейс такого приложения формируется средствами статического HTML (выполнение JavaScript не предусматривается), вся прикладная логика выполняется на сервере.
Для работы тонкого клиента достаточно лишь обеспечить возможность запуска web-браузера, в окне которого и осуществляются все действия. По этой причине web-браузер часто называют "универсальным клиентом".

«Толстый» клиент

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

В последнее время все чаще используется еще один термин: «rich»-client. «Rich«-клиент своего рода компромисс между «толстым» и «тонким» клиентом. Как и «тонкий» клиент, «rich»-клиент также представляет графический интерфейс, описываемый уже средствами XML и включающий некоторую функциональность толстых клиентов (например интерфейс drag-and-drop, вкладки, множественные окна, выпадающие меню и т.п.)

Прикладная логика «rich»-клиента также реализована на сервере. Данные отправляются в стандартном формате обмена, на основе того же XML (протоколы SOAP, XML-RPC) и интерпретируются клиентом.

Некоторые основные протоколы «rich»-клиентов на базе XML приведены ниже:

  • XAML (eXtensible Application Markup Language) - разработан Microsoft, используется в приложениях на платформе.NET;
  • XUL (XML User Interface Language) - стандарт, разработанный в рамках проекта Mozilla, используется, например, в почтовом клиенте Mozilla Thunderbird или браузере Mozilla Firefox;
  • Flex - мультимедийная технология на основе XML, разработанная Macromedia/Adobe.

Заключение

Итак, основная идея архитектуры «клиент-сервер» состоит в разделении сетевого приложения на несколько компонентов , каждый из которых реализует специфический набор сервисов. Компоненты такого приложения могут выполняться на разных компьютерах, выполняя серверные и/или клиентские функции. Это позволяет повысить надежность, безопасность и производительность сетевых приложений и сети в целом.

Контрольные вопросы

1. В чем заключается основная идея К-С взаимодействия?

2. В чем отличия между понятиями «клиент-серверная архитектура» и «клиент-серверная технология»?

3. Перечислите компоненты К-С взаимодействия.

4. Какие задачи выполняет компонент представления в К-С архитектуре?

5. С какой целью средства доступа к БД представлены в виде отдельного компонента в К-С архитектуре?

6. Для чего бизнес-логика выделена как отдельный компонент в К-С архитектуре?

7. Перечислите модели клиент-серверного взаимодействия.

8. Опишите модель «файл-сервер».

9. Опишите модель «сервер БД».

10. Опишите модель «сервер приложений»

11. Опишите модель «сервер терминалов»

12. Перечислите основные типы серверов.

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

В дальнейших уроках я планирую рассказывать о создании информационных сетей с использованием:

  • контроллеров локальной сети Ethernet;
  • WiFi модемов;
  • GSM модемов;
  • Bluetooth модемов.

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

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

Технология клиент-сервер.

Клиент и сервер это программы, расположенное на разных компьютерах, в разных контроллерах и других подобных устройствах. Между собой они взаимодействуют через вычислительную сеть с помощью сетевых протоколов.

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

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

Итак, в общих чертах система клиент-сервер выглядит так:

  • Есть компьютеры, контроллеры Ардуино, планшеты, сотовые телефоны и другие интеллектуальные устройства.
  • Все они включены в общую вычислительную сеть. Проводную или беспроводную - не важно. Они могут быть подключены даже к разным сетям, связанным между собой через глобальную сеть, например через интернет.
  • На некоторых устройствах установлены программы-серверы. Эти устройства называются серверами, должны быть постоянно включены, и их задача обрабатывать запросы от клиентов.
  • На других устройствах работают программы-клиенты. Такие устройства называются клиентами, они инициируют запросы серверам. Их включают только в моменты, когда необходимо обратиться к серверам.

Например, если вы хотите с сотового телефона по WiFi включать утюг, то утюг будет сервером, а телефон – клиентом. Утюг должен быть постоянно включен в розетку, а управляющую программу на телефоне вы будете запускать по необходимости. Если к WiFi сети утюга подключить компьютер, то вы сможете управлять утюгом и с помощью компьютера. Это будет еще один клиент. WiFi микроволновая печь, добавленная в систему, будет сервером. И так систему можно расширять бесконечно.

Передача данных пакетами.

Технология клиент-сервер в общем случае предназначена для использования с объемными информационными сетями. От одного абонента до другого данные могут проходить сложный путь по разным физическим каналам и сетям. Путь доставки данных может меняться в зависимости от состояния отдельных элементов сети. Какие-то компоненты сети могут не работать в этот момент, тогда данные пойдут другим путем. Может изменяться время доставки. Данные могут даже пропасть, не дойти до адресата.

Поэтому простая передача данных в цикле, как мы передавали данные на компьютер в некоторых предыдущих уроках, в сложных сетях совершенно невозможна. Информация передается ограниченными порциями – пакетами. На передающей стороне информация разбивается на пакеты, а на приемной “склеивается” из пакетов в цельные данные. Объем пакетов обычно не больше нескольких килобайт.

Пакет это аналог обычного почтового письма. Он также, кроме информации, должен содержать адрес получателя и адрес отправителя.

Пакет состоит из заголовка и информационной части. Заголовок содержит адреса получателя и отправителя, а также служебную информацию, необходимую для “склейки” пакетов на приемной стороне. Сетевое оборудование использует заголовок для определения, куда передавать пакет.

Адресация пакетов.

На эту тему в интернете есть много подробной информации. Я хочу рассказать как можно ближе к практике.

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

  • IP-адрес устройства;
  • маску подсети;
  • доменное имя;
  • IP-адрес сетевого шлюза;
  • MAC-адрес;
  • порт.

Давайте разбираться, что это такое.

IP-адреса.

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

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

IP-адрес это 32х разрядное число или 4 байта. Для наглядности принято записывать его в виде 4 десятичных чисел от 0 до 255, разделенных точками. Например, IP-адрес моего сервера 31.31.196.216.

Для того чтобы сетевому оборудованию было проще выстраивать маршрут доставки пакетов в формат IP-адреса введена логическая адресация. IP-адрес разбит на 2 логических поля: номер сети и номер узла. Размеры этих полей зависят от значения первого (старшего) октета IP-адреса и разбиты на 5 групп – классов. Это так называемый метод классовой маршрутизации.

Класс Старший октет Формат

(С-сеть,
У-узел)

Начальный адрес Конечный адрес Количество сетей Количество узлов
A 0 С.У.У.У 0.0.0.0 127.255.255.255 128 16777216
B 10 С.С.У.У 128.0.0.0 191.255.255.255 16384 65534
C 110 С.С.С.У 192.0.0.0 223.255.255.255 2097152 254
D 1110 Групповой адрес 224.0.0.0 239.255.255.255 - 2 28
E 1111 Резерв 240.0.0.0 255.255.255.255 - 2 27

Класс A предназначен для применения в больших сетях. Класс B используется в сетях средних размеров. Класс C предназначен для сетей с небольшим числом узлов. Класс D используется для обращения к группам узлов, а адреса класса E зарезервированы.

Существуют ограничения на выбор IP-адресов. Я посчитал главными для нас следующие:

  • Адрес 127.0.0.1 называется loopback и используется для тестирования программ в пределах одного устройства. Данные посланы по этому адресу не передаются по сети, а возвращаются программе верхнего уровня, как принятые.
  • “Серые” адреса – это IP-адреса разрешенные только для устройств, работающих в локальных сетях без выхода в Интернет. Эти адреса никогда не обрабатываются маршрутизаторами. Их используют в локальных сетях.
    • Класс A: 10.0.0.0 – 10.255.255.255
    • Класс B: 172.16.0.0 – 172.31.255.255
    • Класс C: 192.168.0.0 – 192.168.255.255
  • Если поле номера сети содержит все 0, то это означает, что узел принадлежит той же самой сети, что и узел, который отправил пакет.

Маски подсетей.

При классовом методе маршрутизации число битов адресов сети и узла в IP-адресе задается типом класса. А классов всего 5, реально используется 3. Поэтому метод классовой маршрутизации в большинстве случаях не позволяет оптимально выбрать размер сети. Что приводит к неэкономному использованию пространства IP-адресов.

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

Сетевому узлу присваивается не только IP-адрес, но и маска подсети. Она имеет такой же размер, как и IP-адрес, 32 бит. Маска подсети и определяет, какая часть IP-адреса относится к сети, а какая к узлу.

Каждый бит маски подсети соответствует биту IP-адреса в том же разряде. Единица в бите маски говорит о том, что соответствующий бит IP-адреса принадлежит сетевому адресу, а бит маски со значением 0 определяет принадлежность бита IP-адреса к узлу.

При передаче пакета, узел с помощью маски выделяет из своего IP-адреса сетевую часть, сравнивает ее с адресом назначения, и если они совпадают, то это означает, что передающий и приемный узлы находятся в одной сети. Тогда пакет доставляется локально. В противном случае пакет передается через сетевой интерфейс в другую сеть. Подчеркиваю, что маска подсети не является частью пакета. Она влияет только на логику маршрутизации узла.

По сути, маска позволяет одну большую сеть разбить на несколько подсетей. Размер любой подсети (число IP-адресов) должен быть кратным степени числа 2. Т.е. 4, 8, 16 и т.д. Это условие определяется тем, что биты полей адресов сети и узлов должны идти подряд. Нельзя задать, например, 5 битов - адрес сети, затем 8 битов – адрес узла, а затем опять биты адресации сети.

Пример формы записи сети с четырьмя узлами выглядит так:

Сеть 31.34.196.32, маска 255.255.255.252

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

Сеть 31.34.196.32/30

/30 это число единиц в маске подсети. В данном примере остается два нуля, что соответствует 2 разрядам адреса узла или четырем узлам.

Размер сети (количество узлов) Длинная маска Короткая маска
4 255.255.255.252 /30
8 255.255.255.248 /29
16 255.255.255.240 /28
32 255.255.255.224 /27
64 255.255.255.192 /26
128 255.255.255.128 /25
256 255.255.255.0 /24
  • Последнее число первого адреса подсети должно делиться без остатка на размер сети.
  • Первый и последний адреса подсети – служебные, их использовать нельзя.

Доменное имя.

Человеку неудобно работать с IP-адресами. Это наборы чисел, а человек привык читать буквы, еще лучше связно написанные буквы, т.е. слова. Для того, чтобы людям было удобнее работать с сетями используется другая система идентификации сетевых устройств.

Любому IP-адресу может быть присвоен буквенный идентификатор, более понятный человеку. Идентификатор называется доменным именем или доменом.

Доменное имя это последовательность из двух или более слов, разделенных точками. Последнее слово это домен первого уровня, предпоследнее – домен второго уровня и т.д. Думаю, об этом знают все.

Связь между IP-адресами и доменными именами происходит через распределенную базу данных, с использованием DNS-серверов. DNS-сервер должен иметь каждый владелец домена второго уровня. DNS-серверы объединены в сложную иерархическую структуру и способны обмениваться между собой данными о соответствии IP-адресов и доменных имен.

Но это все не так важно. Для нас главное, что любой клиент или сервер может обратиться к DNS-серверу с DNS-запросом, т.е. с запросом о соответствии IP-адрес – доменное имя или наоборот доменное имя – IP-адрес. Если DNS-сервер обладает информацией о соответствии IP-адреса и домена, то он отвечает. Если не знает, то ищет информацию на других DNS-серверах и после этого сообщает клиенту.

Сетевые шлюзы.

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

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

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

В общем случае использование сетевого шлюза выглядит так:

  • Допустим у нас система из нескольких плат Ардуино, подключенных через локальную сеть Ethernet к маршрутизатору, который в свою очередь подключен к Интернету.
  • В локальной сети мы используем ”серые” IP-адреса (выше об этом написано), которые не допускают выхода в Интернет. У маршрутизатора два интерфейса: нашей локальной сети с “серым” IP-адресом и интерфейс для подключения к Интернету с ”белым” адресом.
  • В конфигурации узла мы указываем адрес шлюза, т.е. “белый” IP-адрес интерфейса маршрутизатора, подключенного к Интернету.
  • Теперь, если маршрутизатор получает от устройства с ”серым” адресом пакет с запросом на получение информации из Интернета, он заменяет в заголовке пакета ”серый” адрес на свой ”белый” и отправляет его в глобальную сеть. Получив из Интернета ответ, он заменяет ”белый” адрес на запомненный при запросе ”серый” и передает пакет локальному устройству.

MAC-адрес.

MAC-адрес это уникальный идентификатор устройств локальной сети. Как правило, он записывается на заводе-производителе оборудования в постоянную память устройства.

Адрес состоит из 6 байтов. Принято записывать его в шестнадцатеричной системе исчисления в следующих форматах: c4-0b-cb-8b-c3-3a или c4:0b:cb:8b:c3:3a. Первые три байта это уникальный идентификатор организации-производителя. Остальные байты называются ”Номер интерфейса” и их значение является уникальным для каждого конкретного устройства.

IP-адрес является логическим и устанавливается администратором. MAC-адрес – это физический, постоянный адрес. Именно он используется для адресации фреймов, например, в локальных сетях Ethernet. При передаче пакета по определенному IP-адресу компьютер определяет соответствующий MAC-адрес с помощью специальной ARP-таблицы. Если в таблице отсутствуют данные о MAC-адресе, то компьютер запрашивает его с помощью специального протокола. Если MAC-адрес определить не удается, то пакеты этому устройству посылаться не будут.

Порты.

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

Порт используется для определения процесса приемника пакета в пределах одного IP-адреса.

Под номер порта выделено 16 бит, что соответствует числам от 0 до 65535. Первые 1024 портов зарезервированы под стандартные процессы, такие как почта, веб-сайты и т.п. В своих приложениях их лучше не использовать.

Статические и динамические IP-адреса. Протокол DHCP.

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

Проблема решается применением динамических IP-адресов. Динамические адреса выдаются клиентам на ограниченное время, пока они непрерывно находятся в сети. Распределение динамических адресов происходит под управлением протокола DHCP.

DHCP – это сетевой протокол, позволяющий устройствам автоматически получать IP-адреса и другие параметры, необходимые для работы в сети.

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

Просмотр параметров сетевых устройств с помощь командной строки.

Существует много способов, как узнать IP-адрес или MAC-адрес своей сетевой карты. Самый простой – это использовать CMD команды операционной системы. Я покажу, как это делать на примере Windows 7.

В папке Windows\System32 находится файл cmd.exe. Это интерпретатор командной строки. С помощь него можно получать системную информацию и конфигурировать систему.

Открываем окно выполнить. Для этого выполняем меню Пуск -> Выполнить или нажимаем комбинацию клавиш Win + R .

Набираем cmd и нажимаем OK или Enter. Появляется окно интерпретатора команд.

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

Прежде всего, это команда ipconfig , которая отображает настройки сетевых плат.

Подробный вариант ipconfig/all .

Только MAC-адреса показывает команда getmac .

Таблицу соответствия IP и MAC адресов (ARP таблицу) показывает команда arp –a .

Проверить связь с сетевым устройством можно командой ping .

  • ping доменное имя
  • ping IP-адрес

Сервер моего сайта отвечает.

Основные сетевые протоколы.

Я коротко расскажу о протоколах, необходимых нам в дальнейших уроках.

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

Протокол IP.

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

IP протокол работает без установления соединений. Он просто пытается доставить пакет по указанному IP-адресу.

IP обрабатывает каждый пакет данных, как отдельную независимую единицу, не связанную с другими пакетами. Невозможно используя только IP протокол, передать значительный объем связанных данных. Например, в сетях Ethernet максимальный объем данных одного IP-пакета составляет всего 1500 байт.

В протоколе IP нет механизмов, позволяющих контролировать достоверность конечных данных. Контрольные коды используются только для защиты целостности данных заголовка. Т.е. IP не гарантирует, что данные в полученном пакете будут правильными.

Если во время доставки пакета произошла ошибка, и пакет был потерян, то IP не пытается заново послать пакет. Т.е. IP не гарантирует, что пакет будет доставлен.

Коротко о протоколе IP можно сказать, что:

  • он доставляет небольшие (не более 1500 байт) отдельные пакеты данных между IP-адресами;
  • он не гарантирует, что доставленные данные будут правильными;

Протокол TCP.

Transmission Control Protocol (протокол управления передачей) основной протокол передачи данных Интернета. Он использует способность IP протокола доставлять информацию от одного узла другому. Но в отличии от IP он:

  • Позволяет переносить большие объемы информации. Разделение данных на пакеты и “склеивание” данных на приемной стороне обеспечивает TCP.
  • Данные передаются с предварительной установкой соединения.
  • Производит контроль целостности данных.
  • В случае потери данных инициирует повторные запросы потерянных пакетов, устраняет дублирование при получении копий одного пакета.

По сути, протокол TCP снимает все проблемы доставки данных. Если есть возможность, он их доставит. Не случайно это основной протокол передачи данных в сетях. Часто используют терминологию TCP/IP сети.

Протокол UDP.

User Datagram Protokol (протокол пользовательских датаграмм) простой протокол для передачи данных без установления соединения. Данные отправляются в одном направлении без проверки готовности приемника и без подтверждения доставки. Объем данных пакета может достигать 64 кБайт, но на практике многие сети поддерживают размер данных только 1500 байт.

Главное достоинство этого протокола – простата и высокая скорость передачи. Часто применяется в приложениях критичных к скорости доставки данных, таких как видеопотоки. В подобных задачах предпочтительнее потерять несколько пакетов, чем ждать отставшие.

Протоколу UDP свойственно:

  • это протокол без установления соединений;
  • он доставляет небольшие отдельные пакеты данных между IP-адресами;
  • он не гарантирует, что данные вообще будут доставлены;
  • он не сообщит отправителю, были ли доставлены данные и не повторит передачу пакета;
  • нет упорядоченности пакетов, порядок доставки сообщений не определен.

Протокол HTTP.

Скорее всего, об этом протоколе в следующих уроках буду писать подробнее. А сейчас коротко скажу, что это протокол передачи гипертекста (Hyper Text Transfer Protocol). Он используется для получения информации с веб-сайтов. При этом веб-браузер выступает в роли клиента, а сетевое устройство в качестве веб-сервера.

В следующем уроке будем применять технологию клиент-сервер на практике, используя сеть Ethernet.

«Клиент-сервер» - это модель взаимодействия компьютеров в сети.

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

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

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

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

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

Обработка информации данных строится на использовании технологии баз и банков данных. В базе информация организована по определенным правилам и представляет собой интегрированную совокупность взаимосвязанных данных. Такая технология обеспечивает увеличение скорости их обработки при больших объемах. Обработка данных на внутримашинном уровне представляет собой процесс выполнения последовательности операций, задаваемых алгоритмом. Технология обработки прошла длинный путь развития.

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

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


Ограничение числа сложных абонентских систем в локальной сети приводит к появлению компьютеров в роли сервера и клиента. Реализация технологий «клиент-сервер» может иметь различия в эффективности и стоимости информационно-вычислительных процессов, а также в уровнях программного и технического обеспечения, в механизме связей компонентов, в оперативности доступа к информации, ее многообразии и т.д.

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

В классическом понимании СУБД представляет собой набор программ, позволяющих создавать и поддерживать базу данных в актуальном состоянии. Функционально СУБД состоит из трех частей: ядра (базы данных), языка и инструментальных средств программирования. Инструментальные средства программирования относятся к интерфейсу клиента, или внешнему интерфейсу. Они могут включать процессор обработки данных на языке запросов.

Язык — это совокупность процедурных и непроцедурных команд, поддерживаемых СУБД.

Наиболее употребительными языками являются SQL и QBE . Ядро выполняет все остальные функции, которые, включены в понятие «обработка базы данных».

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

Трафик сети — это поток сообщений сети. В технологии клиент-сервер программы клиента и его запросы хранятся отдельно от СУБД. Сервер обрабатывает запросы клиентов, выбирает необходимые данные из базы данных, посылает их клиентам по сети, производит обновление информации, обеспечивает целостность и сохранность данных.

Основные достоинства систем «клиент-сервер» состоят в следующем:

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

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

Гибкая настройка уровня прав пользователей (одним пользователям можно назначить только просмотр данных, другим просмотр и редактирование, третьи вообще не увидят каких-либо данных);

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

Однако системам «клиент-сервер» присущи также и недостатки:

Трудность администрирования, вследствие территориальной разобщенности и неоднородности компьютеров на рабочих местах;

Недостаточная степень защиты информации от несанкционированных действий;

Закрытый протокол для общения клиентов и сервера, специфичный для данной информационной системы.

Для устранения указанных недостатков используется архитектура систем Интранет, сконцентрировавших и объединивших в себе лучшие качества централизованных систем и традиционных систем «клиент-сервер».

3 Технология «Клиент – сервер»

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

Со временем малофункциональную модель файлового сервера для локальных сетей (FS) заменили появившиеся одна за одной модели структуры «Клиент- сервер» (RDA, DBS и AS).

Заняв нишу баз данных, технология «Клиент – сервер» стала основной технологией глобальной сети Internet. Далее, в результате перенесения идей сети Internet в среду корпоративных систем, появилась технология Intranet. В отличие от технологии «Клиент-сервер» эта технология ориентирована не на данные, а на информацию в ее окончательно готовом к потреблению виде. Вычислительные системы, построенные на основе Intranet, имеют в своем составе центральные серверы информации и распределенные компоненты представления информации конечному пользователю (программы-навигаторы, или браузеры). Взаимодействие между клиентом и сервером в Intranet происходит при помощи web – технологий.

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

3.1 Классическая двухуровневая архитектура «Клиент – сервер»

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

Технология «Клиент – сервер» - это архитектура программного комплекса, в которой происходит распределение прикладной программы по двум логически различным компонентам (клиент и сервер), взаимодействующим по схеме «запрос-ответ» и решающим свои определенные задачи (рисунок 6).

Рисунок 6 – Архитектура «Клиент – сервер»

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

Компьютер (или программа), запрашивающий и пользующийся каким-либо ресурсом, называют клиентом этого ресурса.

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

Основной принцип технологии «Клиент-сервер» заключается в разделении функций приложения как минимум на три группы:

- модули интерфейса с пользователем ;

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

- модули хранения данных ;

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

- модули обработки данных (функции управления ресурсами);

Эту группу также называют логикой доступа к данным или алгоритмами доступа к данным. Алгоритмы доступа к данным исторически рассматривались как специфический для конкретного приложения интерфейс к механизму постоянного хранения данных наподобие файловой системы или СУБД. При помощи модулей обработки данных организуется специфический для приложения интерфейс к СУБД. При помощи интерфейса приложение управляет соединениями с базой данных и запросами к ней (перевод специфических для конкретного приложения запросов на язык SQL, получение результатов и перевод этих результатов обратно в специфические для конкретного приложения структуры данных).

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

В соответствии с разделением функций в любом приложении выделяются следующие компоненты:

- компонент представления данных;

- прикладной компонент;

- компонент управления ресурсом.

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

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

Чтобы избежать несогласованности различных элементов архитектуры были созданы две модификации двухзвенной архитектуры «Клиент – сервер»: «Толстый клиент» («Тонкий сервер») и «Тонкий клиент» («Толстый сервер»).

В данных архитектурах разработчики попытались выполнять обработку данных на одной из двух физических частей - либо на стороне клиента («Толстый клиент»), либо на сервере («Тонкий клиент).

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

Есди все-таки разрабатывается двухуровневая классическая архитектура «Клиент – сервер», то необходимо помнить следующее:

- архитектура «Толстый сервер» аналогична архитектуре «Тонкий клиент» (рисунок 33) ;

Рисунок 33. – Архитектура «Тонкий клиент»

Передача запроса от клиента на сервер, обработка запроса сервером и передача результата клиенту. При этом архитектуры имеют следующие недостатки:

Усложняется реализация, так как языки типа SQL не приспособлены для разработки подобного ПО и нет хороших средств отладки;

Производительность программ, написанных на языках типа SQL, значительно ниже, чем созданных на других языках, что имеет важное значение для сложных систем;

Программы, написанные на СУБД-языках, обычно работают недостаточно надежно; ошибка в них может привести к выходу из строя всего сервера баз данных;

Получившиеся таким образом программы полностью непереносимы на другие системы и платформы.

- архитектура «Тонкий сервер» аналогична архитектуре «Толстый клиент» (рисунок 34).

Обработка запроса происходит на стороне клиента, то есть происходит передача клиенту всех необработанных данных с сервера. При этом архитектуры имеют следующие недостатки:

Усложняется обновление ПО, поскольку его замену нужно производить одновременно по всей системе;

Усложняется распределение полномочий, так как разграничение доступа происходит не по действиям, а по таблицам;

Перегружается сеть вследствие передачи по ней необработанных данных;

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

Рисунок 34. – Архитектура «Толстый клиент»

Для решения перечисленных проблем используются многоуровневые (три и более уровней) архитектуры «Клиент-сервер».

3.2 Трехуровневая модель

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

В трехуровневой архитектуре клиент обычно не перегружен функциями обработки данных, а выполняет свою основную роль системы представления информации, поступающей с сервера приложений. Такой интерфейс можно реализовать с помощью стандартных средств Web-технологии - браузера, CGI и Java. Это уменьшает объем данных, передаваемых между клиентом и сервером приложений, что позволяет подключать клиентские компьютеры даже по медленным линиям типа телефонных каналов. Кроме того, клиентская часть может быть настолько простой, что в большинстве случаев ее реализуют с помощью универсального браузера. Но если менять ее все-таки придется, то эту процедуру можно осуществить быстро и безболезненно.

Сервер приложений – это программное обеспечение, являющееся промежуточным слоем между клиентом и сервером (рисунок 35).

Рисунок 35 - Сервер приложений

Существует несколько категорий продуктов промежуточного слоя:

Message orientated – яркие представители MQseries и JMS;

Object Broker – яркие представители CORBA и DCOM;

Component based – яркие представители.NET и EJB.

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

Существует несколько серверов приложений от таких знаменитых компаний как Sun Microsystem, Borland, IBM, Oracle и каждый из них отличается набором предоставляемых сервисов (производительность в данном случае учитывать не будем). Эти сервисы облегчают программирование и развертывание приложений масштаба предприятия. Обычно сервер приложений предоставляет следующие сервисы:

WEB Server – чаще всего включают в поставку самый популярный и мощный Apache;

WEB Container – позволяет выполнять JSP и сервлеты. Для Apache таким сервисом является Tomcat;

Преимущества

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

Недостатки

  • Неработоспособность сервера может сделать неработоспособной всю вычислительную сеть.
  • Поддержка работы данной системы требует отдельного специалиста - системного администратора.
  • Высокая стоимость оборудования.

Многоуровневая архитектура клиент-сервер - разновидность архитектуры клиент-сервер, в которой функция обработки данных вынесена на один или несколько отдельных серверов. Это позволяет разделить функции хранения, обработки и представления данных для более эффективного использования возможностей серверов и клиентов.

Частные случаи многоуровневой архитектуры:

Сеть с выделенным сервером

Сеть с выделенным сервером (англ. Client/Server network ) - это локальная вычислительная сеть (LAN) , в которой сетевые устройства централизованы и управляются одним или несколькими серверами. Индивидуальные рабочие станции или клиенты (такие, как ПК) должны обращаться к ресурсам сети через сервер(ы).

Литература

Валерий Коржов Многоуровневые системы клиент-сервер . Издательство Открытые системы (17 июня 1997). Архивировано из первоисточника 26 августа 2011. Проверено 31 января 2010.


Wikimedia Foundation . 2010 .