Введение в сети клиент-сервер
Серверы и клиенты являются строительными блоками компьютерных сетей
Сеть клиент-сервер стала популярной много лет назад, поскольку персональные компьютеры стали альтернативой старым мейнфреймам компьютерам. Сеть клиент-сервер относится к компьютерной модели сети, в которой используются как клиентские аппаратные устройства, так и серверы, каждый из которых имеет определенные функции. Модель клиент-сервер может использоваться в Интернете, а также в локальных сетях (ЛВС). Примеры клиент-серверных систем в Интернете включают веб-браузеры и веб-серверы, FTP-клиенты и серверы, а также DNS.
Клиентское и серверное оборудование
Клиентские устройства – это обычно ПК с установленными сетевыми приложениями, которые запрашивают и получают информацию по сети. Кроме того, мобильные устройства функционируют как клиенты.
Серверы хранят файлы и базы данных, в том числе сложные приложения и веб-сайты. Серверы обычно имеют более мощные центральные процессоры, больше памяти и дисков больше, чем клиентские устройства.
Клиент-серверные приложения
Модель клиент-сервер организует сетевой трафик с использованием клиентского приложения и клиентских устройств. Сетевые клиенты отправляют сообщения на сервер для выполнения запросов. Серверы отвечают своим клиентам, реагируя на каждый запрос и возвращая результаты. Один сервер поддерживает множество клиентов, и несколько серверов могут быть объединены в сеть в пуле серверов для обработки возросших нагрузок по мере роста числа клиентов.
Клиентский компьютер и серверный компьютер, как правило, представляют собой два отдельных аппаратных блока, каждый из которых настроен для своего предназначения. Например, веб-клиент лучше всего работает с большим экраном, а веб-сервер вообще не нуждается в отображении и может быть расположен в любой точке мира. Однако в некоторых случаях данное устройство может функционировать как клиент и сервер для одного и того же приложения. Кроме того, устройство, которое является сервером для одного приложения, может одновременно действовать как клиент для других серверов для различных приложений.
Некоторые из самых популярных приложений в Интернете следуют модели клиент-сервер, включая электронную почту, FTP и веб-сервисы. Каждый из этих клиентов имеет пользовательский интерфейс – графический или текстовый – и клиентское приложение, которое позволяет пользователю подключаться к серверам. В случае электронной почты и FTP пользователи вводят имя компьютера (или иногда IP-адрес) в интерфейс для настройки соединений с сервером.
Локальные клиент-серверные сети
Клиент-сервер против одноранговых и других моделей
Модель сети клиент-сервер изначально была разработана для обеспечения доступа к приложениям баз данных для большого числа пользователей. По сравнению с моделью мэйнфрейма, клиент-серверная сеть обладает большей гибкостью, поскольку соединения могут быть установлены по требованию, а не фиксированы. Модель клиент-сервер также поддерживает модульные приложения, которые могут упростить создание программного обеспечения. В так называемых типах клиент-серверных систем двухуровневая и трехуровневая программные приложения разделены на модульные компоненты, и каждый компонент устанавливается на клиентах или серверах. специализированный для этой подсистемы.
Сеть клиент-сервер – это всего лишь один из подходов к управлению сетевыми приложениями. Первичная альтернатива клиент-серверной сети, одноранговая сеть, рассматривает все устройства как имеющие эквивалентные возможности, а не специализированные роли клиента или сервера. По сравнению с клиент-серверными сетями одноранговые сети предлагают некоторые преимущества, такие как большая гибкость в расширении сети для обслуживания большого количества клиентов. Клиент-серверные сети обычно предлагают преимущества по сравнению с одноранговыми сетями, например, возможность управлять приложениями и данными в одном централизованном месте.
IT-блог о веб-технологиях, серверах, протоколах, базах данных, СУБД, SQL, компьютерных сетях, языках программирования и создание сайтов.
Что такое клиент? Клиентский компьютер и клиентское приложение
Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем рубрику Сервера и протоколы. Также я решил, что на моем блоге просто необходима рубрика Вопрос-ответ, в которой будет два раздела: «Что такое?» и «Как сделать?». Большинство публикаций на моем блоге довольно большие и подробные, но в этих разделах я буду стараться ответить на один простой вопрос коротко, понятно и с примерами. Грубо говоря, каждая запись — это ответ на вопрос, который задает новичок в сфере web.
Что такое клиент? Клиентский компьютер и клиентское приложение
В этой записи мы разберемся со значением термина клиент и поговорим о том, что такое клиентский компьютер и клиентское приложение. Надеюсь, что данная рубрика окажется действительно полезной и нужной для новичков.
Общее определение термина клиент
Мой блог имеет достаточно узкую тематику, но давайте сперва разберемся с термином клиент и посмотрим, что это слово означает. Как не банально, но клиент – это заказчик той или иной услуги или покупатель. Неважно где и что вы покупаете, например, вы покупаете доменное имя и становитесь клиентом регистратора или вы покупаете хостинг, тогда вы становитесь клиентом хостинг-провайдера. Покупая хлеб в магазине, вы становитесь клиентом магазина.
Вообще, термин клиент пришел к нам из Древнего Рима, в исконном значении слова клиент – это свободный гражданин Римской Империи, который находится в зависимости от патрона (знатного гражданина), но в то же время клиент пользуется покровительством и защитой патрона.
Если говорить про информатику, то клиент – это программное средство или физическое устройство, которое посылает запросы серверу (поставщику услуг)
Клиентский компьютер
В принципе, для описания термина клиентский компьютер нам подойдут оба определения, представленных выше. Если говорить про сеть Интернет, то ваше устройство, с помощью которого вы зашли на мой сайт – это клиентский компьютер, вы искали информацию и нашли ее на моем блоге, соответственно, вы искали того, кто удовлетворит вашу потребность в информации.
Если говорить про локальную сеть или, как частный случай, корпоративную сеть, то клиентский компьютер – это маломощный компьютер, который пользуется вычислительными мощностями сервера при необходимости выполнения той или иной операции. В общем, клиентский компьютер – это машина, которая пользуется услугами.
Клиентская программа/приложение
С клиентскими программами все несколько сложнее, чем с клиентскими компьютерами. Типичным примером клиентского приложения является браузер, с помощью которого вы заходите на сайты. Во-первых, вам нужно понимать архитектуру взаимодействия клиент-сервер. Во-вторых, вам нужно знать, что и клиентские программы, и серверные могут взаимодействовать на одном и том же компьютере.
В общем случае клиентское приложение – это приложение, отправляющее запросы серверу с целью получения той или иной информации. Термин клиент в области IT чаще всего применяется именно к приложениям. Если говорить о сфере веб, то мы уже упоминали о браузерах, которые отправляют серверу специальные HTTP сообщения, которые получили название HTTP запрос, серверы в свою очередь отправляют клиенту сообщения, которые называются HTTP ответы.
Запросы клиента содержат специальные HTTP методы, которые позволяют указать серверу на то, как он должен обрабатывать запрос (некоторые запросы позволяют получить информацию с сервера, некоторые удалить информацию, а некоторые записать, всё зависит от метода). HTTP сервер, отправляя ответ, сообщает клиенту о том, как он понял запрос при помощи специальных кодов состояния.
Если говорить про MySQL сервер, то у него есть клиент, который позволяет выполнять SQL запросы к базе данных из командой строки (это специальное приложение), а также есть клиент с графическим интерфейсом, который позволяет управлять базами данных при помощи мышки. В качестве сервера, к которому делают запросы браузеры, можно привести пример сервера Apache. Если же вас интересуют готовые сборки серверов для веб-разработки, то можно порекомендовать: локальный веб-сервер AMPPS и российскую сборку Denwer.
Подведем итоги: клиентское приложение – это программа, которая позволяет человеку взаимодействовать с сервером и получать требуемые услуги.
Клиент (информатика)
Программа, являющаяся клиентом, взаимодействует с сервером, используя определённый протокол. Она может запрашивать с сервера какие-либо данные, манипулировать данными непосредственно на сервере, запускать на сервере новые процессы и т. п. Полученные от сервера данные клиентская программа может предоставлять пользователю или использовать как-либо иначе, в зависимости от назначения программы. Программа-клиент и программа-сервер могут работать как на одном и том же компьютере, так и на разных. Во втором случае для обмена информацией между ними используется сетевое соединение.
Разновидностью клиентов являются терминалы — рабочие места на многопользовательских ЭВМ, оснащённые монитором с клавиатурой, и не способные работать без сервера. В 1990-е годы появились сетевые компьютеры — нечто среднее между терминалом и персональным компьютером. Сетевые компьютеры имеют упрощённую структуру и во многом зависят от сервера. Иногда под терминалом понимают любой клиент, или только тонкий клиент.
Тем не менее не всегда под клиентом подразумевается компьютер со слабыми вычислительными ресурсами. Чаще всего понятия «клиент» и «сервер» описывают распределение ролей при выполнении конкретной задачи, а не вычислительные мощности. На одном и том же компьютере могут одновременно работать программы, выполняющие как клиентские, так и серверные функции. Например, веб-сервер может в качестве клиента получать данные для формирования страниц от SQL-сервера (так работает Википедия).
Связанные понятия
Упоминания в литературе
Связанные понятия (продолжение)
Взаимодействие компьютеров между собой, а также с другим активным сетевым оборудованием, в TCP/IP-сетях организовано на основе использования сетевых служб, которые обеспечиваются специальными процессами сетевой операционной системы (ОС) — демонами в UNIX-подобных ОС, службами в ОС семейства Windows и т. п. Примерами сетевых сервисов являются веб-серверы (в т.ч. сайты всемирной паутины), электронная почта, FTP-серверы для обмена файлами, приложения IP-телефонии и многое другое.
Прикладная программа, или приложение, — программа, предназначенная для выполнения определённых задач и рассчитанная на непосредственное взаимодействие с пользователем. В большинстве операционных систем прикладные программы не могут обращаться к ресурсам компьютера напрямую, а взаимодействуют с оборудованием и другими программами посредством операционной системы. Также на простом языке — вспомогательные программы.
Клиент
Почти в каждом бизнесе корпорации используют клиентов, имея свою корпоративную сеть, имея клиентский компьютер для каждого из своих сотрудников, которым необходим доступ к информации с серверов, причем каждый из клиентских компьютеров подключен к главному серверу корпорации. Этот сервер будет содержать файлы и информацию, которые имеют первостепенное значение для эффективности рабочего места, обеспечивая доступ к Интернету и внутрисерверному контенту. [2]
Когда дело доходит до обработки, любая работа, выполняемая на сервере, называется «серверная», а любая информация и данные, генерируемые локально на стороне клиента, называется «клиентская» работа. [3]
Cодержание
Функциональность
Классификация
Клиенты делятся на три категории: [4]
Тонкий клиент
Это клиентская программа с минимальной функцией, которая использует только ресурсы, предоставляемые хост-компьютером или сервером. Его работа довольно проста: отобразить результаты, которые генерирует сервер. Все, что ему нужно, это сервер для выполнения тяжелой подъема (который является обработкой). Тонких клиентов можно рассматривать как услугу по отношению к клиентам через пользовательский интерфейс, который обслуживается для них. Тонкие клиенты становятся лучшим вариантом, когда сервер имеет больше вычислительной мощности, чем любой из его получателей. Тонкие клиентские вычисления являются одним из наиболее естественных способов поддержания вычислительных услуг без необходимости жертвовать вычислительной мощностью компьютера получателя.
Толстый или толстый клиент
Этот клиент прямо противоположен тому, что представляет собой тонкий клиент, и относится к большей части обрабатывающей деятельности, которая не зависит от центральных серверов мэйнфреймов, обрабатывающих данные и информацию. Однако ему может потребоваться источник информации (по крайней мере, один сервер) для загрузки и обновления данных или даже администрирования самой программы. В большинстве случаев, антивирусные программы относятся к этой категории, так как могут работать независимо друг от друга без необходимости постоянного подключения к серверу, если только нет запланированных обновлений и специальных загрузок. Загрузки и выгрузки должны осуществляться для того, чтобы программа знала о некоторых вирусах, а также передавала информацию на сервер-источник. Толстые клиенты также реализуются на рабочих местах, где хост-сервер или основной сервер имеет большую скорость сети, ограниченную вычислительную мощность и ограниченный объем памяти. Это происходит потому, что толстые клиенты могут работать почти независимо друг от друга.
Гибридный клиент
Этот клиент содержит некоторые черты, которые встречаются как в тонких, так и в толстых клиентах. Гибридный клиент может работать независимо, но все равно может полагаться на исходный сервер для важных данных или хранения таких данных.
Клиентская сторона по сравнению с серверной работой
Когда клиент генерирует запрос на определенную веб-страницу, этот запрос сначала должен быть обработан через веб-сервер. Если запрос является скриптом на стороне сервера (в данном случае Perl или PHP) до того, как эта информация будет возвращена клиенту, скрипт выполняется на сервере, и результаты скрипта возвращаются клиенту. [5]
После получения клиентом возвращаемой информации с сервера, который он содержит, клиентский сценарий (например, JavaScript) в браузере компьютера пользователя будет затем выполнять сценарий перед его отображением на веб-странице.
Языки клиентской стороны имеют следующие особенности: [5:1]
Кодирование на стороне сервера и языки имеют следующие особенности: [3:1]
В сущности, большинство веб-сайтов используют языки как клиентской, так и серверной части. Хотя обе эти стороны могут выполнять основные функции с любой проблемой, некоторые функции могут быть выполнены только языками клиентской стороны и несколькими другими, которые также могут быть сделаны языками серверной стороны.
Проще говоря, внешний скриптинг дает преимущество на всем, что требует взаимодействия с пользователем, примером чего является видеоигра. Внутренний сценарий полезен, когда речь идет о сложных и динамических данных, которые необходимо загрузить, например, уведомление пользователя о том, что он уже вошел в систему устройства или даже в другое устройство.
Различия между веб-сервером и веб-клиентом
С точки зрения того, как они функционируют, и веб-сервер, и веб-клиент (получатель) имеют различные режимы работы. Поскольку мы обсудили различия между работой на стороне сервера и работой на стороне клиента, нам нужно знать, как эти два компонента работают рука об руку, чтобы доставить контент пользователю. [4:1]
Веб-сервер
По сути, это система, которая обрабатывает запросы получателя, а также предоставляет различные формы содержимого веб-страниц через протокол HyperText Transfer Protocol (HTTP) и отправляет файлы по протоколу FTP (File Transfer Protocol). Как только пользователь вводит URL-адрес в адресной строке браузера, веб-сервер будет посылать запрос в то место, где сохраняется домен. Затем запрашиваемая информация будет доступна и предоставлена хост-сервером. Обработка и предоставление веб-страницы получателю (клиенту) является основной функцией веб-страницы.
Веб-клиент
Веб-клиент можно сравнить с программным обеспечением или веб-браузером, который либо установлен на компьютере, либо уже встроен в систему компьютера (например, IE). Эти браузеры затем используются для взаимодействия с веб-сервером по запросу пользователя. В этом случае, это потребительское программное обеспечение (созданное и разработанное компанией для адаптации к потребностям пользователей), которое извлекает данные с серверов. Клиент и сервер являются двумя важными компонентами соединения, в то время как две разные машины также управляют этими компонентами. Веб-клиент в основном запрашивает информацию, в то время как веб-сервер, по сути, представляет собой компьютер/процессор, специально предназначенный для приема запросов с удаленных компьютеров и отправки этой информации запрашивающей стороне. Основной функцией веб-клиентов должно быть «окно», в котором пользователи будут просматривать информацию, обрабатываемую сервером. После этого веб-хост разрешит соединения с сервером для просмотра сохраненной информации.
Когда речь заходит о разработке сайта, программисты, как и веб-разработчики, должны знать, откуда поступает устойчивый поток информации. Возможность различать работу на стороне сервера и на стороне клиента повысит эффективность веб-страницы, которую обслуживает пользователь. [1:2] Если определенная страница сталкивается с проблемами при потоковой передаче контента и медиа-платформ, которые присутствуют на веб-странице, то пользователю и веб-разработчику будет легче устранять эти проблемы, поскольку они уже будут иметь представление о преимуществах и недостатках работы и сценариев на стороне сервера и клиента.
Кроме того, способность различать различия между различными типами клиентов даст разработчикам преимущество в том, как они смогут приспособить своего клиента к их аудитории и демографическим особенностям, оптимизируя возможности клиента в соответствии с потребностями пользователей.
Как видно из названия, главные «действующие лица»:
· клиент – компьютерное устройство, которое отсылает запросы серверу, касающиеся выполнения определенных задач или предоставления конкретной информации.
· сервер – компьютерное устройство, гораздо мощнее обычного ПК.
Система работает по следующему принципу:
1. Клиент отправляет запрос серверной машине.
2. Сервер принимает обращение с требованием выполнить определенное действие и выполняет поставленную задачу.
3. Программно-аппаратный комплекс отправляет клиенту результат выполненной работы, обработанного запроса.
Модель клиент-сервер предоставляет возможность разграничить поставленные задачи и работу над вычислениями между теми, кто заказывает услуги и теми, кто их поставляет.
Основные компоненты системы:
· клиент. Рабочая станция считается входной точкой конечного пользователя в данной системе. Отправляет запросы, получает ответы;
· сервер. Взаимодействует с многочисленными клиентами и решает поставленные ими задачи;
· сеть. Здесь происходит передача данных. Посредством сети можно соединить рабочие машины общими ресурсами;
· приложения. Могут обрабатывать информацию, организовывать физическое распределение данных между сервером и клиентом. Программным обеспечением оснащают серверные устройства для сбора данных, работы с ними и хранения. А также ПО устанавливают на компьютерной станции-клиенте.
О технологии клиент-сервер
Серверное устройство поддерживает многопользовательский режим и обеспечивает одновременно работу с несколькими клиентами. Конечно, машина не может решать в прямом смысле слова одновременно несколько поставленных задач, она выстраивает запросы в очередь по мере поступления, обрабатывает обращения и отправляет результаты работы. Запросы можно выстраивать в списке по приоритетности. Чем важнее запрос, тем быстрей его обрабатывают, даже, если он поступил позже.
Рядовые пользователи сети интернет даже не догадываются о том, как их запросы моментально обслуживаются, чтобы они читали новости, книги, тематические статьи, смотрели интересные видео и фильмы, ходили по форумам, «зависали» в социальных сетях, оплачивали счета, общались с друзьями, оформляли заказы на покупку товаров и т.д. Главное, что ответная реакция быстрая.
Именно технология клиент сервер предоставляет возможность реализовать вышеуказанные многочисленные поставленные задачи. Обычно клиент – это браузер конкретного пользователя. А серверами зачастую выступают:
· любые серверы http;
· наборы серверных машин (например, Denwer);
Обмен информацией между клиентом и сервером происходит благодаря сетевым протоколам в интернете. Каждой услуге соответствует определенный протокол, их предостаточно. Запросы, отсылаемые клиентом, классифицируют как http сообщения. Здесь четко указано, какие сведения нужно предоставить, в каком оформлении. Серверное устройство после анализа и обработки запроса, обычно отвечает html документом – дает свой http ответ.
Сообщение от клиента поступает с дополнительными данными, чтобы серверу было понятно, как с ним работать. Ответ машины также отправляется с кодами помимо полезных запрашиваемых данных, чтобы браузер оценил понятливость аппаратно-программного комплекса при обработке его запроса.
Смотря на каком уровне осуществляется взаимосвязь клиента с сервером, отсылаемые сообщения браузером упаковываются по-разному. Как будто они оборачиваются клиентом в несколько слоем обертки. После того, как послание поступило серверной станции, она приступает к разворачиванию всех этих слоев, проводит анализ информации и сбор данных.
Говоря больше о технологии клиент-сервер, следует уточнить, что браузер первый выходит на контакт и делает запрос серверной машине, которая лишь предоставляет услуги в ответ на сообщения и указывает, какие условия нужно при этом соблюдать. Разные компьютерные устройства используют, чтобы установить программное обеспечение клиента и серверного оборудования. Но есть случаи, когда они работали на одном ПК.
Когда на одном сайте одновременно находятся несколько посетителей, к серверу в один момент обращается много клиентов. Однако одномоментное поступление запросов ограничено мощностью и возможностями серверных устройств, а также характером отправляемых сообщений.
Архитектура клиент-сервер
Благодаря архитектуре клиент и сервер определены позиции взаимной связи между компьютерными машинами лишь в целом. Что же касается нюансов взаимодействия, они определены протоколами. Технология вполне прозрачно намекает на разделение в сети рабочих машин: серверы и клиенты. Рабочий контакт всегда инициирован клиентской машиной. Протокол же описывает, по каким правилам этот контакт установлен и действует.
Архитектура взаимодействия между клиентом и сервером подразделяется на два вида:
· двухзвенная. Сторонние ресурсы не задействованы. Одна машина обрабатывает поступившие сообщения. В этом случае сервер должен быть высокопроизводительным. Несмотря на эти жесткие требования, архитектура очень надежная. Первый уровень – клиент отправляет запрос. Второй уровень – сервером принимается сообщение, обрабатывается и отправляется ответ.
· многоуровневая. Речь идет о любой современной архитектуре СУБД. Принципиальное отличие и особенность: запросом клиента занимаются одновременно несколько серверных устройств. Операции перераспределяются, нагрузка на серверную машину снижена и оптимальная. Единственный минус: низкая надежность по сравнению с предыдущим вариантом.
Многоуровневая клиент-серверная архитектура
Обработкой данных занимаются несколько разных серверов. Благодаря такому подходу возможности серверов и клиентов используются более эффективно за счет разделения функций:
К тому же, систему можно точнее разделить на функциональные блоки для выполнения конкретной роли. Для этого между собой взаимодействуют разнообразные серверы приложений. К примеру, реально выделить сервер, необходимый для выполнения всего функционала по управлению персоналом. При этом реально сделать такую настройку, что пользователи смогут пользоваться только его общедоступным функционалом, а детали реализации серверной машины будут недоступны, так как с ней свяжут отдельную базу данных. Подобные системы легко адаптируются под веб, ведь легче организовать доступ пользователей к конкретному функционалу БД посредством html форм, чем ко всей БД.
На веб-технологию очень просто перевести многоуровневую систему. Заменяют клиентскую часть браузером спецтипа или универсального назначения. При этом дополняют веб-сервером и компактными программными модулями сервер приложений. Многоуровневая архитектура также использует менеджеры транзакций. Обмен информацией одновременно происходит между одной серверной машиной приложений и несколькими серверами БД.
· информация защищена и безопасно хранится. Так как серверная машина БД ведет базы данных, можно независимо от программ пользователя обрабатывать информацию в базе;
· повышенная стойкость к сбоям. Сохранена целостность информационных запросов, они доступны другим пользователям, если во время работы клиента случился сбой;
· масштабируемость. Архитектура адаптируется к увеличению количества пользователей. База данных также расширяется в объеме. Однако при этом не поставлена задача менять ПО. Система наращивает аппаратные средства, так происходит подстройка под меняющиеся факторы;
· повышенная защита данных от взлома и опасных атак;
· один пользователь меньше нагружает сеть, поэтому увеличивается ее пропускная способность. Можно удовлетворить запросы большего количества пользователей;
Преимущества и недостатки архитектуры клиент-сервер
Разделен код программы клиентского и серверного приложения. Это главное преимущество архитектуры. Выбрана локальная сеть. Поэтому плюсы следующие:
· к клиентским рабочим станциям выдвигают низкие запросы;
· преимущественно все вычислительные операции выполняются на серверах;
· реально повысить защиту локальной сети.
Но не все так гладко с клиент-серверной архитектурой, есть и недостатки:
· серверные машины стоят в разы дороже, чем клиентские рабочие станции;
· обслуживание серверов доверяют только квалифицированным и профессионально подготовленным специалистам;
· работа клиентских компьютерных устройств остановлена, если в локальной сети «полетело» серверное оборудование.
Важно понимать, что нет четкого разделения оборудования на клиентское и серверное. Просто архитектура к/с дает возможность перераспределить и оптимизировать загруженность и распределить функциональность между этими рабочими станциями.





