Учебник для вузов в. Олифер Н. Олифер Компьютерные Принципы, технологии, протоколы
Скачать 22.28 Mb.
|
ГЛАВА 2 Общие принципы построения сетей Когда вы приступаете к изучению конкретных технологий для сетей LAN, WAN и MAN, таких как Ether net, IP или ATM, то очень скоро начинаете понимать, что у этих технологий есть много общего. При этом они не являются тождественными, в каждой технологии и протоколе есть свои особенности, так что нельзя механически перенести знания из одной технологии в другую. Изучение общих принципов построения компьютерных сетей поможет вам в дальнейшем быстрее «разбираться» с любой конкретной сетевой технологией. Однако известное высказывание «Знание нескольких принципов освобождает от запоминания множества фактов» не стоит воспринимать буквально — хороший специалист, конечно же, должен знать множество деталей и фактов. Знание принципов позволяет систематизировать эти частные сведения, связать их друг с другом в стройную систему и тем самым использовать более осознано и эффективно. Конечно, изучение принципов перед изучением конкретных технологий — задача непростая, особенно для читателей с практиче ским складом ума. Кроме того, всегда есть опасность неверного понимания какого-нибудь общего утверждения без проверки его в практической реализации. Поэтому мы просим читателей поверить нам пока на слово, что игра стоит свеч, а также последовать нашему совету: в ходе изучения материа ла последующих глав книги время от времени мысленно возвращайтесь к теоретическим вопросам и проверяйте себя, так ли вы понимали те или иные механизмы, когда изучали их впервые. В этой главе мы рассмотрим такие фундаментальные понятия сетевых технологий, как коммутация и маршрутизация, мультиплексирование и разделение передающей среды. Мы познакомимся также с общими подходами, применяющимися при адресации узлов сети и выборе топологии. 40 Глава 2. Общие принципы построения сетей Простейшая сеть из двух компьютеров Совместное использование ресурсов Исторически главной целью объединения компьютеров в сеть было разделение ресурсов: пользователи компьютеров, подключенных к сети, или приложения, выполняемые на этих компьютерах, получают возможность автоматического доступа к разнообразным ресурсам остальных компьютеров сети, к числу которых относятся: □ периферийные устройства, такие как диски, принтеры, плоттеры, сканеры и др.; □ данные, хранящиеся в оперативной памяти или на внешних запоминающих устрой ствах; □ вычислительная мощность (за счет удаленного запуска «своих» программ на «чужих» компьютерах). Чтобы обеспечить пользователей разных компьютеров возможностью совместного ис пользования ресурсов сети, компьютеры необходимо оснастить некими дополнительными сетевыми средствами. Рассмотрим простейшую сеть, состоящую из двух компьютеров, к одному из которых подключен принтер (рис. 2.1). Какие дополнительные средства должны быть предусмо трены в обоих компьютерах, чтобы с принтером мог работать не только пользователь компьютера Б, к которому этот принтер непосредственно подключен, но и пользователь компьютера Л? Компьютер А Компьютер В Принтер компьютера В Рис. 2.1. Простейшая сеть Сетевые интерфейсы Для связи устройств в них, прежде всего, должны быть предусмотрены внешние1 интер фейсы. Интерфейс — в широком смысле — формально определенная логическая и/или физическая граница между взаимодействующими независимыми объектами. Интерфейс задает параметры, процедуры и характеристики взаимодействия объектов. 1 Наряду с внешними электронные устройства могут использовать внутренние интерфейсы, опреде ляющие логические и физические границы между входящими в их состав модулями. Так, известный интерфейс «общая шина» является внутренним интерфейсом компьютера, связывающим оператив ную память, процессор и другие блоки компьютера. Простейшая сеть из двух компьютеров 41 Разделяют физический и логический интерфейсы. □ Ф и з и ч е с к и й и н т е р ф е й с (называемый также п о р т о м ) — определяется набором элек трических связей и характеристиками сигналов. Обычно он представляет собой разъем с набором контактов, каждый из которых имеет определенное назначение, например, это может быть группа контактов для передачи данных, контакт синхронизации данных и т. п. Пара разъемов соединяется к а б е л е м , состоящим из набора проводов, каждый из которых соединяет соответствующие контакты. В таких случаях говорят о создании л и н и и , или к а н а л а , с в я з и между двумя устройствами. □ Л о г и ч е с к и й и н т е р ф е й с (называемый также п р о т о к о л о м ) — это набор информацион ных сообщений определенного формата, которыми обмениваются два устройства или две программы, а также набор правил, определяющих логику обмена этими сообще ниями. На рис. 2.2 мы видим интерфейсы двух типов: компьютер—компьютер и компьютер— периферийное устройство. Компьютер А Протокол Компьютер В Интерфейс компьютер—компьютер Интерфейс компьютер—принтер Рис. 2.2. Совместное использование принтера в компьютерной сети □ Интерфейс компьютер—компьютер позволяет двум компьютерам обмениваться ин формацией. С каждой стороны он реализуется парой: О аппаратным модулем, называемым с е т е в ы м а д а п т е р о м , или с е т е в о й и н т е р ф е й с н о й к а р т о й (Network Interface Card, NIC); О д р а й в е р о м с е т е в о й и н т е р ф е й с н о й к а р т ы — специальной программой, управляющей работой сетевой интерфейсной карты. □ Интерфейс компьютер—периферийное устройство (в данном случае интерфейс компьютер—принтер) позволяет компьютеру управлять работой периферийного устройства (ПУ). Этот интерфейс реализуется: О со стороны компьютера — и н т е р ф е й с н о й к а р т о й и д р а й в е р о м ПУ (принтера), по добным сетевой интерфейсной карте и ее драйверу; 42 Глава 2. Общие принципы построения сетей О со стороны ПУ — к о н т р о л л е р о м П У (принтера), обычно представляющий собой аппаратное устройство1, принимающее от компьютера как данные, например байты информации, которую нужно распечатать на бумаге, так и команды, которые он от рабатывает, управляя электромеханическими частями периферийного устройства, например выталкивая лист бумаги из принтера или перемещая магнитную головку диска. Связь компьютера с периферийным устройством Для того чтобы решить задачу организации доступа приложения, выполняемого на ком пьютере Л, к ПУ через сеть, давайте, прежде всего, посмотрим, как управляет этим устрой ством приложение, выполняемое на компьютере В, к которому данное ПУ подключено непосредственно (см. рис. 2 2 ). 1. Пусть приложению В в какой-то момент потребовалось вывести на печать некоторые данные. Для этого приложение обращается с запросом на выполнение операции ввода- вывода к операционной системе (как правило, драйвер не может быть запущен на выполнение непосредственно приложением). В запросе указываются адрес данных, которые необходимо напечатать (адрес буфера ОП), и информация о том, на каком периферийном устройстве эту операцию требуется выполнить. 2. Получив запрос, операционная система запускает программу — драйвер принтера. С этого момента все дальнейшие действия по выполнению операции ввода-вывода со стороны компьютера реализуются только драйвером принтера и работающим под его управлением аппаратным модулем — интерфейсной картой принтера без участия приложения и операционной системы. 3. Драйвер принтера оперирует командами, понятными контроллеру принтера, такими, например, как «Печать символа», «Перевод строки», «Возврат каретки». Драйвер в определенной последовательности загружает коды этих команд, а также данные, взя тые из буфера ОП, в буфер интерфейсной карты принтера, которая побайтно передает их по сети контроллеру принтера. 4. Интерфейсная карта выполняет низкоуровневую работу, не вдаваясь в детали, ка сающиеся логики управления устройством, смысла данных и команд, передаваемых ей драйвером, считая их однородным потоком байтов. После получения от драйвера очередного байта интерфейсная карта просто последовательно передает биты в линию связи, представляя каждый бит электрическим сигналом. Чтобы контроллеру принтера стало понятно, что начинается передача байта, пере&передачей первого бита информа ционная карта формирует с т а р т о в ы й с и г н а л специфической формк, а после передачи последнего информационного бита — с т о л о в ы й с и г н а л . Эти сигналы синхронизируют передачу байта. Контроллер, опознав стартовый бит, начинает принимать информацион ные биты, формируя из них байт в своем приемном буфере. Помимо информационных битов карта может передавать бит контроля четности для повышения достоверности обмена. Прикорректно выполненной передаче в буфере принтера устанавливается со ответствующий признак. 1 Встречаются и программно-управляемые контроллеры, например, для управления современными принтерами, обладающими сложной логикой. Простейшая сеть из двух компьютеров 43 5. Получив очередной байт, контроллер интерпретирует его и запускает заданную опера цию принтера. Закончив работу по печати всех символов документа, драйвер принтера сообщает операционной системе о выполнении запроса, а та, в свою очередь, сигнали зирует об этом событии приложению. Обмен данными между двумя компьютерами Механизмы взаимодействия компьютеров в сети многое позаимствовали у схемы взаи модействия компьютера с периферийными устройствами. В самом простом случае связь компьютеров может быть реализована с помощью тех же самых средств, которые исполь зуются для связи компьютера с периферией, с той разницей, что в этом случае активную роль играют обе взаимодействующие стороны. Приложения А и В (см. рис. 2.2) управляют процессом передачи данных путем обмена с о о б щ е н и я м и . Чтобы приложения могли «понимать» получаемую друг от друга информа цию, программисты, разрабатывавшие эти приложения, должны строго оговорить форматы и последовательность сообщений, которыми приложения будут обмениваться во время выполнения этой операции. Например, они могут договориться о том, что любая операция обмена данными начинается с передачи сообщения, запрашивающего информацию о го товности приложения В\ что в следующем сообщении идут идентификаторы компьютера и пользователя, сделавшего запрос; что признаком срочного завершения операции обмена данными является определенная кодовая комбинация и т. п. Тем самым определяется п р о т о к о л в з а и м о д е й с т в и я п р и л о ж е н и й для выполнения операции данного типа. Аналогично тому, как при выводе данных на печать необходимо передавать принтеру дополнительно некоторый объем служебной информации — в виде команд управления принтером, так и здесь: для передачи данных из одного компьютера в другой необходимо сопровождать эти данные дополнительной информацией в виде протокольных сообщений, которыми обмениваются приложения. Заметим, что для реализации протокола нужно, чтобы к моменту возникновения потребно сти в обмене данными были активны оба приложения: как приложение А, которое посылает инициирующее сообщение, так и приложение В, которое должно быть готово принять это сообщение и выработать реакцию на него. Передача любых данных (как сообщений протокола приложений, так и собственно данных, со ставляющих цель операции обмена) происходит в соответствие с одной и той же процедурой. На стороне компьютера А приложение, следуя логике протокола, размещает в буфере ОП либо собственное очередное сообщение, либо данные, и обращается к ОС с запросом на выполнение операции межкомпьютерного обмена данными. ОС запускает соответствую щий драйвер сетевой карты, который загружает байт из буфера ОП в буфер ИК, после чего инициирует работу ИК. Сетевая интерфейсная карта последовательно передает биты в линию связи, дополняя каждый новый байт стартовым и стоповым битами. На стороне компьютера В сетевая И К принимает биты, поступающие со стороны внешнего интерфейса, и помещает их в собственный буфер. После того как получен стоповый бит, интерфейсная карта устанавливает признак завершения приема байта и выполняет про верку корректности приема, например, путем контроля бита четности. Факт корректного приема байта фиксируется драйвером сетевой ИК компьютера В. Драйвер переписывает принятый байт из буфера ИК в заранее зарезервированный буфер ОП компьютера В. 44 Глава 2. Общие принципы построения сетей Приложение В извлекает данные из буфера и интерпретирует их в соответствии со своим протоколом либо как сообщение, либо как данные. Если согласно протоколу приложение В должно передать ответ приложению Л, то выполняется симметричная процедура. Таким образом, связав электрически и информационно два автономно работающих ком пьютера, мы получили простейшую компьютерную сеть. Доступ к ПУ через сеть Итак, мы имеем в своем распоряжении механизм, который позволяет приложениям, вы полняющимся на разных компьютерах, обмениваться данными. И хотя приложение А (см. рис. 2.2) по-прежнему не может управлять принтером, подключенным к компьюте ру В, оно может теперь воспользоваться средствами межкомпьютерцого обмена данными, чтобы передать приложению В «просьбу» выполнить для него требуемую операцию. При ложение А должно «объяснить» приложению В, какую операцию необходимо выполнить, с какими данными, на каком из имеющихся в его распоряжении устройств, в каком виде должен быть распечатан текст и т. п. В ходе печати могут возникнуть ситуации, о которых приложение В должно оповестить приложение Л, например об отсутствии бумаги в прин тере. То есть для решения поставленной задачи — доступа к принтеру по сети — должен быть разработан специальный протокол взаимодействия приложений А и В. А теперь посмотрим, как работают вместе все элементы этой простейшей компьютерной сети при решении задачи совместного использования принтера. 1. В соответствии с принятым протоколом приложение А формирует сообщение-запрос к приложению J5, помещает его в буфер ОП компьютера А и обращается к ОС, снабжая ее необходимой информацией. 2. ОС запускает драйвер сетевой ИК, сообщая ему адрес буфера ОП, где хранится сообщение. 3. Драйвер и сетевая интерфейсная карта компьютера А, взаимодействуя с драйвером и интерфейсной картой компьютера J5, передают сообщение байт за байтом в буфер ОП компьютера В. 4. Приложение В извлекает сообщение из буфера, интерпретирует его в соответствии с протоколом и выполняет необходимые действия. В число таких действий входит, в том числе, обращение к ОС с запросом на выполнение тех или иных операций с локальным принтером. 5. ОС запускает драйвер принтера, который в кооперации с интерфейсной картой и кон троллером принтера выполняет требуемую операцию печати. Уже на этом начальном этапе, рассматривая связь компьютера с периферийным устрой ством, мы столкнулись с важнейшими «сетевыми» понятиями: интерфейсом и протоколом, драйвером и интерфейсной картой, а также с проблемами, характерными для компьютер ных сетей: согласованием интерфейсов, синхронизацией асинхронных процессов, обеспе чением достоверности передачи данных. Сетевое программное обеспечение Мы только что рассмотрели случай совместного использования принтера в простейшей сети, состоящей только из двух компьютеров. Однако даже на этом начальном этапе мы Сетевое программное обеспечение 45 уже можем сделать некоторые выводы относительно строения сетевого программного обе спечения: сетевых служб, сетевой операционной системы и сетевых приложений. Сетевые службы и сервисы Потребность в доступе к удаленному принтеру может возникать у пользователей самых разных приложений: текстового редактора, графического редактора, системы управления базой данных (СУБД). Очевидно, что дублирование в каждом из приложений общих для всех них функций по организации удаленной печати является избыточным. Более эффективным представляется подход, при котором эти функции исключаются из приложений и оформляются в виде пары специализированных программных модулей — клиента и сервера печати (рис. 2.3), функции которых ранее выполнялись соответственно приложениями А и В. Теперь эта пара клиент—сервер может быть использована любым приложением, выполняемым на компьютере А. Компьютер А Компьютер В Интерфейс компьютер—компьютер Интерфейс компьютер—принтер - Рис. 2.3. Совместное использование принтера в компьютерной сети с помощью сетевой службы печати Обобщая такой подход применительно к другим типам разделяемых ресурсов, дадим следующие определения1: Клиент — это модуль, предназначенный для формирования и передачи сообщений-запросов к ресурсам удаленного компьютера от разных приложений с последующим приемом результатов из сети и передачей fix соответствующим приложениям. 1 Термины «клиент» и «сервер» являются чрезвычайно многозначными. Данная пара терминов, уже используемая нами для обозначения функциональной роли взаимодействующих компьютеров и приложений, применима также к программным модулям. 46 Глава 2. Общие принципы построения сетей Cepfeep—это модуль, который по^ознно бжидает яриадіа и$ сети запросов от клиентов* й при» няв запрос, пытается е^о дбс&фЬ^г-Уфк лЬкаіігьноЙ ОСІ одйй сервер обслуживать запросы сразу не&колбкмх {Ьо<^%М} ШІй одновременно). Пара клиент-сервер, Jtygciyil К цои}ф|Иш^,?мггу ресурса компьютеру *щщ3 сеть, образует остевую службу, Т У ,, Каждая служба связана с определенным типом сетевых ресурсов. Так, на рис. 2.3 модули клиента и сервера, реализующие удаленный доступ к принтеру, образуют сетевую службу печати. Файловая служба позволяет получать доступ к файлам, хранящимся на диске других компьютеров. Серверный компонент файловой службы называют файл-сервером. Для поиска и просмотра информации в Интернете используется веб-служба, состоящая из веб-сервера и клиентской программы, называемой веб-браузером (web browser). Раз деляемым ресурсом в данном случае является веб-сайт — определенным образом органи зованный набор файлов, содержащих связанную в смысловом отношении информацию и хранящихся на внешнем накопителе веб-сервера. Компьютер А (клиент) Компьютер В (сервер) Внешний дисковый накопитель Рис. 2.4. Веб-служба На схеме веб-службы, показанной на рис. 2.4, два компьютера связаны не непосредственно, как это было во всех предыдущих примерах, а через множество промежуточных компью теров и других сетевых устройств, входящих в состав Интернета. Для того чтобы отразить Сетевое программное обеспечение 47 этот факт графически, мы поместили между двумя компьютерами так называемое комму никационное облако, которое позволяет нам абстрагироваться от всех деталей среды пере дачи сообщений. Обмен сообщениями между клиентской и серверной частями веб-службы выполняется по стандартному протоколу HTTP и никак не зависит от того, передаются ли эти сообщения «из рук в руки» (от интерфейса одного компьютера к интерфейсу другого) или через большое число посредников — транзитных коммуникационных устройств. Вме сте с тем, усложнение среды передачи сообщений приводит к возникновению новых допол нительных задач, на решение Которых не был рассчитан упоминавшийся ранее простейший драйвер сетевой интерфейсной карты. Вместо него на взаимодействующих компьютерах должны быть установлены более развитые программные транспортные средства. Сетевая операционная система Операционную систему компьютера часто определяют как взаимосвязанный набор систем ных программ, который обеспечивает эффективное управление ресурсами компьютера (памятью, процессором, внешними устройствами, файлами и др.), а также предоставляет пользователю удобный интерфейс для работы с аппаратурой компьютера и разработки приложений. Говоря о сетевой ОС, мы, очевидно, должны расширить границы управляемых ресурсов за пределы одного компьютера. Сетевой операционной системой называют операционную систему компьютера, которая • 'о помимоуправленияяокальными ресурсами предоставляет пользователям и приложениям воз- и удобного доступа ^информационным и аппаратным ресурсам других г. ' V Сегодня практически все операционные системы являются сетевыми. Из примеров, рассмотренных в предыдущих разделах (см. рис 2.3 и 2.4), мы видим, что удаленный доступ к сетевым ресурсам обеспечивается: □ сетевыми службами; □ средствами транспортировки сообщений по сети (в простейшем случае — сетевыми интерфейсными картами и их драйверами). Следовательно, именно эти функциональные модули должны быть добавлены к ОС, чтобы она могла называться сетевой (рис. 2.5). Среди сетевых служб можно выделить такие, которые ориентированы не на простого пользователя, как, например, файловая служба или служба печати, а на администратора. Такие службы направлены на организацию работы сети. Например, централизованная справочная служба, или служба каталогов, предназначена для ведения базы данных о пользователях сети, обо всех ее программных и аппаратных компонентах1. В качестве других примеров можно назвать службу мониторинга сети, позволяющую захватывать и анализировать сетевой трафик, службу безопасности, в функции которой может вхо дить, в частности, выполнение процедуры логического входа с проверкой пароля, службу резервного копирования и архивирования. 1 Например, служба каталогов Active Directory компании Microsoft. 48 Глава 2. Общие принципы построения сетей Сетевая операционная система Средства управления локальными ресурсами Сетевые средства Сетевые службы Транспортные средства Рис. 2.5. Функциональные компоненты сетевой ОС От того, насколько богатый набор сетевых служб и услуг предлагает операционная систе ма конечным пользователям, приложениям и администраторам сети, зависит ее позиция в общем ряду сетевых ОС. Помимо сетевых служб сетевая ОС должна включать программные коммуникационные (транспортные) средства, обеспечивающие совместно с аппаратными коммуникацион ными средствами передачу сообщений, которыми обмениваются клиентские и серверные части сетевых служб. Задачу коммуникации между компьютерами сети решают драйверы и протокольные модули. Они выполняют такие функции, как формирование сообще ний, разбиение сообщения на части (пакеты, кадры), преобразование имен компьютеров в числовые адреса, дублирование сообщений в случае их потери, определение маршрута в сложной сети и т. д. И сетевые службы, и транспортные средства могут являться неотъемлемыми (встроен ными) компонентами ОС или существовать в виде отдельных программных продуктов. Например, сетевая файловая служба обычно встраивается в ОС, а вот веб-браузер чаще всего приобретаемся отдельно. Типичная сетевая ОС имеет в своем составе широкий набор драйверов и протокольных модулей, однако у пользователя, как правило, есть возможность дополнить этот стандартный набор необходимыми ему программами. Решение о способе реализации клиентов и серверов сетевой службы, а также драйверов и протокольных моду лей принимается разработчиками с учетом самых разных соображений: технических, ком Сетевое программное обеспечение 49 мерческих и даже юридических. Так, например, именно на основании антимонопольного закона США компании Microsoft было запрещено включать ее браузер Internet Explorer в состав ОС этой компании. Сетевая служба может быть представлена в ОС либо обеими (клиентской и серверной) частями, либо только одной из них. В первом случае операционная система, называемая одноранговой, не только позволяет обращаться к ресурсам других компьютеров, но и предоставляет собственные ресурсы в распоряжение пользователей других компьютеров. Например, если на всех компьютерах сети установлены и клиенты, и серверы файловой службы, то все пользователи сети могут совместно применять файлы друг друга. Компьютеры, совмещающие функции клиента и сервера, называют одноранговыми узлами. Операционная система, которая преимущественно содержит клиентские части сетевых служб, называется клиентской. Клиентские ОС устанавливаются на компьютеры, обра щающиеся с запросами к ресурсам других компьютеров сети. За такими компьютерами, также называемыми клиентскими, работают рядовые пользователи. Обычно клиентские компьютеры относятся к классу относительно простых устройств. К другому типу операционных систем относится серверная ОС — она ориентирована на обработку запросов из сети к ресурсам своего компьютера и включает в себя в основном серверные части сетевых служб. Компьютер с установленной на нем серверной ОС, за нимающийся исключительно обслуживанием запросов других компьютеров, называют выделенным сервером сети. За выделенным сервером, как правило, обычные пользователи не работают. ПРИМ ЕЧАНИЕ--------------------------------------------------------------------------------------------------------------- Подробнее о сетевых операционных системах и встроенных в них сетевых службах вы можете прочи тать в специальной литературе, а также в учебнике авторов «Сетевые операционные системы». Наибо лее популярные сетевые службы Интернета, такие как электронная почта, веб-служба, ІР-телефония и др., рассматриваются в главе 23. Сетевые приложения Компьютер, подключенный к сети, может выполнять следующие типы приложений: □ Локальное приложение целиком выполняется на данном компьютере и использует только локальные ресурсы (рис. 2.6, а). Для такого приложения не требуется никаких сетевых средств, оно может быть выполнено на автономно работающем компьютере. □ Централизованное сетевое приложение целиком выполняется на данном компью тере, но обращается в процессе своего выполнения к ресурсам других компьютеров сети. В примере на рисунке 2.6, б приложение, которое выполняется на клиентском компьютере, обрабатывает данные из файла, хранящегося на файл-сервере, а затем распечатывает результаты на принтере, подключенном к серверу печати. Очевидно, что работа такого типа приложений невозможна без участия сетевых служб и средств транспортировки сообщений. □ Распределенное (сетевое) приложение состоит из нескольких взаимодействующих частей, каждая из которых выполняет какую-то определенную законченную работу 50 Глава 2. Общие принципы построения сетей Локальное приложение Обращение к локальным ресурсам Централизованное сетевое прйлоШн# т Часть 1 распределенного приложения т Поддержка специализированного интерфейса Взаимодействие с СУБД и генерация отчетов л А Математическая обработка статистических данных Г / N \ ^Компьютерная % ) Честь 2 - в Я Г [ сеть ^ ржжрадвпвндого гунпоа^ииН'. Рис. 2.6. Типы приложений, выполняющихся в сети Сетевое программное обеспечение 51 по решению прикладной задачи, причем каждая часть может выполняться и, как пра вило, выполняется на отдельном компьютере сети (рис. 2.6, в). Части распределенного приложения взаимодействуют друг с другом, используя сетевые службы и транспорт ные средства ОС. Распределенное приложение в общем случае имеет доступ ко всем ресурсам компьютерной сети. Очевидным преимуществом распределенных приложений является возможность рас параллеливания вычислений, а также специализация компьютеров. Так, в приложении, предназначенном, скажем, для анализа климатических изменений, можно выделить три достаточно самостоятельные части (см. рис. 2 6 , в), допускающие распараллеливание. Первая часть приложения, выполняющаяся на сравнительно маломощном персональном компьютере, могла бы поддерживать специализированный графический пользовательский интерфейс, вторая — заниматься статистической обработкой данных на высокопроиз водительном мэйнфрейме, а третья — генерировать отчеты на сервере с установленной стандартной СУБД. В общем случае каждая из частей распределенного приложения может быть представлена несколькими копиями, работающими на разных компьютерах. Скажем, в данном примере часть 1, ответственную за поддержку специализированного пользовательского интерфейса, можно было бы запустить на нескольких персональных компьютерах, что позволило бы работать с этим приложением нескольким пользователям одновременно. Однако чтобы добиться всех тех преимуществ, которые сулят распределенные приложения, разработчикам этих приложений приходится решать множество проблем, например: на сколько частей следует разбить приложение, какие функции возложить на каждую часть, как организовать взаимодействие этих частей, чтобы в случае сбоев и отказов оставшиеся части корректно завершали работу и т. д., и т. п. Заметим, что все сетевые службы, включая файловую службу, службу печати, службу элек тронной почты, службу удаленного доступа, интернет-телефонию и т. д., по определению относятся к классу распределенных приложений. Действительно, любая сетевая служба включает в себя клиентскую и серверную части, которые могут и обычно выполняются на разных компьютерах. На рис. 2.7, иллюстрирующем распределенный характер веб-службы, мы видим различ ные виды клиентских устройств — персональные компьютеры, ноутбуки и мобильные телефоны — с установленными на них веб-браузерами, которые взаимодействуют по сети с веб-сервером. Таким образом, с одним и тем же веб-сайтом может одновременно работать множество — сотни и тысячи — сетевых пользователей. Многочисленные примеры распределенных приложений можно встретить и в такой об ласти, как обработка данных научных экспериментов. Это не удивительно, так как мно гие эксперименты порождают такие большие объемы данных, генерируемых в реальном масштабе времени, которые просто невозможно обработать на одном, даже очень мощном, суперкомпьютере. Кроме того, алгоритмы обработки экспериментальных данных часто легко распараллеливаются, что также важно для успешного применения взаимосвязанных компьютеров с целью решения какой-либо общей задачи. Одним из последних и очень известных примеров распределенного научного приложения является программное обеспечение обработки данных большого адронного коллайдера (Large Hadron Collider, LHC), запущенного 10 сентября 2008 года в CERN — это приложение работает более чём на 30 тысячах компьютеров, объединенных в сеть. |