Федеральное агентство связи Государственное образовательное учреждение высшего профессионального образования «Поволжская государственная академия телекоммуникаций и информатики» __________________________________________________________________ Кафедра электронной коммерции «УТВЕРЖДАЮ» Заведующий кафедрой электронной коммерции __________________________Юрасов А.В._____ подпись, Фамилия И.О. « ____ » _______________ 200__ г. КОНСПЕКТ ЛЕКЦИЙ ПО УЧЕБНОЙ ДИСЦИПЛИНЕ «Операционные системы, среды и оболочки» по специальности: 080801 – Информационные технологии в экономике Обсуждено на заседании кафедры «_____» ____________________ 200__ г. протокол № ___________ ОГЛАВЛЕНИЕ ЛЕКЦИЯ 1. “Введение в операционные системы. Определение, назначение, состав и функции операционных систем. Классификация операционных систем” ..............................5 Введение. Определение операционной системы ....................................................................5 ОС как расширенная машина ...............................................................................................5 ОС как система управления ресурсами ...............................................................................6 Классификация ОС ....................................................................................................................6 Особенности алгоритмов управления ресурсами ...............................................................7 Особенности аппаратных платформ ....................................................................................9 Особенности областей использования ..............................................................................10 Особенности методов построения .....................................................................................13 ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ ПО ВВЕДЕНИЮ В ОС ............................................15 ЛЕКЦИЯ 2. “Инсталляция и конфигурирование операционной системы, начальная загрузка. Расширение возможностей пользователя по автоматической установке и переустановке ОС WINDOWS” .................................................................................................16 Установка ОС Windows : ........................................................................................................16 Как повысить производительность Windows ...................................................................16 Конфигурирование ОС при помощи утилиты msconfig. .................................................17 Интерактивные командные и конфигурационные файлы ...............................................22 ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ ПО УСТАНОВКЕ ОС WINDOWS .........................27 Лекция 3 “Системный РЕЕСТР как основа обеспечения жизнеспособности системы” .....29 Основные отличия реестров Windows NT и Windows 9x. .................................................29 Внутри Registry ........................................................................................................................32 Как организована и управляется база данных важнейшей системной информации Windows NT. ............................................................................................................................32 Ульи ......................................................................................................................................32 Таблица 1. Корневые ключи Regedit .................................................................................33 Структура улья .....................................................................................................................34 Таблица 3. Типы размещаемых в сотах данных ...............................................................34 Карты сотов ..........................................................................................................................36 Пространство имен Registry и работа с ним .....................................................................38 Надежное хранение .............................................................................................................40 Оптимизации Registry .........................................................................................................41 Текущее состояние ОС........................................................................................................42 ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ ПО РЕЕСТРУ ...........................................................43 Лекция 4 “ Операционные оболочки и настройки через РЕЕСТР” .......................................44 Настройка свойств сети, оболочки Windows NT ..................................................................44 Программы для работы с реестром. .......................................................................................45 ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ ПО НАСТРОЙКАМ ЧЕРЕЗ РЕЕСТР ....................49 Лекция 5 ”Локальные и глобальные сети. Сетевые операционные системы. Компоненты сети.” .............................................................................................................................................50 1. Входящие подключения..................................................................................................61 3. Настройка TCP/IP ............................................................................................................67 4. Просмотр состояния подключения ................................................................................68 5. Настройка подключений .................................................................................................69 6. Управление сетевыми компонентами............................................................................71 7. Локальное подключение .................................................................................................74 8. Подключение к Интернет ...............................................................................................76 9. Совместное использование Интернет-подключения ......................................................78 10. Доступ через ISDN ............................................................................................................81 11. Виртуальные частные сети (VPN) и их администрирование .......................................83 2 Лекция 6 “Технология Object Linking and Embedding (OLE); Технология Component Object Model (COM) , Технология ActiveX. Сервер сценариев WSH” ......................................................91 Назначение и основные свойства WSH ..............................................................................................91 Необходимые сведения о языке JScript ..................................................................................92 Переменные ..........................................................................................................................93 Типы данных ........................................................................................................................94 Числа .....................................................................................................................................94 Текстовые строки.................................................................................................................94 Объекты ................................................................................................................................95 Логические данные ..............................................................................................................95 Null (пустой тип) и undefined (неопределенный тип) ......................................................95 Работа с системным реестром. ...........................................................................................95 Метод RegDelete ..................................................................................................................97 Метод RegRead ....................................................................................................................98 Метод RegWrite ...................................................................................................................99 Заключение...............................................................................................................................99 ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ ПО WSH ..................................................................100 Лекция 7 “Интерфейс WinAPI, структура Windows-приложения” ......................................101 1. Общие свойства Windows-платформ ...............................................................................101 1.1. Интерфейс программирования приложений............................................................101 1.2. Окна и сообщения ......................................................................................................102 1.3. Приложения, потоки и окна ......................................................................................102 1.4. Классы окон ................................................................................................................103 1.5. Типы сообщений .........................................................................................................104 1.6. Вызов функций Windows ...........................................................................................106 1.7. Оконная функция - функция обратного вызова ......................................................107 1.8. Синхронные и асинхронные сообщения ..................................................................108 1.9. Разделение аппаратных ресурсов..............................................................................109 2. Общая структура Windows-приложения .........................................................................111 2.1. Пример типичного Windows-приложения ...............................................................111 2.2. Точка входа в программу ...........................................................................................115 2.3. Поиск работающей копии приложения ....................................................................117 2.4. Регистрация класса окна ............................................................................................117 2.5. Поля структуры WNDCLASS....................................................................................119 2.6. Создание окна .............................................................................................................119 2.7. Параметры функции CreateWindow ..........................................................................120 2.8. Отображение окна ......................................................................................................121 2.9. Цикл обработки очереди сообщений ........................................................................122 2.10. Завершение работы приложения.............................................................................123 2.11. Оконная процедура...................................................................................................124 2.12. Обработка сообщений ..............................................................................................125 2.13. Отображение содержимого окна, сообщение WM_PAINT ..................................126 2.14. Удаление окна, сообщение WM_DESTROY .........................................................128 ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ ПО WIN API ...........................................................129 Лекция 8 “Глобальные сети. . Работа в сети. Средства защиты информации в сети. Путеводители (навигаторы). Глобальные и локальные сетевые технологии. Элементы системной интеграции” .............................................................................................................130 Краткое историческое введение ...........................................................................................130 Что составляет Internet ? .......................................................................................................132 Административное устройство Internet ...............................................................................133 Финансы .................................................................................................................................134 Как структура Internet сказывается на Пользователе ? ......................................................134 3 Потенциальные пользователи ..............................................................................................135 Доступ в Internet ....................................................................................................................136 Виды доступа в Internet .........................................................................................................137 Непосредственный доступ ................................................................................................ 138 SLIP и PPP ..........................................................................................................................139 Доступ ``по вызову'' (Dial-up Access) ..............................................................................141 Доступ UUCP .....................................................................................................................142 Доступ через другие сети..................................................................................................142 Планы на будущее .................................................................................................................143 Стандартные протоколы ISO ............................................................................................143 Международные связи ......................................................................................................143 Коммерциализация ............................................................................................................144 Приватизация .....................................................................................................................144 Структура функционирования сети .....................................................................................145 Уровни работы сети ..............................................................................................................150 Пересылка битов ................................................................................................................150 Пересылка данных .............................................................................................................150 Сети коммутации пакетов .................................................................................................150 Протокол Internet (IP) ........................................................................................................151 Протокол управления передачей (TCP) и протокол пользовательских дейтаграмм (UDP) ..................................................................................................................................154 Создание сети с человеческим лицом. Прикладное обеспечение ....................................160 Системы сетевых адресов .....................................................................................................162 Региональная Система Имен ............................................................................................162 Структура региональной системы имен ..........................................................................163 Поиск адреса по доменному имени .................................................................................164 Замечания по региональной системе имен .....................................................................165 Система адресов X.400 ......................................................................................................167 Лекция 9 “Тенденции и перспективы развития распределенных операционных сред. Программные средства человеко-машинного интерфейса: мультимедиа и гипермедиа; аудио и сенсорное сопровождение.” .......................................................................................169 Системы реального времени. Системы жесткого и мягкого реального времени. ........169 Мобильные операционные системы. ...................................................................................181 4 ЛЕКЦИЯ 1. “Введение в операционные системы. Определение, назначение, состав и функции операционных систем. Классификация операционных систем” Введение. Определение операционной системы Операционная система в наибольшей степени определяет облик всей вычислительной системы в целом. Несмотря на это, пользователи, активно использующие вычислительную технику, зачастую испытывают затруднения при попытке дать определение операционной системе. Частично это связано с тем, что ОС выполняет две по существу мало связанные функции: обеспечение пользователю-программисту удобств посредством предоставления для него расширенной машины и повышение эффективности использования компьютера путем рационального управления его ресурсами. ОС как расширенная машина Использование большинства компьютеров на уровне машинного языка затруднительно, особенно это касается ввода-вывода. Например, для организации чтения блока данных с гибкого диска программист может использовать 16 различных команд, каждая из которых требует 13 параметров, таких как номер блока на диске, номер сектора на дорожке и т. п. Когда выполнение операции с диском завершается, контроллер возвращает 23 значения, отражающих наличие и типы ошибок, которые, очевидно, надо анализировать. Даже если не входить в курс реальных проблем программирования ввода-вывода, ясно, что среди программистов нашлось бы не много желающих непосредственно заниматься программированием этих операций. При работе с диском программисту-пользователю достаточно представлять его в виде некоторого набора файлов, каждый из которых имеет имя. Работа с файлом заключается в его открытии, выполнении чтения или записи, а затем в закрытии файла. Вопросы подобные таким, как следует ли при записи использовать усовершенствованную частотную модуляцию или в каком состоянии сейчас находится двигатель механизма перемещения считывающих головок, не должны волновать пользователя. Программа, которая скрывает от программиста все реалии аппаратуры и предоставляет возможность простого, удобного просмотра указанных файлов, чтения или записи - это, конечно, операционная система. Точно так же, как ОС ограждает программистов от аппаратуры дискового накопителя и предоставляет ему простой файловый интерфейс, операционная система берет на себя все малоприятные дела, связанные с обработкой прерываний, управлением таймерами и оперативной памятью, а также другие низкоуровневые проблемы. В каждом случае та абстрактная, воображаемая машина, с которой, благодаря операционной системе, теперь может иметь 5 дело пользователь, гораздо проще и удобнее в обращении, чем реальная аппаратура, лежащая в основе этой абстрактной машины. С этой точки зрения функцией ОС является предоставление пользователю некоторой расширенной или виртуальной машины, которую легче программировать и с которой легче работать, чем непосредственно с аппаратурой, составляющей реальную машину. ОС как система управления ресурсами Идея о том, что ОС, прежде всего система, обеспечивающая удобный интерфейс пользователям, соответствует рассмотрению сверху вниз. Другой взгляд, снизу вверх, дает представление об ОС как о некотором механизме, управляющем всеми частями сложной системы. Современные вычислительные системы состоят из процессоров, памяти, таймеров, дисков, накопителей на магнитных лентах, сетевых коммуникационной аппаратуры, принтеров и других устройств. В соответствии со вторым подходом функцией ОС является распределение процессоров, памяти, устройств и данных между процессами, конкурирующими за эти ресурсы. ОС должна управлять всеми ресурсами вычислительной машины таким образом, чтобы обеспечить максимальную эффективность ее функционирования. Критерием эффективности может быть, например, пропускная способность или реактивность системы. Управление ресурсами включает решение двух общих, не зависящих от типа ресурса задач: планирование ресурса - то есть определение, кому, когда, а для делимых ресурсов и в каком количестве, необходимо выделить данный ресурс; отслеживание состояния ресурса - то есть поддержание оперативной информации о том, занят или не занят ресурс, а для делимых ресурсов какое количество ресурса уже распределено, а какое свободно. Для решения этих общих задач управления ресурсами разные ОС используют различные алгоритмы, что, в конечном счете, и определяет их облик в целом, включая характеристики производительности, область применения и даже пользовательский интерфейс. Так, например, алгоритм управления процессором в значительной степени определяет, является ли ОС системой разделения времени, системой пакетной обработки или системой реального времени. Классификация ОС Операционные системы могут различаться особенностями реализации внутренних алгоритмов управления основными ресурсами компьютера (процессорами, памятью, устройствами), особенностями использованных методов проектирования, типами аппаратных платформ, областями использования и многими другими свойствами. 6 Ниже приведена классификация ОС по нескольким наиболее основным признакам. Особенности алгоритмов управления ресурсами От эффективности алгоритмов управления локальными ресурсами компьютера во многом зависит эффективность всей сетевой ОС в целом. Поэтому, характеризуя сетевую ОС, часто приводят важнейшие особенности реализации функций ОС по управлению процессорами, памятью, внешними устройствами автономного компьютера. Так, например, в зависимости от особенностей использованного алгоритма управления процессором, операционные системы делят на многозадачные и однозадачные, многопользовательские и однопользовательские, на системы, поддерживающие многонитевую обработку и не поддерживающие ее, на многопроцессорные и однопроцессорные системы. Поддержка многозадачности. По числу одновременно выполняемых задач операционные системы могут быть разделены на два класса: однозадачные (например, MS-DOS, MSX) и многозадачные (OC EC, OS/2, UNIX, Windows 95). Однозадачные ОС в основном выполняют функцию предоставления пользователю виртуальной машины, делая более простым и удобным процесс взаимодействия пользователя с компьютером. Однозадачные ОС включают средства управления периферийными устройствами, средства управления файлами, средства общения с пользователем. Многозадачные ОС, кроме вышеперечисленных функций, управляют разделением совместно используемых ресурсов, таких как процессор, оперативная память, файлы и внешние устройства. Поддержка многопользовательского режима. По числу одновременно работающих пользователей ОС делятся на: однопользовательские (MS-DOS, Windows 3.x, ранние версии OS/2); многопользовательские (UNIX, Windows NT). Главным отличием многопользовательских систем от однопользовательских является наличие средств защиты информации каждого пользователя от несанкционированного доступа других пользователей. Следует заметить, что не всякая многозадачная система является многопользовательской, и не всякая однопользовательская ОС является однозадачной. Вытесняющая и невытесняющая многозадачность. Важнейшим разделяемым ресурсом является процессорное время. Способ распределения процессорного времени между несколькими одновременно существующими в системе процессами (или нитями) во многом определяет специфику ОС. Среди множества существующих вариантов реализации многозадачности можно выделить две группы алгоритмов: невытесняющая многозадачность (NetWare, Windows 3.x); вытесняющая многозадачность (Windows NT, OS/2, UNIX). 7 Основным различием между вытесняющим и невытесняющим вариантами многозадачности является степень централизации механизма планирования процессов. В первом случае механизм планирования процессов целиком сосредоточен в операционной системе, а во втором распределен между системой и прикладными программами. При невытесняющей многозадачности активный процесс выполняется до тех пор, пока он сам, по собственной инициативе, не отдаст управление операционной системе для того, чтобы та выбрала из очереди другой готовый к выполнению процесс. При вытесняющей многозадачности решение о переключении процессора с одного процесса на другой принимается операционной системой, а не самим активным процессом. Поддержка многонитевости. Важным свойством операционных систем является возможность распараллеливания вычислений в рамках одной задачи. Многонитевая ОС разделяет процессорное время не между задачами, а между их отдельными ветвями (нитями). Многопроцессорная обработка. Другим важным свойством ОС является отсутствие или наличие в ней средств поддержки многопроцессорной обработки мультипроцессирование. Мультипроцессирование приводит к усложнению всех алгоритмов управления ресурсами. В наши дни становится общепринятым введение в ОС функций поддержки многопроцессорной обработки данных. Такие функции имеются в операционных системах Solaris 2.x фирмы Sun, Open Server 3.x компании Santa Crus Operations, OS/2 фирмы IBM, Windows NT фирмы Microsoft и NetWare 4.1 фирмы Novell. Многопроцессорные ОС могут классифицироваться по способу организации вычислительного процесса в системе с многопроцессорной архитектурой: асимметричные ОС и симметричные ОС. Асимметричная ОС целиком выполняется только на одном из процессоров системы, распределяя прикладные задачи по остальным процессорам. Симметричная ОС полностью децентрализована и использует весь пул процессоров, разделяя их между системными и прикладными задачами. Выше были рассмотрены характеристики ОС, связанные с управлением только одним типом ресурсов - процессором. Важное влияние на облик операционной системы в целом, на возможности ее использования в той или иной области оказывают особенности и других подсистем управления локальными ресурсами - подсистем управления памятью, файлами, устройствами ввода-вывода. Специфика ОС проявляется и в том, каким образом она реализует сетевые функции: распознавание и перенаправление в сеть запросов к удаленным ресурсам, передача сообщений по сети, выполнение удаленных запросов. При реализации сетевых функций возникает комплекс задач, связанных с распределенным характером хранения и обработки данных в сети: ведение справочной информации обо всех доступных в сети ресурсах и серверах, адресация взаимодействующих процессов, обеспечение 8 прозрачности доступа, тиражирование поддержка безопасности данных. данных, согласование копий, Особенности аппаратных платформ На свойства операционной системы непосредственное влияние оказывают аппаратные средства, на которые она ориентирована. По типу аппаратуры различают операционные системы персональных компьютеров, мини-компьютеров, мейнфреймов, кластеров и сетей ЭВМ. Среди перечисленных типов компьютеров могут встречаться как однопроцессорные варианты, так и многопроцессорные. В любом случае специфика аппаратных средств, как правило, отражается на специфике операционных систем. Очевидно, что ОС большой машины является более сложной и функциональной, чем ОС персонального компьютера. Так в ОС больших машин функции по планированию потока выполняемых задач, очевидно, реализуются путем использования сложных приоритетных дисциплин и требуют большей вычислительной мощности, чем в ОС персональных компьютеров. Аналогично обстоит дело и с другими функциями. Сетевая ОС имеет в своем составе средства передачи сообщений между компьютерами по линиям связи, которые совершенно не нужны в автономной ОС. На основе этих сообщений сетевая ОС поддерживает разделение ресурсов компьютера между удаленными пользователями, подключенными к сети. Для поддержания функций передачи сообщений сетевые ОС содержат специальные программные компоненты, реализующие популярные коммуникационные протоколы, такие как IP, IPX, Ethernet и другие. Многопроцессорные системы требуют от операционной системы особой организации, с помощью которой сама операционная система, а также поддерживаемые ею приложения могли бы выполняться параллельно отдельными процессорами системы. Параллельная работа отдельных частей ОС создает дополнительные проблемы для разработчиков ОС, так как в этом случае гораздо сложнее обеспечить согласованный доступ отдельных процессов к общим системным таблицам, исключить эффект гонок и прочие нежелательные последствия асинхронного выполнения работ. Другие требования предъявляются к операционным системам кластеров. Кластер - слабо связанная совокупность нескольких вычислительных систем, работающих совместно для выполнения общих приложений, и представляющихся пользователю единой системой. Наряду со специальной аппаратурой для функционирования кластерных систем необходима и программная поддержка со стороны операционной системы, которая сводится в основном к синхронизации доступа к разделяемым ресурсам, обнаружению отказов и динамической реконфигурации системы. Одной из первых разработок в области кластерных технологий были решения компании Digital Equipment на базе компьютеров VAX. Недавно этой 9 компанией заключено соглашение с корпорацией Microsoft о разработке кластерной технологии, использующей Windows NT. Несколько компаний предлагают кластеры на основе UNIX-машин. Наряду с ОС, ориентированными на совершенно определенный тип аппаратной платформы, существуют операционные системы, специально разработанные таким образом, чтобы они могли быть легко перенесены с компьютера одного типа на компьютер другого типа, так называемые мобильные ОС. Наиболее ярким примером такой ОС является популярная система UNIX. В этих системах аппаратно-зависимые места тщательно локализованы, так что при переносе системы на новую платформу переписываются только они. Средством, облегчающем перенос остальной части ОС, является написание ее на машинно-независимом языке, например, на С, который и был разработан для программирования операционных систем. Особенности областей использования Многозадачные ОС подразделяются на три типа в соответствии с использованными при их разработке критериями эффективности: системы пакетной обработки (например, OC EC), системы разделения времени (UNIX, VMS), системы реального времени (QNX, RT/11). Системы пакетной обработки предназначались для решения задач в основном вычислительного характера, не требующих быстрого получения результатов. Главной целью и критерием эффективности систем пакетной обработки является максимальная пропускная способность, то есть решение максимального числа задач в единицу времени. Для достижения этой цели в системах пакетной обработки используются следующая схема функционирования: в начале работы формируется пакет заданий, каждое задание содержит требование к системным ресурсам; из этого пакета заданий формируется мультипрограммная смесь, то есть множество одновременно выполняемых задач. Для одновременного выполнения выбираются задачи, предъявляющие отличающиеся требования к ресурсам, так, чтобы обеспечивалась сбалансированная загрузка всех устройств вычислительной машины; так, например, в мультипрограммной смеси желательно одновременное присутствие вычислительных задач и задач с интенсивным вводом-выводом. Таким образом, выбор нового задания из пакета заданий зависит от внутренней ситуации, складывающейся в системе, то есть выбирается "выгодное" задание. Следовательно, в таких ОС невозможно гарантировать выполнение того или иного задания в течение определенного периода времени. В системах пакетной обработки переключение процессора с выполнения одной задачи на выполнение другой происходит только в случае, если активная задача сама отказывается от процессора, например, изза необходимости выполнить операцию ввода-вывода. Поэтому одна задача 10 может надолго занять процессор, что делает невозможным выполнение интерактивных задач. Таким образом, взаимодействие пользователя с вычислительной машиной, на которой установлена система пакетной обработки, сводится к тому, что он приносит задание, отдает его диспетчеруоператору, а в конце дня после выполнения всего пакета заданий получает результат. Очевидно, что такой порядок снижает эффективность работы пользователя. Системы разделения времени призваны исправить основной недостаток систем пакетной обработки - изоляцию пользователя-программиста от процесса выполнения его задач. Каждому пользователю системы разделения времени предоставляется терминал, с которого он может вести диалог со своей программой. Так как в системах разделения времени каждой задаче выделяется только квант процессорного времени, ни одна задача не занимает процессор надолго, и время ответа оказывается приемлемым. Если квант выбран достаточно небольшим, то у всех пользователей, одновременно работающих на одной и той же машине, складывается впечатление, что каждый из них единолично использует машину. Ясно, что системы разделения времени обладают меньшей пропускной способностью, чем системы пакетной обработки, так как на выполнение принимается каждая запущенная пользователем задача, а не та, которая "выгодна" системе, и, кроме того, имеются накладные расходы вычислительной мощности на более частое переключение процессора с задачи на задачу. Критерием эффективности систем разделения времени является не максимальная пропускная способность, а удобство и эффективность работы пользователя. Системы реального времени применяются для управления различными техническими объектами, такими, например, как станок, спутник, научная экспериментальная установка или технологическими процессами, такими, как гальваническая линия, доменный процесс и т.п. Во всех этих случаях существует предельно допустимое время, в течение которого должна быть выполнена та или иная программа, управляющая объектом, в противном случае может произойти авария: спутник выйдет из зоны видимости, экспериментальные данные, поступающие с датчиков, будут потеряны, толщина гальванического покрытия не будет соответствовать норме. Таким образом, критерием эффективности для систем реального времени является их способность выдерживать заранее заданные интервалы времени между запуском программы и получением результата (управляющего воздействия). Это время называется временем реакции системы, а соответствующее свойство системы - реактивностью. Для этих систем мультипрограммная смесь представляет собой фиксированный набор заранее разработанных программ, а выбор программы на выполнение осуществляется исходя из текущего состояния объекта или в соответствии с расписанием плановых работ. Некоторые операционные системы могут совмещать в себе свойства систем разных типов, например, часть задач, может выполняться в режиме пакетной обработки, а часть - в режиме реального времени или в режиме 11 разделения времени. В таких случаях режим пакетной обработки часто называют фоновым режимом. 12 Особенности методов построения При описании операционной системы часто указываются особенности ее структурной организации и основные концепции, положенные в ее основу. К таким базовым концепциям относятся: Способы построения ядра системы - монолитное ядро или микроядерный подход. Большинство ОС использует монолитное ядро, которое компонуется как одна программа, работающая в привилегированном режиме и использующая быстрые переходы с одной процедуры на другую, не требующие переключения из привилегированного режима в пользовательский и наоборот. Альтернативой является построение ОС на базе микроядра, работающего также в привилегированном режиме и выполняющего только минимум функций по управлению аппаратурой, в то время как функции ОС более высокого уровня выполняют специализированные компоненты ОС - серверы, работающие в пользовательском режиме. При таком построении ОС работает более медленно, так как часто выполняются переходы между привилегированным режимом и пользовательским, зато система получается более гибкой - ее функции можно наращивать, модифицировать или сужать, добавляя, модифицируя или исключая серверы пользовательского режима. Кроме того, серверы хорошо защищены друг от друга, как и любые пользовательские процессы. Построение ОС на базе объектно-ориентированного подхода дает возможность использовать все его достоинства, хорошо зарекомендовавшие себя на уровне приложений, внутри операционной системы, а именно: аккумуляцию удачных решений в форме стандартных объектов, возможность создания новых объектов на базе имеющихся с помощью механизма наследования, хорошую защиту данных за счет их инкапсуляции во внутренние структуры объекта, что делает данные недоступными для несанкционированного использования извне, структуризованность системы, состоящей из набора хорошо определенных объектов. Наличие нескольких прикладных сред дает возможность в рамках одной ОС одновременно выполнять приложения, разработанные для нескольких ОС. Многие современные операционные системы поддерживают одновременно прикладные среды MS-DOS, Windows, UNIX (POSIX), OS/2 или хотя бы некоторого подмножества из этого популярного набора. Концепция множественных прикладных сред наиболее просто реализуется в ОС на базе микроядра, над которым работают различные серверы, часть которых реализуют прикладную среду той или иной операционной системы. 13 Распределенная организация операционной системы позволяет упростить работу пользователей и программистов в сетевых средах. В распределенной ОС реализованы механизмы, которые дают возможность пользователю представлять и воспринимать сеть в виде традиционного однопроцессорного компьютера. Характерными признаками распределенной организации ОС являются: наличие единой справочной службы разделяемых ресурсов, единой службы времени, использование механизма вызова удаленных процедур (RPC) для прозрачного распределения программных процедур по машинам, многонитевой обработки, позволяющей распараллеливать вычисления в рамках одной задачи и выполнять эту задачу сразу на нескольких компьютерах сети, а также наличие других распределенных служб. 14 ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ ПО ВВЕДЕНИЮ В ОС 1.Основные функции ОС а) обеспечение пользователю-программисту удобств посредством предоставления для него расширенной машины б) повышение эффективности использования компьютера путем рационального управления его ресурсами в) предоставление пользователю профессиональных настроек операционной системы путем различных утилит 2. На какие два класса могут быть разделены операционные системы по числу одновременно выполняемых задач? а) однотипные и многотипные; б) однозадачные и многозадачные; в) однопользовательские и многопользовательские; г) все варианты верны. 3. На какие типы подразделяются многозадачные ОС? а) системы пакетной обработки (например, OC EC), б) системы разделения времени (UNIX, VMS), в) системы реального времени (QNX, RT/11). г) все варианты верны; 4. Что такое мультипроцессирование? а) активное состояние процесса, во время которого процесс обладает всеми необходимыми ресурсами и непосредственно выполняется процессором; б) абстракция, описывающая выполняющуюся программу; в) отсутствие или наличие в ОС средств поддержки многопроцессорной обработки. г) часть программы, в которой осуществляется доступ к разделяемым данным. 15 ЛЕКЦИЯ 2. “Инсталляция и конфигурирование операционной системы, начальная загрузка. Расширение возможностей пользователя по автоматической установке и переустановке ОС WINDOWS” Установка ОС Windows: Если мы часто переустанавливаем Windows или хотим установить его на несколько компьютеров с одинаковой конфигурацией, то было бы вполне логично использовать какую-либо программу, которая сама установит Windows. Такую возможность предоставляет стандартная программа установки. Вначале нужно создать файл msbatch.inf, а затем, при запуске setup.exe, указать этот файл в качестве параметра, например, "e:\win\setup.exe c:\temp\msbatch.inf". Благодаря этой строке Windows будет устанавливаться в автоматическом, или полуавтоматическом режиме, в зависимости от установок. Как повысить производительность Windows Установка Windows 9X не обеспечивает автоматического достижения максимальной производительности операционной системы. Поэтому, чтобы добиться максимальной производительности Windows, после установки операционной системы и всех необходимых приложений, проведите ее оптимизацию: Запустите утилиту "Настройка запуска программ" (Winalign), выполнив следующие действия: Пуск -> Выполнить -> C:\Windows\System\Walign.exe -> ОК Эта утилита адаптирует приложения, занесенные в специальный список Microsoft, которые, по мнению самой Microsoft, совместимы с методами оптимизации запуска. Запустите каждое из оптимизируемых приложений не менее четырех раз. Это позволит утилите "Монитор задач" (Taskmon), выполняемой в фоновом режиме, исследовать данные приложения и отследить используемые в работе файлы, а также порядок их загрузки. Запустите утилиту "Дефрагментация диска" (Defrag), выполнив следующие действия: Пуск -> Программы -> Стандартные -> Служебные -> Дефрагментация диска Эта утилита перезаписывает файлы в том порядке, в котором их считывают приложения, что позволяет сократить время загрузки файлов, запрашиваемых этими приложениями. Преобразуйте файловую систему в формат размещения файлов FAT-32. По сравнению с файловой системой формата FAT-16, формат FAT-32 16 предлагает более эффективный способ хранения информации на жестком диске. Обычно при преобразовании хранящейся на жестком диске информации из FAT-16 в FAT-32 высвобождается до 15-25% дискового пространства. Еще важнее то, что FAT-32 хранит данные в кластерах размером 4 Кбайт. Эти кластеры имеют тот же размер, что и страницы, которые Windows использует для работы с памятью. Примечание: После преобразования файловой системы в FAT-32 Windows автоматически запустит утилиту "Дефрагментация диска" (Defrag). Конфигурирование ОС при помощи утилиты msconfig. Утилита msconfig используется для настройки ОС. Рассмотрим на примере автозагрузки: Чтобы отредактировать список приложений, запускаемых при загрузке Windows, нужно нажать кнопку Start (Пуск) -> Run (Выполнить). Теперь в поле ввода наберём текст "msconfig" и нажмём ОК или клавишу Enter. Появится окно программы настроек. Кликнем на закладке "Автозагрузка" в верхнем правом углу окна. Список, который вы видите - это все или почти все программы, запускаемые при загрузке системы. Чтобы отменить запуск приложения, нужно снять галочку с соответствующей отметки. Данная утилита есть в Windows 95,98,XP, но отсутствует в Windows 2000 . 17 Программа настройки системы (Msconfig.exe) автоматизирует стандартные шаги по устранению неполадок, выполняемые специалистами технической поддержки корпорации Майкрософт при выявлении неполадок в настройке Windows. Данная программа позволяет изменять конфигурацию системы путем отключения некоторых компонентов с помощью флажков, что снижает риск опечаток при работе с текстом системных файлов. С помощью программы восстановления системы можно отменять изменения, вредно влияющие на работу компьютера. Если возникла неполадка следует создать чистую среду для устранения неполадок На вкладке Общие выбрать Диагностический запуск -> загрузка только основных драйверов и основных запуск служб, нажать кнопку OK, а затем нажать кнопку Перезагрузка, чтобы перезагрузить компьютер. После запуска Windows проверить, остались ли признаки неполадок. Если неполадки продолжают возникать после выполнения тестового запуска, следует рассмотреть следующие возможные причины. Отсутствует, поврежден или заменен системный файл. Данная возможность проверяется с помощью программы проверки системных файлов. Поврежден реестр. Данная возможность проверяется с помощью программы проверки реестра. Компьютер поражен вирусом. Обновление предыдущей версии Windows было выполнено неудачно. Здесь следует остановиться на файлах CONFIG.SYS и AUTOEXEC.BAT Рассмотрим файлы AUTOEXEC.BAT и CONFIG.SYS. Как известно, эти файлы отвечают за пользовательскую конфигурацию системы, выполняемую 18 при запуске ОС. Являются «тяжелым наследием» MS-DOS и подобных ей клонов, сейчас играют существенную роль только в ОС MS Windows 95/98. В Windows NT для поддержки DOS-приложений существуют файлы AUTOEXEC.NT и CONFIG.NT со схожим синтаксисом, которые выполняют функции по инициализации виртуальной машины DOS, но на общую конфигурацию системы не влияют. При установке Windows эти файлы конфигурируются по умолчанию, но, тем не менее, бывает необходимо их доработать. Начнем с файла CONFIG.SYS, так как он анализируется системой первым. Я привожу собственный вариант, который обычно подходит для большинства компьютеров, хотя каждый конкретный случай может вносить свои коррективы (Ключевое слово REM означает комментарий перед поясняемой командой). REM Файл конфигурации CONFIG.SYS - примерный вариант. REM Листинг корректен и подходит для непосредственного использования. REM Устанавливаем поддержку верхней и расширенной памяти, REM требуемой для загрузки Windows. Считается, что Windows делает REM это по умолчанию, но вручную всегда лучше. DEVICE=C:\WINDOWS\HIMEM.SYS DEVICE=C:\WINDOWS\EMM386.EXE NOEMS REM Загружаем DOS (и Windows) в верхнюю память. DOS=HIGH, UMB REM Устанавливаем параметры «число одновременно открытых файлов» REM и «последний диск» и загружаем их в верхнюю память, используя, REM например, FILESHIGH вместо FILES. Число файлов для современных REM компьютеров должно быть не меньше 60. FILESHIGH=100 LASTDRIVEHIGH=E REM Команда DEVICEHIGH пытается загрузить драйвер в верхнюю память, REM используем ее вместо команды DEVICE. Следующие две строки REM присутствуют по умолчанию. Их лучше не изменять. DEVICEHIGH=C:\WINDOWS\COMMAND\DISPLAY.SYS CON=(EGA,,1) COUNTRY=007,866,C:\WINDOWS\COMMAND\COUNTRY.SYS REM Далее загружаем драйвер CD-ROM, причем он обычно индивидуален для REM каждой марки устройства. В нашем случае это IDECD.SYS. Если этот REM вариант не подходит, можно создать загрузочную дискету Windows, REM которая поддерживает CD-ROM. DEVICEHIGH=C:\WINDOWS\COMMAND\IDECD.SYS /D:MSCD001 /P:170,15 REM Команда INSTALL (INSTALLHIGH) загружает резидентную програм REM память. Можно использовать ее вместо строки в файле AUTOEXEC.BAT. REM Мы загружаем драйвер мыши. INSTALLHIGH=C:\WINDOWS\MOUSE.EXE /Q 19 REM Аналогично можно загрузить и поддержку CD-ROM, для этого снимите REM комментарий cо следующей строки (Напомню, что для каждого устройства REM есть свой драйвер, и что можно воспользоваться загрузочной дискетой REM для Windows). Можно поместить вызов утилиты MSCDEX.EXE в файл REM AUTOEXEC.BAT и не дублировать его здесь. REM INSTALLHIGH=C:\WINDOWS\COMMAND\MSCDEX.EXE /D:MSCD001 /L:D Аналогично производится настройка файла AUTOEXEC.BAT, где, как правило, помещаются вызовы резидентных и других программ и определение переменной PATH. @REM Файл конфигурации AUTOEXEC.BAT - примерный вариант. @REM Листинг корректен и подходит для непосредственного использования. @REM Перед каждой строкой ставим «собаку», чтобы отключить вывод команд @REM на экран (не обязательно, но красиво). @ECHO OFF @REM Следующие три строчки загружают стандартные русские шрифты и @REM переключатель раскладок клавиатуры. Мне он кажется очень неудобным, @REM поэтому при первой же возможности я заменяю их на вызов моего @REM любимого русификатора - RKM. @MODE CON CODEPAGE PREPARE=((866) C:\WINDOWS\COMMAND\EGA3.CPI) @MODE CON CODEPAGE SELECT=866 @KEYB RU,,C:\WINDOWS\COMMAND\KEYBRD3.SYS @REM Устанавливаем переменную PATH. По умолчанию Windows использует @REM PATH=C:\Windows;C:\Windows\Command;C:\Windows\System. Величина @REM %PATH% (смотри ниже) позволяет сохранить предыдущее значение PATH @REM и добавить пользовательский вариант. Путь обязательно должен @REM приводиться к формату 8.3 во избежание ошибок! @PATH=%PATH%;C:\UTILITES\VC;C:\UTILITES\ARCHIVE;C:\PROGRA~1 \COMMON @REM Теперь можно указать список программ, активизируемых при запуске @REM системы, например, CD-ROM и акселератор клавиатуры. @C:\WINDOWS\COMMAND\MSCDEX.EXE /D:MSCD001 /L:D @C:\UTILITES\TURBO\TURBOKEY.COM /ON При различных неполадках системы можно регулировать дополнительные параметры этих файлов или загружать драйверы, расширяющие возможности ОС. Для полноты картины и знакомства со всеми доступными параметрами просмотрите файлы CONFIG.TXT и 20 MSDOSDRV.TXT, находящиеся в каталоге установки ОС Windows. Конфигурация файла AUTOEXEC.BAT может быть аналогична конфигурации файла DOSSTART.BAT, исполняемого системой при переходе из графической оболочки Windows в режим эмуляции MS-DOS. Возможности улучшенной поддержки сетей и коммуникаций: Средство Описание Спецификация NDIS 5.0 NDIS предусматривает возможность работы любого транспортного протокола с любой сетевой платой. NDIS 5.0 несколько модернизирован по сравнению с прежними спецификациями NDIS, например, появилась возможность автоматической повторной привязки протокола при изменении сетевого кабеля, а так же поддержка OnNow и ACPI Windows Sockets 2.0 (WinSock 2.0) Предоставляет одновременный доступ к нескольким сетевым протоколам. В отличие от версии 1.1, ориентированной на TCP/IP, новый API не зависит от протокола Позволяет управлять сетями масштаба Управление на основе WEB предприятия с помощью браузера, а так (WBEM) же в корне различными сетям, приложениям, компьютерам и средствам управления системами работать вместе. WBEM дает возможность разрабатывать средства, упрощающие и удешевляющие управление предприятием Протокол RSVP (Resource Reservation Protocol) Позволяет запрашивать определенную полосу пропускания сети для передачи сложных данных Цифровые сети ISDN Обеспечивают высокоскоростную, полностью цифровую передачу различных данных по одному каналу Многоканальный протокол PPP Увеличивает полосу пропускания за счет объединения нескольких физических каналов, например, при одновременном 21 использовании двух или более модемов Протокол IrDA версии 3.0 Обеспечивает поддержку инфракрасных каналов связи Распределенная файловая система DFS (Distributed File System) Обрабатывает и отображает сетевые ресурсы как единую структуру независимо от места хранения данных Интерактивные командные и конфигурационные файлы Здесь рассматриваются лишь методы написания интерактивных командных и конфигурационных файлов, то есть реагирующих на различные команды пользователя. Они обычно используются при мультизагрузке различных конфигураций или программ. Для начала обратимся к файлу CONFIG.SYS. Предлагаемая методика изначально использовалась при работе с загрузочным диском Windows 98. Учтите, что предлагаемое решение применимо только для файла CONFIG.SYS! REM Интерактивный конфигурационный файл. REM Листинг корректен и подходит для непосредственного использования. [MENU] REM Указываем список пунктов меню (идентификатор и текст элемента). MENUITEM=ITEM_1, Select and execute Item 1 MENUITEM=ITEM_2, Select and execute Item 2 MENUITEM=ITEM_3, Select and execute Item 3 REM Указываем элемент по умолчанию и задержку по времени (30 секунд). MENUDEFAULT=ITEM_1, 30 REM Указываем цвета меню. MENUCOLOR=7,0 [ITEM_1] REM Описываем элемент 1, используя все доступные команды для файла REM конфигурации CONFIG.SYS. DEVICE=C:\WINDOWS\HIMEM.SYS [ITEM_2] REM Описываем элемент 2, используя все доступные команды для файла REM конфигурации CONFIG.SYS. DEVICE=C:\WINDOWS\COMMAND\IDECD.SYS /D:MSCD001 /P:170,15 [ITEM_3] REM Описываем элемент 3, используя все доступные команды для файла 22 REM конфигурации CONFIG.SYS. DEVICE=C:\WINDOWS\COMMAND\RAMDRIVE.SYS /E 4096 [COMMON] REM Описываем общие параметры, используя все доступные команды для REM файла конфигурации CONFIG.SYS. FILES=40 BUFFERS=10 DOS=HIGH, UMB Все интерактивные командные файлы (включая, конечно, и AUTOEXEC.BAT) формируются по совершенно другому принципу. Мы будем использовать алгоритмический «псевдоязык» команд MS-DOS. @REM Интерактивный командный файл. @REM Листинг подходит для непосредственного использования. @REM @REM С помощью команд CLS (очистка экрана) и ECHO (вывод строки) @REM формируем приглашение пользователю. @CLS @ECHO Для выбора элемента меню нажмите соответствующую цифру: @ECHO 1 - выполнение элемента 1 @ECHO 2 - выполнение элемента 2 @ECHO 3 - выполнение элемента 3 @REM Процедура CHOICE осуществляет выбор из указанных параметров ввода, например, /c:123. Кроме этого, она может выводить строку. @CHOICE /c:123 Ваш выбор: @REM Анализируем выбор, всегда начиная с последнего варианта. @REM Команда ERRORLEVEL работает со значением, возвращаемым @REM любой программой после ее завершения. @IF ERRORLEVEL 3 GOTO LABEL_3 @IF ERRORLEVEL 2 GOTO LABEL_2 @IF ERRORLEVEL 1 GOTO LABEL_1 :LABEL_3 @REM Выполняем какие-нибудь действия и переходим к концу файла, @REM в противном случае все команды выполнятся подряд. @ECHO Был выбран элемент 3 @GOTO LABEL_END :LABEL_2 @REM Выполняем какие-нибудь действия и переходим к концу файла, @REM в противном случае все команды выполнятся подряд. @ECHO Был выбран элемент 2 @GOTO LABEL_END :LABEL_1 23 @REM Выполняем какие-нибудь действия и автоматически переходим @REM к концу файла, так как больше альтернативных операторов нет. @ECHO Был выбран элемент 1 :LABEL_END @ECHO Завершение работы пакетного файла Все предлагаемые примеры корректны и могут работать непосредственно после копирования в командный (пакетный) файл - вероятно только потребуется изменить пути к некоторым исполняемым файлам. Следует обратить внимание, что утилиты CHOICE (файл CHOICE.COM) может не оказаться на вашем компьютере. Подробнее о командах DOS можно узнать из соответствующей документации, например, TECH! HELP для MS DOS 5.0 или 6.22. Команды управления Windows, использующие "rundll32" При вводе 32-битной управляющей (shell32), необходимо обращать внимание на состояние регистра (заглавные буквы) КОМАНДА РАБОТА rundll32 user,exitwindows Завершение работы Windows rundll32 user,wnetconnectdialog Окно "Подключение сетевого диска" Вызвать rundll32 user,disableoemlayer Сбой провоцировать rundll32 user,repaintscreen Обновить (как <F5>) rundll32 user,setcursorpos Maus-Cursor слева вверх посадить rundll32 diskcopy,DiskCopyRunDll Окно "Copy Disk" вызвать rundll32 rnaui.dll,RnaWizard /1 Диалог "Установка Связи" вызвать (/1 = без окна) rundll32 shell,shellexecute Explorer-Окно открыть в корневом каталоге rundll32 shell32,OpenAs_RunDLL Окно "Открыть с помощью..." вызвать*** rundll32 shell32,SHFormatDrive Окно "Форматирование: Диск3,5(А)" вызвать rundll32 shell32,ShellAboutA Info-Box (о Windows) вызвать 24 rundll32 shell32,SHExitWindowsEx 0 Windows 98 заново стартануть (без autoexec.bat и др.) rundll32 shell32,SHExitWindowsEx 1 Работу с Windows 98 закончить rundll32 shell32,SHExitWindowsEx 2 Windows-98-PC boot rundll32 shell32,SHExitWindowsEx -1 Windows-98-Explorer стартануть заново rundll32 shell32,Control_RunDLL Открыть окно "Панель управления" rundll32 shell32,Control_RunDLL desk.cpl Открыть "Свойства Экрана" rundll32 shell32,Control_RunDLL main.cpl @<n> Открыть Modul-Панели управления из MAIN.CPL ** rundll32 krnl386.exe,exitkernel выход из Windows без любых сообщений/вопросов rundll32 user,swapmousebutton "Переставить" клавиши мыши * rundll32 keyboard,disable "Отключить" клавиатуру * rundll32 mouse,disable "Отключить" мышь * rundll rnaui.dll,RnaDial "провайдер" Вызвать окно "Установка связи" с именем "провайдер" rundll32 user,tilechildwindows выстроить все не свёрнутые окна сверху вниз rundll32 sysdm.cpl,InstallDevice_Rundll (единств. возможность в W98) установить non-Plug&Play оборудование rundll32 msprint2.dll,RUNDLL_PrintTestPage выбрать в появившемся меню принтер и послать а него тест rundll32 user,setcaretblinktime <n> установить новую частоту <n> мигания курсора * 25 rundll32 user, setdoubleclicktime <n> установить новую скорость <n> двойного нажатия * rundll32 setupx.dll,InstallHinfSection DefaultInstall 130; C:\file.inf окно "Перезапуск системы. Произвести её сейчас ? · Да/нет ·" **** * обратные / повторные ("enable") команды не работают ** : 0=Maus, 1=Keyboard, 2=Printer, 3=Fonts, 4=Energie *** при желании "завязать" программу для расширения *.XSN , необходимо подставить в строку имя файла (rundll32.exe shell32.dll,OpenAs_RunDLL file.XSN) **** минимальный формат файла "file.inf" : при замене "130" на "132" произойдёт исталляция "file.inf" 26 ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ ПО УСТАНОВКЕ ОС WINDOWS 1. Благодаря чему Windows будет устанавливаться в автоматическом, или полуавтоматическом режиме, в зависимости от установоки: а) "e:\win\uninstal.exe c:\temp\msbatch.inf" б) "e:\win\setup.exe c:\temp\msbatch.inf" в) "e:\win\setup.com c:\temp\msbatch.inf" г) "e:\win\msconfig.exe c:\temp\msbatch.inf" 2. Для повышения максимальной необходимо запустите утилиту производительности Windows а) Winalign.exe б) fdisc.com в) format c: г) wincmd32.exe 3. Какая из утилит предназначена для перезаписи файлов в том порядке, в котором их считывают приложения, что позволяет сократить время загрузки файлов, запрашиваемых этими приложениями: а) Отчистка диска б) Восстановление системы в) Архивация данных г) Дефрагментация диска 4. Во сколько раз по сравнению с файловой системой формата FAT-16, формат FAT-32 предлагает более эффективный способ хранения информации на жестком диске а) около 5% дискового пространства б) свыше 40% дискового пространства в) до 15-25% дискового пространства г) до 40% дискового пространства 5. файловой системой формата FAT-32 хранит данные в кластерах размером а) 10 Кбайт б) 4 Кбайт в) 9 Кбайт г) 16 Кбайт 27 6. При помощи какой программы можно изменять конфигурацию системы путем отключения некоторых компонентов. Название. а) msdos б) psconfig в) msconfig г) skonffig 7. Для того чтобы отредактировать список приложений запускаемых при загрузки Windows, нужно нажать: а) Start (Пуск) -> Run (Выполнить) б) Мой компьютер -> Проводник в) Start (Пуск) -> regedit г) Диск С: -> свойства 28 Лекция 3 “Системный РЕЕСТР как основа обеспечения жизнеспособности системы” В последнее время из уст молодых людей, пользующихся компьютером, можно частенько услышать фразы типа "Windows - MUST DIE, UNIX COOL". Причем кричат об этом, как правило, люди сидящие под этим самым Windows-ом, а UNIX видевшие пару раз у соседа-программера. В чем же причина такой "нелюбви" к самой распространенной операционной системе? Многие скажут, что проблема Windows в огромном количестве дырок, служащих для атаки хакеров на удаленные машины. Но ведь в UNIXсистемах дырок ничуть не меньше, и неграмотно настроенный UNIX можно сравнить с решетом. Другое дело, что по настройке UNIX можно найти множество документации, грамотно объясняющей, как эти самые дыры залатать. Беда Windows в недостаточной документированности (не считать же справочную информацию, встроенную в Окна, ее заменителем). И разработчики упорно скрывают от пользователей самые интересные возможности операционной системы. Очень немногие пользователи Windows знают, что есть возможность настроить практически все параметры оболочки. Причем эти настройки зачастую невозможно подкорректировать стандартными средствами и инструментами самой операционной системы. И большинство настроек Windows хранятся в реестре. Последнее время появляется все больше и больше материалов по реестру OC Windows. В то же время, учитывая колоссальные возможности и перспективы Windows 2000, представляется логичным остановиться на особенностях реестра операционных систем Windows NT и Windows 2000. Реестр операционных систем Windows NT и Windows 2000 является специальной базой данных, в которой хранится информация об аппаратной и программной конфигурации компьютера и его приложений. Физически база данных реестра состоит их нескольких файлов данных двоичного (нетекстового) формата, которые хранятся в системном каталоге Windows (Winnt\System32\Config). Учитывая ограничения по объему данной работы (реферата), целесообразно остановиться только на наиболее интересных, как с теоретической, так и с практической точки зрения вопросах по реестру операционных систем Windows NT и Windows 2000. Основные отличия реестров Windows NT и Windows 9x. Реестр Windows NT очень похож на реестр Windows 9x, но существует ряд существенных отличий, основным из которых является организация корневых разделов. Хотя в окне редактора реестра видны шесть разделов, но реально, раздел HKEY_DYN_DATA недоступен. Все остальные разделы по своей сути не отличаются от аналогичных в Windows 9х. 29 Еще одно существенное отличие - в способе хранения информации реестра. Если в Windows 9x она хранится в двух файлах: SYSTEM.DAT и USER.DAT, то в NT информация разбита на так называемые ульи (hive). Такое положение обусловлено принципиальным отличием концепции безопасности этих операционных систем. Имена файлов ульев и пути к каталогам, в которых они хранятся, расположены в разделе HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist. В таблице даны краткие описания ульев реестра и файлов, в которых они хранятся: HKEY_LOCAL_MACHINE Содержит информацию SAM (Security Access \SAM Manager), хранящуюся в файлах SAM, SAM.LOG, SAM.SAV в папке \%Systemroot%\System32\Config. HKEY_LOCAL_MACHINE Содержит информацию безопасности в файлах \SECURITY SECURITY, SECURITY.LOG, SECURITY.SAV в папке \%Systemroot%\System32\Config. информацию о программном HKEY_LOCAL_MACHINE Содержит \SOFTWARE обеспечении. Эта информация хранится в файлах SOFTWARE, SOFTWARE.LOG, SOFTWARE.SAV в папке \%Systemroot%\System32\Config. информацию об аппаратных HKEY_LOCAL_MACHINE Содержит \SYSTEM профилях этого подраздела. Информация хранится в файлах SYSTEM, SYSTEM.LOG, SYSTEM.SAV в папке \%Systemroot%\System32\Config. HKEY_CURRENT_CONFIG Содержит информацию о подразделе System этого улья, которая хранится в файлах SYSTEM.SAV и SYSTEM.ALT в папке \%Systemroot%\System32\Config. HKEY_USERS\.DEFAULT Содержит информацию, которая будет использоваться для создания профиля нового пользователя, впервые регистрирующегося в системе. Информация хранится в файлах DEFAULT, DEFAULT.LOG, DEFAULT.SAV в папке \%Systemroot%\System32\Config. 30 HKEY_CURRENT_USER Содержит информацию о пользователе, зарегистрированном в системе на текущий момент. Эта информация хранится в файлах NTUSER.DAT и NTUSER.DAT.LOG, расположенных в каталоге \%Systemroot%\Profiles\ Username, где Username - имя пользователя, зарегистрированного в системе на данный момент. Помимо этих изменений в реестре Windows NT добавились новые типы данных. Для работы с ними надо запускать редактор REGEDT32.EXE. Добавлены данные типа REG_EXPAND_SZ - расширяемые строки данных. Такие строки содержат переменные, которые могут расширяться при вызове приложения. Например, в строку с этим типом данных можно вставить переменную %Systemroot%, и эта переменная будет замещаться именем каталога, в котором установлена операционная система. REG_MULTI_SZ - многострочные поля, состоящие из строк, отделенных друг от друга символами NULL. Вот коротко об отличиях реестра Windows NT и 9х. При работе с ним следует помнить, что многие материалы по настройке оболочки операционной системы справедливы как для Windows 9x, так и для NT. 31 Внутри Registry Как организована и управляется база данных важнейшей системной информации Windows NT. База данных системной информации Registry служит централизованным хранилищем конфигурационных параметров операционных систем Windows NT и Windows 2000, а также приложений для этих платформ. В нее записываются сведения о различных настройках, аппаратной конфигурации, пользовательских предпочтениях. Существует множество книг и статей, посвященных логике построения Registry. Их авторы описывают, где в этой базе данных находятся значения тех или иных конкретных параметров, каковы их допустимые диапазоны, и на что они влияют. В то же время ни в одном из этих источников вы не найдете описания способа физического хранения Registry в Windows NT. Другими словами, каким образом в NT и Win2K организовано хранение Registry на диске, как эти ОС осуществляют поиск и выборку информации по запросам приложений, и какие принимаются меры для защиты столь важной для них базы данных? В этой главе описывается, каким образом Configuration Manager — тот компонент ядра операционной системы, который реализует Registry — организует хранение принадлежащих этой базе данных дисковых файлов, управляет считыванием и модификацией ключей Registry и их значений из приложений. Кроме того, здесь описаны механизмы, обеспечивающие возможность восстановления Registry после сбоя, включая аварию системы в процессе внесения изменений в эту базу данных. Предполагается, что читатель знаком с логической организацией Registry, понятиями корневого ключа (root key), подключа (subkey) и значения ключа (value). Ульи На диске Registry хранится не в одном большом, а в нескольких отдельных файлах, называемых «ульями» (hive). Каждый улей содержит одну древовидную структуру Registry, имеющую свой корневой ключ (т. е. вершину дерева). Подключи и их значения находятся ниже корневого ключа в иерархии. Из сказанного можно было бы сделать вывод, что каждый корневой ключ, представленный в окне редактора Registry (regedit или regedt32), хранится в NT в отдельном улье, однако это не так. Соответствие между ключами, отображаемыми regedit, и содержимым ульев не столь очевидно (см. табл. 1). В действительности ни один из этих корневых ключей не соответствует какому-либо одному улью. Соответствие ульев дисковым файлам представлено в табл. 2. Обратите внимание на отсутствие расширений. В тех случаях, когда имя файла не указано, логические корневые ключи являются объектами без дискового представления. Configuration Manager создает такие ключи для объединения различных ульев в структуру Registry, которая и отображается в окне regedit. 32 Как явствует из табл. 1 и 2, некоторые ульи являются временными и обходятся без соответствующих файлов. Система создает их каждый раз при загрузке и хранит полностью в оперативной памяти, то есть они являются временными по самой своей природе. В качестве примера можно назвать улей HKEY_LOCAL_MACHINE\ HARDWARE, содержащий информацию о физических устройствах и зарезервированных для использования ими ресурсах. Определение аппаратной конфигурации и выделение ресурсов осуществляются каждый раз при загрузке системы, так что отказ от хранения этой информации на жестком диске представляется вполне логичным. Таблица 1. Корневые ключи Regedit Ключ Описание HKEY_CLASSES_ROOT Символьная ссылка на ключ HKEY_LOCAL_MACHINE\SOFTWARE\Classes. HKEY_CURRENT_USER Символьная ссылка на один из ключей ветви, идущей от HKEY_USERS. Каждый такой ключ представляет один из ульев пользовательских параметров HKEY_LOCAL_MACHINE Временный ключ, не имеющий соответствующего физического улья. Объединяет корневые ключи различных ульев HKEY_USERS Временный ключ, объединяющий ульи параметров зарегистрированных в данный момент в системе пользователей Символьная ссылка на ключ текущего набора конфигурационных параметров аппаратуры, находящийся в ветви ключа HKEY_CURRENT_CONFIG HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\IDConfigDB\ Hardware Profiles HKEY_DYN_DATA Временный ключ, служащий для организации ускоренной выборки данных. Не имеет соответствующего физического улья Сердце Registry — улей HKEY_ LOCAL_MACHINE\SYSTEM. В него входит подключ \CurrentControlSet\ Control, содержащий параметры, которые Configuration Manager использует при инициализации Registry. (В частности, значение ключа HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist используется при поиске файлов ульев.) Таблица 2. Маршрутные имена ульев в Registry и соответствующие дисковые файлы Маршрутное имя улья в Registry Маршрутное имя файла улья HKEY_LOCAL_MACHINE\SYSTEM \winnt\system32\config\system HKEY_LOCAL_MACHINE\SAM \winnt\system32\config\sam HKEY_LOCAL_MACHINE\SECURITY \winnt\system32\config\security HKEY_LOCAL_MACHINE\SOFTWARE \winnt\system32\config\software HKEY_LOCAL_MACHINE\HARDWARE Временный улей HKEY_LOCAL_MACHINE\SYSTEM\Clone Временный улей Набор пользовательских параметров; обычно в HKEY_USERS\UserProfile каталоге \winnt\profiles\user HKEY_USERS\.DEFAULT \winnt\system32\config\default Для соединения ульев в единое дерево Registry используются ключи специального типа символьная ссылка (symbolic link). Так, например, ключ 33 HKEY_LOCAL_MACHINE\SAM является ссылкой на корневой ключ улья SAM. Структура улья Подобно тому, как файловая система делит пространство диска на кластеры, Configuration Manager логически делит пространство улья на блоки. По определению, они имеют размер 4096 байт (4 Кбайт). При увеличении объема хранимых данных к улью добавляется необходимое число блоков. Первый блок улья называется базовым блоком. В нем хранится глобальная информация, включая сигнатуру regf, по которой файл идентифицируется как файл улья, номер текущей версии в последовательности обновления, временную метку, соответствующую последней операции записи, номер версии формата улья, контрольную сумму, и полное имя улья (например, SystemRoot\CONFIG\ SAM). О номере в последовательности обновления и временной метке мы еще поговорим при описании способа записи данных в улей. В Windows NT 4.0 формат улья изменился, так что использовать взятые от нее ульи с предыдущими версиями ОС, включая 3.51, не удастся. Внутри улья Registry данные хранятся в «сотах» (cell). Сот может содержать ключ, значение, дескриптор уровня защиты, список подключей или список значений. Первое поле данных сота содержит идентификатор типа данных (см. табл. 3). Размер сота указывается в его заголовке — поле, предшествующем полям данных. Когда требуется ввести в улей дополнительный сот, и для этого необходимо увеличить его размер, система создает «рамку» (bin), имеющую размер нового сота с округлением вверх до целого числа блоков. Остаточное пространство (от конца сота до конца рамки) рассматривается как свободное и может быть использовано для размещения других сотов. Формат рамки включает сигнатуру hbin и поле, содержащее его длину и смещение относительно начала файла улья. Таблица 3. Типы размещаемых в сотах данных Сот Сот ключа Сот значения Сот списка подключей Сот списка значений Тип данных Ключ Registry. Такой сот называется также ключевым узлом (key node). Сот ключа содержит сигнатуру (kn для сота ключа и kl для символьной ссылки), временную метку последнего обновления, индекс сота списка подключей данного ключа; индекс сота дескриптора уровня защиты данного ключа; индекс сота строкового ключа, содержащего родовое и собственное имена данного ключа (например, CurrentControlSet) Значение ключа. Такой сот содержит сигнатуру (kv), идентификатор типа значения (например, REG_DWORD или REG_BINARY), имя значения (например, Boot-Execute), а также индекс сота, содержащего данные этого значения Список индексов сотов, содержащих подключи одного родительского ключа Список индексов сотов, содержащих значения одного родительского ключа Дескриптор уровня защиты. Такие соты содержат сигнатуру (ks) в заголовке и Сот счетчик числа ссылок (то есть числа ключевых узлов, использующих данный дескриптора дескриптор уровня защиты). Один сот дескриптора уровня защиты может уровня защиты использоваться несколькими сотами ключей 34 Администрирование активных компонентов Registry на уровне рамок, а не отдельных сотов, сокращает накладные расходы. В частности, рамки создаются и уничтожаются реже, чем соты, что позволяет Configuration Manager более эффективно управлять распределением памяти. При загрузке улья в память считываются только активные рамки (те, что содержат соты), а пустые — игнорируются. В процессе добавления сотов в улей и их удаления могут образовываться пустые рамки вперемежку с активными. Это явление аналогично фрагментации жесткого диска, возникающей в процессе создания и удаления файлов. Смежные пустые рамки укрупняются, как и смежные пустые соты. Ссылки из одних сотов на другие, образующие структуру улья, используют в качестве координат индексы сотов (cell index), представляющие собой смещения от начала файла улья. Например, сот, описывающий некоторый ключ, всегда содержит ссылку на его родительский ключ. Кроме того, в составе сота ключа присутствует ссылка на сот, содержащий список подчиненных ему по структуре подключей. В свою очередь, сот со списком подключей содержит ссылки на соты этих подключей. Таким образом, чтобы найти подключ некоторого ключа, первым делом следует найти по хранимой в его соте ссылке список его подключей. Затем производится перебор подключей по списку и сравнение их имен с искомым. Рисунок 1: Пример структуры улья Registry. Во всех этих сотах, рамках и блоках немудрено запутаться, поэтому приведем простой пример структуры улья Registry. Взгляните на рис. 1. На нем изображены базовый блок и две рамки: одна пустая, а другая — с несколькими сотами. В улье два ключа: корневой ключ Root и его подключ Sub Key. Root имеет два значения: Val1 и Val2. Сот списка подключей содержит ссылку на подключ корневого ключа, а сот списка значений — ссылки на его значения. Свободное пространство во второй рамке представляет собой пустые соты. На рисунке не показаны соты дескрипторов 35 уровня защиты для двух ключей, которые также должны присутствовать в реальном улье. На рис. 1 представлен экран утилиты DiskProbe из состава инструментария Microsoft Windows NT Server 4.0 Resource Kit при просмотре первой рамки в улье SYSTEM. Обратите внимание на сигнатуру рамки hbin справа вверху экрана. Ниже вы видите также сигнатуру nk, используемую для обозначения сот, содержащих ключи. На диске она хранится в обратной последовательности знаков из-за принятого в архитектуре Intel x86 порядка записи байтов. Данный сот содержит корневой ключ улья SYSTEM, что можно определить по имени System, расположенному еще ниже сигнатуры nk. Configuration Manager упорядочивает списки значений и ключей по алфавиту, так что становится возможным использовать алгоритм двоичного поиска: сначала считывается ключ из середины списка, и если его имя стоит по алфавиту после искомого, поиск продолжается в первой половине списка, а в противном случае — во второй. Выбирается ключ из середины выбранной половины, и процедура повторяется до тех пор, пока не будет найден нужный ключ или не будет определено, что такого ключа нет. Карты сотов Чтобы не обращаться к жесткому диску всякий раз, когда поступает запрос на доступ к Registry, в адресном пространстве ядра ОС хранится по копии каждого улья. В процессе инициализации улья Configuration Manager определяет размеры его файла, выделяет достаточное пространство в подкачиваемом пуле памяти ядра ОС и считывает в него файл улья. Подкачиваемый пул памяти — это область адресного пространства ядра NT, зарезервированная для использования драйверами устройств и самим ядром. Не используемые в данный момент фрагменты этого пула могут выгружаться в специальный файл подкачки. 36 Экран 1: Исследование рамки улья SYSTEM с помощью утилиты DiskProbe Если бы размеры ульев никогда не увеличивались, Configuration Manager мог бы выполнять все операции на этой находящейся в памяти версии, так, словно улей не отличается от обычного файла. Расположение сота в памяти можно было бы вычислить, просто добавив к начальному адресу улья его индекс. Именно так поступает загрузчик Ntldr с ульем SYSTEM на одном из первых этапов загрузки операционной системы: Ntldr загружает улей SYSTEM целиком в память в режиме только для чтения и находит нужные соты по их смещению и начальному адресу улья. К сожалению, ульи растут с добавлением в них новых ключей и значений. Системе приходится выделять в своем подкачиваемом пуле дополнительные участки памяти для рамок, содержащих новые ключи и значения. Таким образом, данные Registry не обязательно размещаются в памяти все подряд. Для работы с не непрерывными буферами, в которых хранятся в оперативной памяти ульи, Configuration Manager использует такую же стратегию, как Memory Manager — для установления соответствия адресных пространств виртуальной и физической памяти. На рис. 2. изображена двухуровневая схема вычисления адресов, содержащих сот блока и рамки по ее индексу (то есть ее смещению от начала улья). Напоминаю, что рамка может состоять из одного или более блоков, а наращивание ульев 37 осуществляется целыми рамками, так что рамка всегда размещается в непрерывном буфере в памяти и все блоки одной рамки оказываются, размещены в памяти подряд. Рисунок 2: Схема использования индекса сота Configuration Manager использует в схеме установления соответствия измененный индекс сота, состоящий из трех логических полей, — подобно тому, как Memory Manager делит на поля виртуальный адрес. Первое из этих полей NT интерпретирует как номер элемента каталога карт сот улья. Всего элементов в ней 1024, и каждый представляет собой ссылку на карту сотов — таблицу из 512 элементов. Второе поле индекса сота — номер элемента карты сот, содержащего адреса рамки и блока сота. Наконец, последнее поле индекса является смещением сота от начала блока. В процессе инициализации улья Configuration Manager динамически создает карты сот в таком количестве, чтобы общее число элементов в них было не меньше числа блоков в улье, а затем, при изменении размеров улья, добавляет или удаляет карты по мере надобности. Пространство имен Registry и работа с ним Configuration Manager определяет тип объекта ключевой объект (key object), используемый для интеграции пространства имен Registry с общим пространством имен ядра ОС. Такой объект с именем REGISTRY присоединяется к корню пространства имен NT и служит точкой входа в пространство имен Registry. Утилита Regedit отображает имена ключей в форме HKEY_LOCAL_MACHINE\ SYSTEM\CurrentControlSet, но подсистема Win32 преобразует их в свое пространство имен (в данном примере: \Registry\MACHINE\SYSTEM\ CurrentControlSet). Встретив ключевой объект с именем Registry в процессе синтаксического разбора имени, NT Object Manager передает его Configuration Manager для дальнейшего анализа по внутренним деревьям имен ульев. 38 Прежде чем переходить к описанию потока управления в ходе осуществления типичной операции с Registry, я бы хотел еще поговорить о ключевых объектах и блоках управляющих параметров ключа (key control block). Когда приложение обращается с запросом на открытие или создание ключа Registry, Configuration Manager передает ему дескриптор ключевого объекта, размещенного Configuration Manager в памяти с помощью Object Manager. Сервисы Object Manager дают возможность пользоваться преимуществами его механизмов обеспечения безопасности и учета числа активных ссылок на объект. Кроме того, Configuration Manager создает для каждого открытого ключа Registry блок управляющих параметров, в число которых входят полное имя ключа с путем, индекс соты ключа и флажок, определяющий, следует ли Configuration Manager удалить этот сот после закрытия последнего указывающего на ключ дескриптора. NT хранит все блоки управляющих параметров в виде двоичного дерева, упорядоченного по именам ключей по алфавиту, что ускоряет процедуру поиска по имени ключа. Ключевой объект содержит указатель на блок управляющих параметров ключа. По каждому запросу приложения на доступ к определенному ключу создается новый ключевой объект, но все они указывают на один блок управляющих параметров. Поток управления при открытии приложением существующего ключа Registry начинается с обращения к функции интерфейса прикладного программирования Registry API, которой передается в качестве параметра имя ключа и которая запускает механизм синтаксического разбора имен Object Manager. Обнаружив в имени ключевой объект Registry, Object Manager передает его Configuration Manager для дальнейшей обработки. Configuration Manager использует хранимые в оперативной памяти структуры данных улья для поиска ключа с указанным именем. При обнаружении сота с подходящим содержимым Configuration Manager производит поиск по дереву блоков управляющих параметров, и если данный ключ уже открыт (тем же или другим приложением), увеличивает счетчик ссылок; если же нет — создает новый блок управляющих параметров и помещает его в дерево. Затем Configuration Manager выделяет ключевой объект, инициализирует его ссылкой на блок управляющих параметров и возвращает управление Object Manager. Object Manager, в свою очередь, возвращает приложению дескриптор. При поступлении от приложения запроса на создание нового ключа Registry работа идет следующим образом. Configuration Manager отыскивает сот ключа, который станет для создаваемого ключа родительским. Затем проводится поиск свободного сота достаточно большого размера. Если такового не окажется, Configuration Manager создает новую рамку и новый сот внутри нее. (Оставшееся пространство рамки включается в список свободных сотов.) Затем сот заполняется соответствующей информацией — такой как имя ключа, — и Configuration Manager заносит ее в список подключей родительского ключа (находящийся в своем отдельном соте). 39 Наконец, в соответствующее место сота нового ключа записывается индекс сота его родительского ключа. Configuration Manager использует счетчик ссылок в блоке управляющих параметров для определения момента, когда этот блок можно будет удалить. После освобождения всех дескрипторов ключа, которому принадлежит блок управляющих параметров, счетчик ссылок оказывается равен нулю, что и служит признаком того, что блок больше не нужен. Если к этому моменту флажок удаления оказывается, взведен (в результате того, что некоторое приложение обратилось к функции удаления ключа), Configuration Manager удаляет из улья и сам ключ. Надежное хранение Чтобы гарантировать возможность восстановления в случае аварии, каждый хранимый на диске улей Registry имеет помимо основной еще и вторую копию (log hive) — в файле с расширением .log. Заглянув в каталог \winnt\system32\config, вы увидите там файлы system.log, sam.log и некоторые другие с тем же расширением. При инициализации улья Configuration Manager создает битовый массив, каждый бит которого соответствует одному 512-байтовому сектору (sector) улья. Он называется массивом «грязных» секторов, поскольку если бит равен единице, это означает, что соответствующий сектор улья был модифицирован в памяти, и его необходимо записать в дисковую копию улья. (Если же бит равен 0, соответствующий сектор в памяти идентичен дисковому.) В случае выполнения некоторых операций (вроде создания нового ключа) или внесения изменений в существующий ключ Configuration Manager помечает измененные сектора улья в массиве «грязных» секторов, а затем назначает время отложенной операции записи, или синхронизации копий улья (hive sync). Системный поток отложенной записи просыпается через 5 секунд после получения запроса на синхронизацию и сбрасывает «грязные» сектора всех ульев на диск. Таким образом, одномоментно фиксируются все изменения, произведенные в Registry со времени поступления запроса на синхронизацию копий ульев и до начала осуществления этой операции. Очередная синхронизация производится не раньше чем через 5 секунд после предыдущей. Если бы операция отложенной записи просто сбрасывала все «грязные» сектора в файл улья, то в случае аварии системы во время ее выполнения этот файл оказывался бы поврежденным и не подлежал бы восстановлению. Во избежание такой неприятности сначала массив «грязных» секторов и сами эти сектора сбрасываются в журнальный файл (.log) улья, размеры которого при необходимости могут быть увеличены. Затем увеличивается номер в последовательности обновления в базовом блоке журнальный файл, и только после этого грязные сектора записываются в основной файл улья. В заключение всей работы увеличивается номер в последовательности обновления и в базовом блоке основного файла улья. Таким образом, если во время синхронизации произойдет авария, при последующей перезагрузке Configuration Manager обнаружит несовпадение номеров последовательности 40 обновления в базовых блоках основной и резервной копий улья и завершит синхронизацию с использованием журнального файла. В результате не только дисковая копия улья окажется полностью корректна, но и никакие из последних изменений не будут потеряны. Для улья SYSTEM как наиболее важного предусмотрена еще одна, дополнительная степень защиты. Заглянув в каталог \winnt\system32\ config, вы увидите там целых три файла с именем System: System, System.log и System.Alt. Configuration Manager хранит в файле System.Alt пассивное зеркало улья SYSTEM, которое обновляется в процессе синхронизации точно так же, как его основная дисковая копия. Если в процессе загрузки обнаружится, что основная копия улья SYSTEM неисправна, Configuration Manager попытается использовать альтернативную. Оптимизации Registry Configuration Manager использует несколько достойных упоминания приемов, оптимизирующих его работу с точки зрения производительности. Во-первых, практически каждый ключ Registry связан с дескриптором уровня защиты, используемым для ограничения доступа к нему. Снабжать каждый ключ отдельной копией такого дескриптора было бы неэффективно, поскольку нередко требования безопасности бывают одинаковыми в отношении целых ветвей дерева ключей Registry. При назначении ключу дескриптора уровня защиты Configuration Manager первым делом проверяет соответствующие дескрипторы родительского ключа и других его подключей. Если обнаруживается совпадение, Configuration Manager просто устанавливает ссылку из сота нового ключа на общий дескриптор, а счетчик ссылок дескриптора увеличивает на единицу (значение этого счетчика говорит о том, сколько ключей используют дескриптор). Кроме того, Configuration Manager оптимизирует способ хранения в улье имен ключей и значений. Хотя Registry полностью поддерживает кодировку Unicode, имена, содержащие только символы ASCII, хранятся в этой более компактной кодировке. При считывании имени (например, в процессе поиска) выполняется преобразование из ASCII в Unicode. Хранение имен в коде ASCII может обеспечивать значительное сокращение размеров улья. Наконец, со временем происходит фрагментация ульев Registry. Так, улей, представленный на рис. 1, фрагментирован, поскольку содержит пустое пространство. Configuration Manager никогда не предпринимает попыток уплотнить улей, но в NT есть механизм, позволяющий выполнить эту операцию. Функция RegSaveKey интерфейса прикладного программирования Win32 (она используется утилитой создания диска аварийного восстановления Emergency Repair Disk, ERD) создает резервную копию улья Registry в отдельном файле. Информация переносится в резервный файл без пробелов, то есть фактически осуществляется его уплотнение. Для замены действующей копии улья резервной используется функция RegReplaceKey API-интерфейса Win32, либо другие функции Win32, используемые процедурой восстановления системы с ERD. 41 Текущее состояние ОС В последних версиях Win2K ни Configuration Manager, ни способ работы с ульями Registry в памяти и на диске не претерпели существенных изменений. Можно даже загрузить с помощью функции Load Hive редактора regedt32 улей, взятый от Win2K, в NT 4.0. В то же время в новой версии ОС появился ряд оптимизаций, существенно сокращающих расход памяти и повышающих скорость работы. Во-первых, в Win2K блоки управляющих параметров ключей содержат только собственно имена ключей, без полных путей до них. Например, блок, относящийся к ключу \Registry\System\ Control, будет содержать имя Control. Дальнейшая оптимизация расхода памяти достигается отделением от блока управляющих параметров блока имени ключа. Для ключей с одинаковыми именами создается по блоку управляющих параметров на каждый, но лишь один на всех блок имени ключа. Для повышения скорости поиска Configuration Manager ведет хэштаблицу имен ключей, для которых созданы блоки управляющих параметров. Вторая оптимизация состоит в том, что Configuration Manager использует поддерживаемый Win2K кэш в форме хэш-таблицы Cache Table для хранения тех блоков управляющих параметров, обращаются к которым чаще всего. При обработке обращения к блоку управляющих параметров Configuration Manager первым делом проводит поиск в Cache Table. И наконец, еще один кэш Delayed Close Table используется для хранения недавно закрытых приложениями блоков управляющих параметров. Configuration Manager обычно освобождает такие блоки, но в Win2K они сохраняются в Delayed Close Table на случай, если приложение попытается повторно открыть недавно закрытый блок. Если свободных мест нет, для добавления очередного закрытого блока сначала удаляется блок, находящийся в таблице дольше всех. Кстати говоря, так как постоянно появляется что-то новое – ГОТОВ ВЫДАТЬ РЯД БОНУСОВ для тех, кто предложит наиболее удачное на сегодняшний день заключение данной лекции – т.е. ОСОБЕННОСТИ И ДОПОЛНЕНИЯ ДЛЯ ПОСЛЕДНИХ SERVICE PACK WIN XP или достоверная информация по реестру VISTA. 42 ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ ПО РЕЕСТРУ 1.Что такое системный реестр? а) Системный реестр- Список индексов сотов, содержащих подключи одного родительского ключа б) Системный реестр - база данных, которая сохраняет параметры настройки для 32 разрядных версий Microsoft Windows в) Системный реестр- это те функции, которыми управляется работа приложений в Windows 2. Какова структура системного реестра? а) функциональная б) корневая в) иерархическая 3.Что хранится в файлах system.dat и user.dat? а) SYSTEM.DAT и USER.DAT представляют Ваш текущий системный реестр б) SYSTEM.DT и USER.DAT представляют копию Вашего системного реестра в) оба ответа являются верными. 4. Чтобы гарантировать возможность восстановления в случае аварии, каждый хранимый на диске улей Registry имеет помимо основной, еще и вторую копию в файле. С каким расширением? а) dfm б) pas в) log 5. Как очистить список недавно использованных команд? а) HKEY_CURRENT_USER\ Software\Microsoft\Windows\Current Version\Explorer\RunMRU. б) HKEY_CURRENT_USER\Control Panel\desktop, в)HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\P olicies\Explorer 6)Каким образом хранится информация реестра в Windows NT? а) Информация хранится в различных файлах б) Информация хранится в двух файлах: SYSTEM.DAT и USER.DAT в) Информация разбита на так называемые ульи (hive) 43 Лекция 4 “ Операционные оболочки и настройки через РЕЕСТР” Настройка свойств сети, оболочки Windows NT Данный раздел будет интересен и полезен для сисадминов в сети с Windows NT и 2000. Все эти настройки могут помочь оградить систему от глупых пользователей, пытающихся всюду сунуть нос. И начнем мы рассмотрение настроек, пожалуй, с самой важной темы, от которой зависит безопасность работы с операционной системой: настройки различных параметров и установок работы в сети. Рассматриваемые настройки хранятся в ветви HKEY_LOCAL_MACHINE реестра. В этой ветви надо открыть раздел Software\Microsoft\Windows\CurrentVersion\Policies\Network. Для начала условимся о некоторых критериях работы: все ключи имеют тип DWORD, если это не обговорено отдельно; значение ключа равное 1 включает данную опцию, 0 выключает, если это не обговорено отдельно. Отмечу, что рассматриваться различные настройки будут по их месторасположению в реестре (т.е. приводятся сведения о ключах, расположенных в одном разделе). Для запрещения кэширования паролей к различным ресурсам в сети служит ключ DisablePwdCaching. Если вы опасаетесь за свою безопасность и не хотите, чтобы ваша информация стала доступна всем подряд, то лучше выставить значение этого ключа равным 1. Ключ HideSharePwds определяет, показывать ли пароли к расшаренным ресурсам (имеющим общий доступ) открытым текстом или заменять их звездочками. Минимальную длину пароля можно выставить с помощью двоичного (BINARY) ключа MinPwdLen. Ключ NoDialIn запрещает соединение удаленного доступа. Ключ NoEntireNetwork запрещает отображение папки "Вся сеть". Для запрещения доступа к файлам служит ключ NoFileSharing, а для запрета управления доступом к файлам - ключ NoFileSharingControl. Запрет доступа к принтерам устанавливается ключом NoPrintSharing. Ключ NoPrintSharingControl устанавливает запрет на управление доступом к принтерам. Для того чтобы запретить перечисление содержимого рабочей группы, надо установить значение ключа NoWorkgroupContents равным 1. На этом, пожалуй, рассмотрение дальнейших настроек сети прекращу, и перейду к настройкам различных параметров оболочки операционной системы расположенных в ветви HKEY_CURRENT_USER в разделе Software\Microsoft\Windows\CurrentVersion\Policies\System. Если вы обратили внимание на то, что настройки проводятся в ветви HKCU, то должны понять, что они будут относиться только к текущему пользователю. Для установки этих параметров для других пользователей надо пользоваться ветвью HKEY_USERS\Name (здесь Name - имя нужного вам пользователя). 44 Для начала запретим пользователю поменять пароль в диалоге входа в систему. Для этого достаточно установить у ключа DisableChangePassword значение 1. Если вы хотите запретить блокировку компьютера в диалоге входа в систему, воспользуйтесь ключом DisableLockWorkstation. DisableTaskMgr - запрещает запуск менеджера задач. Все эти настройки, конечно, могут помочь оградить систему от глупых пользователей, пытающихся всюду сунуть нос, но от более опытных юзеров это не спасет - ведь они могут точно так же открыть реестр и поменять 1 на 0. Для того чтобы они не смогли этого сделать, надо запретить запуск редакторов реестра Regedit и Regedt32 с помощью ключа DisableRegistryTools. Однако самые умные все равно смогут это обойти, воспользовавшись reg-файлом :). Теперь давайте посмотрим, как можно ограничить свободу пользователей по настройке свойств экрана. Для запрета вызова свойств экрана воспользуйтесь ключом NoDispCPL. NoDispBackgroundPage запрещает вызов страницы свойств фона дисплея. Запретить вызов страницы свойств хранителя экрана можно ключом NoDispScrSavPage. Для запрета вызова страницы свойств оформления экрана надо присвоить значение 1 ключу NoDispAppearancePage. Запрет вызова страницы настроек дисплея осуществляется ключом NoDispSettingsPage. Ключ EnableProfileQuota включает ограничение профиля в размерах. В финале приведу настройки, запрещающие командную строку MS-DOS и RealMode. Для этого надо установить в 1 ключи Disabled и NoRealMode соответственно в разделе Software\Microsoft\Windows\CurrentVersion\Policies\WinOldApp ветви HKEY_LOCAL_MACHINE Программы для работы с реестром. Ниже приведены наиболее популярные программы для работы с реестром: Ashampoo UnInstaller Suite v.1.30 4,1 мегабайт — W9*/Me/NT4/2k/XP shareware — Домашняя страничка Утилита отслеживает и регистрирует изменения, которые вносят инсталляционные программы, что позволяет при необходимости корректно - то есть полностью - удалить ненужную программу. Положительным качеством является то, что UnInstaller удаляет не только те приложения, что были отмониторены, но и путем анализа деинсталлирует программы, мониторинг которых не производился. Кроме своей основной функции, программа способна удалять дубликаты, временные файлы и шрифты, разрешать проблемы с разделяемыми ddl-ками и делать "снимки" 45 системы, причем все действия выполняются с помощью наглядных и понятных Мастеров. Оценочный период работы - 30 дней, при этом нужно зарегистрироваться на сайте разработчика для бесплатного получения рег. ключа. jv16 PT v.1.1.0.145b 1,9 мегабайт — W9*/Me/NT/2k/XP freeware — Домашняя страничка Отличная программа для чистки реестра. Следующее поколение программы RegCleaner. RegCompact v.1.0 104 килобайт — W9*/Me/NT/2k/ freeware — Домашняя страничка Утилита для дефрагментации системного реестра. Позволяет дефрагменитровать как целиком весь реестр, так и отдельные его ветви. Regmon 95/98 v.4.34 71 килобайт — W9* freeware — Домашняя страничка Утилита отслеживает все обращения к реестру (какая программа к каким ключам обратилась, какие данные прочитала, какие записи сделала) и показывает их на экране, причем делает это в реальном времени. Чтобы отсеять "мусор", можно настроить имеющиеся фильтры так, чтобы показывались обращения только к определенным ключам или только те, что связаны с определенной программой. Еще одно удобное свойство - возможность быстрого перехода от выбранного в окне Regmon'a ключа к этому ключу в редакторе реестра. Regmon NT/2k v.4.34 71 кВ. RegShot v.1.61e 32 килобайта — W9*/Me/NT/2K/XP freeware — Домашняя страничка Утилита для сравнения двух вариантов системного реестра: например, одного - до установки какой-либо программы, и второго после ее установки. Тем самым RegShot позволяет точно узнать, что понаписала в реестр эта программа. 46 Языковый модуль 6 кB. Registry Viewer v.3.85 62 килобайта — W9*/Me/NT/2K/XP freeware — Домашняя страничка Эта программа работает в DOS-режиме и обращается к файлам реестра напрямую, минуя функции Windows. Подробнее можно почитать в журнале ADOLO 5. Resplendent Registrar v.3.01 2 мегабайта — W9*/Me/NT/2k/XP shareware — Домашняя страничка Мощнейшее средство для работы с системным реестром. Умеет: производить поиск и замену, делать импорт-экспортбэкап, сравнивать ветви, делать закладки, восстанавливать реестр, и все это — как на отдельной машине, так и в локальной сети. System Mechanic v.3.7g 1,6 мегабайт — W9*/Me/NT4/2k/XP shareware — Домашняя страничка Программа предназначена для очистки системного реестра, удаления ненужных файлов, неиспользуемых *dll-библиотек и прочего мусора. Имеет массу настроек и возможность создания файла отката. Для update необходимо инсталлировать в папку, с установленной программой. Registry Trash Keys Finder v.2.2.2b 26 килобайт — W9*/Me freeware — Домашняя страничка По оригинальному алгоритму просматривает реестр Windows (точнее пока только ветвь HKCR\CLSID, в которой обычно не менее 1000! подключей) на предмет поиска мусорных (Trash) ключей, которые втихаря оставляют за собой Trial версии многих программ, в основном защищенных ASPROTECTом. После обнаружения таких ключей программа TrashReg предлагает их 47 удалить (можно сначала сделать файлы отката). После удаления ключей те программы, срок ознакомительного использования которых уже истек, благополучно продолжают работать на радость Вам:))). Предусмотрен также режим автоматической очистки реестра через заданный период (рекомендую 15 дней), и тогда все произойдет без вашего участия. И помните - это Ваш компьютер и Ваш реестр и Вы вольны удалять в нем все что Вам угодно, но, пожалуйста, делайте это осторожно и с умом! WinForce 1.5 658 килобайт — W9*/Me/2k freeware — Домашняя страничка Показывает полный список всех файлов и процессов, запущеных на вашем компьютере в настоящий момент. Причем абсолютно все равно спрятаны ли файлы или нет, или просто работают "на заднем фоне". Все файлы и процессы выстраиваются в хорошо обозреваемую древовидную структуру с разумным списком, который реагирует и сам перематывает содержание в зависимости от движения мышки. При выборе отдельного файла, в списке открывается целая ветвь связанных с ним процессов в регистре. При выборе запущенного файла в листе, справа от него в информационном окне отражается полная информация о программе от ее иконки до номера процесса. Везде всплывают нужные подсказки. Далее вам предлогается в зависимости от вида процесса (файл/процесс в регистре) всеможные манипуляции! Для окон это: сворачивание, закрытие, изменение положение и размера, восстановление и т.д. Для процессов: изменение приоритета работы (!!!), что, например, очень поможет, если какая-то программа сильно расходует память, а также закрытие процесса, прятание и так далее и тому подобное. WinForce содержит также множество функций, которые помогут программистам писать их приложения по возможности без ошибок. Есть возможность автозапуска программы + изменение некоторых опций в регистре. Кроме того, находясь в трее, программа позволяет выключить / перезагрузить компьютер или открыть / закрыть CD-ROM только двумя кликами! 48 ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ ПО НАСТРОЙКАМ ЧЕРЕЗ РЕЕСТР 49 Лекция 5 ”Локальные и глобальные сети. Сетевые операционные системы. Компоненты сети”. Структура сетевой операционной системы Сетевая операционная система составляет основу любой вычислительной сети. Каждый компьютер в сети в значительной степени автономен, поэтому под сетевой операционной системой в широком смысле понимается совокупность операционных систем отдельных компьютеров, взаимодействующих с целью обмена сообщениями и разделения ресурсов по единым правилам - протоколам. В узком смысле сетевая ОС - это операционная система отдельного компьютера, обеспечивающая ему возможность работать в сети. Рис. 1.1. Структура сетевой ОС В сетевой операционной системе отдельной машины можно выделить несколько частей (рисунок 1.1): Средства управления локальными ресурсами компьютера: функции распределения оперативной памяти между процессами, планирования и диспетчеризации процессов, управления процессорами в мультипроцессорных машинах, управления периферийными устройствами и другие функции управления ресурсами локальных ОС. Средства предоставления собственных ресурсов и услуг в общее пользование - серверная часть ОС (сервер). Эти средства обеспечивают, например, блокировку файлов и записей, что необходимо для их совместного использования; ведение справочников имен сетевых ресурсов; обработку запросов удаленного доступа к собственной файловой системе и базе данных; управление очередями запросов удаленных пользователей к своим периферийным устройствам. Средства запроса доступа к удаленным ресурсам и услугам и их использования - клиентская часть ОС (редиректор). Эта часть выполняет распознавание и перенаправление в сеть запросов к удаленным ресурсам от 50 приложений и пользователей, при этом запрос поступает от приложения в локальной форме, а передается в сеть в другой форме, соответствующей требованиям сервера. Клиентская часть также осуществляет прием ответов от серверов и преобразование их в локальный формат, так что для приложения выполнение локальных и удаленных запросов неразличимо. Коммуникационные средства ОС, с помощью которых происходит обмен сообщениями в сети. Эта часть обеспечивает адресацию и буферизацию сообщений, выбор маршрута передачи сообщения по сети, надежность передачи и т.п., то есть является средством транспортировки сообщений. В зависимости от функций, возлагаемых на конкретный компьютер, в его операционной системе может отсутствовать либо клиентская, либо серверная части. На рисунке 1.2 показано взаимодействие сетевых компонентов. Здесь компьютер 1 выполняет роль "чистого" клиента, а компьютер 2 - роль "чистого" сервера, соответственно на первой машине отсутствует серверная часть, а на второй - клиентская. На рисунке отдельно показан компонент клиентской части - редиректор. Именно редиректор перехватывает все запросы, поступающие от приложений, и анализирует их. Если выдан запрос к ресурсу данного компьютера, то он переадресовывается соответствующей подсистеме локальной ОС, если же это запрос к удаленному ресурсу, то он переправляется в сеть. При этом клиентская часть преобразует запрос из локальной формы в сетевой формат и передает его транспортной подсистеме, которая отвечает за доставку сообщений указанному серверу. Серверная часть операционной системы компьютера 2 принимает запрос, преобразует его и передает для выполнения своей локальной ОС. После того, как результат получен, сервер обращается к транспортной подсистеме и направляет ответ клиенту, выдавшему запрос. Клиентская часть преобразует результат в соответствующий формат и адресует его тому приложению, которое выдало запрос. Рис. 1.2. взаимодействие компонентов операционной системы при взаимодействии компьютеров 51 На практике сложилось несколько подходов к построению сетевых операционных систем (рисунок 1.3). Рис. 1.3. Варианты построения сетевых ОС Первые сетевые ОС представляли собой совокупность существующей локальной ОС и надстроенной над ней сетевой оболочки. При этом в локальную ОС встраивался минимум сетевых функций, необходимых для работы сетевой оболочки, которая выполняла основные сетевые функции. Примером такого подхода является использование на каждой машине сети операционной системы MS DOS (у которой, начиная с ее третьей версии, появились такие встроенные функции, как блокировка файлов и записей, необходимые для совместного доступа к файлам). Принцип построения сетевых ОС в виде сетевой оболочки над локальной ОС используется и в современных ОС, таких, например, как LANtastic или Personal Ware. Однако более эффективным представляется путь разработки операционных систем, изначально предназначенных для работы в сети. Сетевые функции у ОС такого типа глубоко встроены в основные модули системы, что обеспечивает их логическую стройность, простоту эксплуатации и модификации, а также высокую производительность. Примером такой ОС является система Windows NT фирмы Microsoft, которая за счет встроенности сетевых средств обеспечивает более высокие показатели производительности и защищенности информации по сравнению с сетевой ОС LAN Manager той же фирмы (совместная разработка с IBM), являющейся надстройкой над локальной операционной системой OS/2. Одноранговые сетевые ОС и ОС с выделенными серверами В зависимости от того, как распределены функции между компьютерами сети, сетевые операционные системы, а, следовательно, и сети делятся на два класса: одноранговые и двухранговые (рисунок 1.4). Последние чаще называют сетями с выделенными серверами. 52 (а) (б) Рис. 1.4. (а) - Одноранговая сеть, (б) - Двухранговая сеть Если компьютер предоставляет свои ресурсы другим пользователям сети, то он играет роль сервера. При этом компьютер, обращающийся к ресурсам другой машины, является клиентом. Как уже было сказано, компьютер, работающий в сети, может выполнять функции либо клиента, либо сервера, либо совмещать обе эти функции. Если выполнение каких-либо серверных функций является основным назначением компьютера (например, предоставление файлов в общее пользование всем остальным пользователям сети или организация совместного использования факса, или предоставление всем пользователям сети возможности запуска на данном компьютере своих приложений), то такой компьютер называется выделенным сервером. В зависимости от того, какой ресурс сервера является разделяемым, он называется файл-сервером, факс-сервером, принт-сервером, сервером приложений и т.д. Очевидно, что на выделенных серверах желательно устанавливать ОС, специально оптимизированные для выполнения тех или иных серверных функций. Поэтому в сетях с выделенными серверами чаще всего используются сетевые операционные системы, в состав которых входит нескольких вариантов ОС, отличающихся возможностями серверных частей. Например, сетевая ОС Novell NetWare имеет серверный вариант, оптимизированный для работы в качестве файл-сервера, а также варианты оболочек для рабочих станций с различными локальными ОС, причем эти оболочки выполняют исключительно функции клиента. Другим примером ОС, ориентированной на построение сети с выделенным сервером, является операционная система Windows NT. В отличие от NetWare, оба варианта данной сетевой ОС - Windows NT Server (для выделенного сервера) и Windows NT Workstation (для рабочей станции) - могут поддерживать функции и клиента и сервера. Но серверный вариант Windows NT имеет больше возможностей для предоставления ресурсов своего компьютера другим пользователям сети, так как может выполнять более широкий набор функций, поддерживает большее количество одновременных соединений с клиентами, реализует централизованное управление сетью, имеет более развитые средства защиты. 53 Выделенный сервер не принято использовать в качестве компьютера для выполнения текущих задач, не связанных с его основным назначением, так как это может уменьшить производительность его работы как сервера. В связи с такими соображениями в ОС Novell NetWare на серверной части возможность выполнения обычных прикладных программ вообще не предусмотрена, то есть сервер не содержит клиентской части, а на рабочих станциях отсутствуют серверные компоненты. Однако в других сетевых ОС функционирование на выделенном сервере клиентской части вполне возможно. Например, под управлением Windows NT Server могут запускаться обычные программы локального пользователя, которые могут потребовать выполнения клиентских функций ОС при появлении запросов к ресурсам других компьютеров сети. При этом рабочие станции, на которых установлена ОС Windows NT Workstation, могут выполнять функции невыделенного сервера. Важно понять, что, несмотря на то, что в сети с выделенным сервером все компьютеры в общем случае могут выполнять одновременно роли и сервера, и клиента, эта сеть функционально не симметрична: аппаратно и программно в ней реализованы два типа компьютеров - одни, в большей степени ориентированные на выполнение серверных функций и работающие под управлением специализированных серверных ОС, а другие - в основном выполняющие клиентские функции и работающие под управлением соответствующего этому назначению варианта ОС. Функциональная несимметричность, как правило, вызывает и несимметричность аппаратуры для выделенных серверов используются более мощные компьютеры с большими объемами оперативной и внешней памяти. Таким образом, функциональная несимметричность в сетях с выделенным сервером сопровождается несимметричностью операционных систем (специализация ОС) и аппаратной несимметричностью (специализация компьютеров). В одноранговых сетях все компьютеры равны в правах доступа к ресурсам друг друга. Каждый пользователь может по своему желанию объявить какой-либо ресурс своего компьютера разделяемым, после чего другие пользователи могут его эксплуатировать. В таких сетях на всех компьютерах устанавливается одна и та же ОС, которая предоставляет всем компьютерам в сети потенциально равные возможности. Одноранговые сети могут быть построены, например, на базе ОС LANtastic, Personal Ware, Windows for Workgroup, Windows NT Workstation. В одноранговых сетях также может возникнуть функциональная несимметричность: одни пользователи не желают разделять свои ресурсы с другими, и в таком случае их компьютеры выполняют роль клиента, за другими компьютерами администратор закрепил только функции по организации совместного использования ресурсов, а значит они являются серверами, в третьем случае, когда локальный пользователь не возражает против использования его ресурсов и сам не исключает возможности обращения к другим компьютерам, ОС, устанавливаемая на его компьютере, должна включать и серверную, и клиентскую части. В отличие от сетей с 54 выделенными серверами, в одноранговых сетях отсутствует специализация ОС в зависимости от преобладающей функциональной направленности клиента или сервера. Все вариации реализуются средствами конфигурирования одного и того же варианта ОС. Одноранговые сети проще в организации и эксплуатации, однако они применяются в основном для объединения небольших групп пользователей, не предъявляющих больших требований к объемам хранимой информации, ее защищенности от несанкционированного доступа и к скорости доступа. При повышенных требованиях к этим характеристикам более подходящими являются двухранговые сети, где сервер лучше решает задачу обслуживания пользователей своими ресурсами, так как его аппаратура и сетевая операционная система специально спроектированы для этой цели. ОС для рабочих групп и ОС для сетей масштаба предприятия Сетевые операционные системы имеют разные свойства в зависимости от того, предназначены они для сетей масштаба рабочей группы (отдела), для сетей масштаба кампуса или для сетей масштаба предприятия. Сети отделов - используются небольшой группой сотрудников, решающих общие задачи. Главной целью сети отдела является разделение локальных ресурсов, таких как приложения, данные, лазерные принтеры и модемы. Сети отделов обычно не разделяются на подсети. Сети кампусов - соединяют несколько сетей отделов внутри отдельного здания или внутри одной территории предприятия. Эти сети являются все еще локальными сетями, хотя и могут покрывать территорию в несколько квадратных километров. Сервисы такой сети включают взаимодействие между сетями отделов, доступ к базам данных предприятия, доступ к факс-серверам, высокоскоростным модемам и высокоскоростным принтерам. Сети предприятия (корпоративные сети) - объединяют все компьютеры всех территорий отдельного предприятия. Они могут покрывать город, регион или даже континент. В таких сетях пользователям предоставляется доступ к информации и приложениям, находящимся в других рабочих группах, других отделах, подразделениях и штаб-квартирах корпорации. Главной задачей операционной системы, используемой в сети масштаба отдела, является организация разделения ресурсов, таких как приложения, данные, лазерные принтеры и, возможно, низкоскоростные модемы. Обычно сети отделов имеют один или два файловых сервера и не более чем 30 пользователей. Задачи управления на уровне отдела относительно просты. В задачи администратора входит добавление новых пользователей, устранение простых отказов, инсталляция новых узлов и установка новых версий программного обеспечения. Операционные системы сетей отделов хорошо отработаны и разнообразны, также как и сами сети отделов, уже давно применяющиеся и достаточно отлаженные. Такая сеть обычно использует одну или максимум две сетевые ОС. Чаще всего это сеть с выделенным 55 сервером NetWare 3.x или Windows NT, или же одноранговая сеть, например сеть Windows for Workgroups. Пользователи и администраторы сетей отделов вскоре осознают, что они могут улучшить эффективность своей работы путем получения доступа к информации других отделов своего предприятия. Если сотрудник, занимающийся продажами, может получить доступ к характеристикам конкретного продукта и включить их в презентацию, то эта информация будет более свежей и будет оказывать большее влияние на покупателей. Если отдел маркетинга может получить доступ к характеристикам продукта, который еще только разрабатывается инженерным отделом, то он может быстро подготовить маркетинговые материалы сразу же после окончания разработки. Итак, следующим шагом в эволюции сетей является объединение локальных сетей нескольких отделов в единую сеть здания или группы зданий. Такие сети называют сетями кампусов. Сети кампусов могут простираться на несколько километров, но при этом глобальные соединения не требуются. Операционная система, работающая в сети кампуса, должна обеспечивать для сотрудников одних отделов доступ к некоторым файлам и ресурсам сетей других отделов. Услуги, предоставляемые ОС сетей кампусов, не ограничиваются простым разделением файлов и принтеров, а часто предоставляют доступ и к серверам других типов, например, к факссерверам и к серверам высокоскоростных модемов. Важным сервисом, предоставляемым операционными системами данного класса, является доступ к корпоративным базам данных, независимо от того, располагаются ли они на серверах баз данных или на миникомпьютерах. Именно на уровне сети кампуса начинаются проблемы интеграции. В общем случае, отделы уже выбрали для себя типы компьютеров, сетевого оборудования и сетевых операционных систем. Например, инженерный отдел может использовать операционную систему UNIX и сетевое оборудование Ethernet, отдел продаж может использовать операционные среды DOS/Novell и оборудование Token Ring. Очень часто сеть кампуса соединяет разнородные компьютерные системы, в то время как сети отделов используют однотипные компьютеры. Корпоративная сеть соединяет сети всех подразделений предприятия, в общем случае находящихся на значительных расстояниях. Корпоративные сети используют глобальные связи (WAN links) для соединения локальных сетей или отдельных компьютеров. Пользователям корпоративных сетей требуются все те приложения и услуги, которые имеются в сетях отделов и кампусов, плюс некоторые дополнительные приложения и услуги, например, доступ к приложениям мейнфреймов и миникомпьютеров и к глобальным связям. Когда ОС разрабатывается для локальной сети или рабочей группы, то ее главной обязанностью является разделение файлов и других сетевых ресурсов (обычно принтеров) между локально подключенными пользователями. Такой 56 подход не применим для уровня предприятия. Наряду с базовыми сервисами, связанными с разделением файлов и принтеров, сетевая ОС, которая разрабатывается для корпораций, должна поддерживать более широкий набор сервисов, в который обычно входят почтовая служба, средства коллективной работы, поддержка удаленных пользователей, факс-сервис, обработка голосовых сообщений, организация видеоконференций и др. Кроме того, многие существующие методы и подходы к решению традиционных задач сетей меньших масштабов для корпоративной сети оказались непригодными. На первый план вышли такие задачи и проблемы, которые в сетях рабочих групп, отделов и даже кампусов либо имели второстепенное значение, либо вообще не проявлялись. Например, простейшая для небольшой сети задача ведения учетной информации о пользователях выросла в сложную проблему для сети масштаба предприятия. А использование глобальных связей требует от корпоративных ОС поддержки протоколов, хорошо работающих на низкоскоростных линиях, и отказа от некоторых традиционно используемых протоколов (например, тех, которые активно используют широковещательные сообщения). Особое значение приобрели задачи преодоления гетерогенности - в сети появились многочисленные шлюзы, обеспечивающие согласованную работу различных ОС и сетевых системных приложений. К признакам корпоративных ОС могут быть отнесены также следующие особенности. Поддержка приложений. В корпоративных сетях выполняются сложные приложения, требующие для выполнения большой вычислительной мощности. Такие приложения разделяются на несколько частей, например, на одном компьютере выполняется часть приложения, связанная с выполнением запросов к базе данных, на другом - запросов к файловому сервису, а на клиентских машинах - часть, реализующая логику обработки данных приложения и организующая интерфейс с пользователем. Вычислительная часть общих для корпорации программных систем может быть слишком объемной и неподъемной для рабочих станций клиентов, поэтому приложения будут выполняться более эффективно, если их наиболее сложные в вычислительном отношении части перенести на специально предназначенный для этого мощный компьютер - сервер приложений. Сервер приложений должен базироваться на мощной аппаратной платформе (мультипроцессорные системы, часто на базе RISC-процессоров, специализированные кластерные архитектуры). ОС сервера приложений должна обеспечивать высокую производительность вычислений, а значит поддерживать многонитевую обработку, вытесняющую многозадачность, мультипроцессирование, виртуальную память и наиболее популярные прикладные среды (UNIX, Windows, MS-DOS, OS/2). В этом отношении сетевую ОС NetWare трудно отнести к корпоративным продуктам, так как в ней отсутствуют почти все требования, предъявляемые к серверу приложений. В то же время хорошая поддержка универсальных приложений 57 в Windows NT собственно и позволяет ей претендовать на место в мире корпоративных продуктов. Справочная служба. Корпоративная ОС должна обладать способностью хранить информацию обо всех пользователях и ресурсах таким образом, чтобы обеспечивалось управление ею из одной центральной точки. Подобно большой организации, корпоративная сеть нуждается в централизованном хранении как можно более полной справочной информации о самой себе (начиная с данных о пользователях, серверах, рабочих станциях и кончая данными о кабельной системе). Естественно организовать эту информацию в виде базы данных. Данные из этой базы могут быть востребованы многими сетевыми системными приложениями, в первую очередь системами управления и администрирования. Кроме этого, такая база полезна при организации электронной почты, систем коллективной работы, службы безопасности, службы инвентаризации программного и аппаратного обеспечения сети, да и для практически любого крупного бизнесприложения. База данных, хранящая справочную информацию, предоставляет все то же многообразие возможностей и порождает все то же множество проблем, что и любая другая крупная база данных. Она позволяет осуществлять различные операции поиска, сортировки, модификации и т.п., что очень сильно облегчает жизнь, как администраторам, так и пользователям. Но за эти удобства приходится расплачиваться решением проблем распределенности, репликации и синхронизации. В идеале сетевая справочная информация должна быть реализована в виде единой базы данных, а не представлять собой набор баз данных, специализирующихся на хранении информации того или иного вида, как это часто бывает в реальных операционных системах. Например, в Windows NT имеется, по крайней мере, пять различных типов справочных баз данных. Главный справочник домена (NT Domain Directory Service) хранит информацию о пользователях, которая используется при организации их логического входа в сеть. Данные о тех же пользователях могут содержаться и в другом справочнике, используемом электронной почтой Microsoft Mail. Еще три базы данных поддерживают разрешение низкоуровневых адресов: WINS - устанавливает соответствие Netbios-имен IP-адресам, справочник DNS - сервер имен домена - оказывается полезным при подключении NTсети к Internet, и наконец, справочник протокола DHCP используется для автоматического назначения IP-адресов компьютерам сети. Ближе к идеалу находятся справочные службы, поставляемые фирмой Banyan (продукт Streettalk III) и фирмой Novell (NetWare Directory Services), предлагающие единый справочник для всех сетевых приложений. Наличие единой справочной службы для сетевой операционной системы - один из важнейших признаков ее корпоративности. Безопасность. Особую важность для ОС корпоративной сети приобретают вопросы безопасности данных. С одной стороны, в крупномасштабной сети объективно существует больше возможностей для 58 несанкционированного доступа - из-за децентрализации данных и большой распределенности "законных" точек доступа, из-за большого числа пользователей, благонадежность которых трудно установить, а также из-за большого числа возможных точек несанкционированного подключения к сети. С другой стороны, корпоративные бизнес-приложения работают с данными, которые имеют жизненно важное значение для успешной работы корпорации в целом. И для защиты таких данных в корпоративных сетях наряду с различными аппаратными средствами используется весь спектр средств защиты, предоставляемый операционной системой: избирательные или мандатные права доступа, сложные процедуры аутентификации пользователей, программная шифрация. Немного истории Для того, что бы лучше понять превосходство сетевых решений в Windows XP давайте совершим краткий экскурс в историю развития операционных систем Windows. Для некоторых из Вас это отступление может быть раздражающим, однако нам было даже приятно вспомнить, чему мы радовались еще несколько лет назад. Давайте начнем с Windows 3.1. Операционная система Windows 3.1 имела очень ограниченный инструментарий для организации даже самой простой сети и требовала использование программного обеспечения сторонних разработчиков. Возможно для операционной системы, выпущенной 10-12 лет назад, это было нормально. Специально для рабочих групп Microsoft выпустила Windows 3.11 for Workgroups, которая имела только протокол совместного использования файлов. Позднее в августе 1995 года была выпущена операционная система Windows 95. Несмотря на свою “глючность”, эта операционная система имела более продвинутые сетевые средства, однако по современным меркам все было очень сложно и недостаточно для требований современного пользователя. Через год была выпущена операционная система Windows NT 4.0, с дополнительными патчами и сервис паками. Windows NT 4.0 использовала интерфейс и принципы Windows 95. Главным отличием являлись наличие расширенных особенностей защиты, лучшие средства многозадачности, администрирование пользователей и больший упор на сетевую организацию для бизнес пользователей. Однако реализация сетевых особенностей оказалась еще сложнее, и недоступной для неподготовленного пользователя. Через 2-3 года после Windows 95 были выпущены операционные системы Windows 98 и Millennium. Windows 98, за исключением NT, была первой настоящей 32-bit версией Windows с полностью 32-bit кодом. В то время как Windows 98 имела некоторые усовершенствование сетевого инструментария и возможностей, они все еще были похожи на Windows 95. Дополнительно Microsoft выпустила “Special Edition” Windows 98, известную как Windows 98 SE, в которой исправлены ошибки в сетевых протоколах. В феврале 2000 Microsoft выпустила Windows 2000. Эта система основана на ядре Windows NT и поэтому ее иногда называют Windows NT 5.0. Windows 2000 имеет очень продвинутые сетевые возможности, однако их реализация пока не проста, и напоминает Windows NT. 59 И наконец, сегодня мы стали свидетелями выпуска и развития операционной системы Windows XP. Обе версии (Professional и Home) являются очень красивым сочетанием сетевых возможностей NT, 2000 и простого и понятного пользовательского интерфейса. Теперь, когда мы вспомнили, как развивались сетевые возможности операционной системы Windows, давайте переходить к нашей главной теме. Физическая установка сети Для упрощения, предположим, что мы используем в сети три компьютера – два “клиентских компьютера” и один «сервера». Для организации, даже такой маленькой сети нам понадобятся сетевые карты, которые устанавливаются в каждый компьютер, свич или хаб, а так же специальный сетевой кабель, называемый витая пара. Выбор сетевой карты В прошлом сетевая карта представляла собой отдельную ISA (для тех, кто не знает это такой старый стандарт слота расширения) или PCI плату. Причем их цена превышала 100$, что несколько ограничивало развития сетей в небольших организациях. Сегодня сетевая карта стала настолько доступной, что частенько ее интегрируют на системную плату. В случае, если Ваша плата не имеет интегрированного сетевого контроллера, то Вам придется воспользоваться внешней PCI платой. Карта должна соответствовать стандарту Realtek 10/100. Она стоит около 10$. Более дорогие карточки имеют множество дополнительных функций, обеспечивающих большую стабильность при передаче данных. Ниже на фотографии показан внешний вид типичной сетевой карты. При выборе сетевой карты, необходимо обратить внимание на максимальную поддерживаемую скорость передачи 10/100. Это означает, что карта может передавать данные на скорости 10mbps и 100mbps в зависимости от сетевой архитектуры. Дополнительно необходимо, что бы карточка имела разъем RJ-45 (современный стандарт CAT5), поддерживающий скорость передачи 100mbps и обратно совместимый с 10mbps стандартом (именно такой разъем показан на фотографии). Самый последний стандарт “CAT6”, (пока находится в разработке) будет поддерживать скорости от 300mbps до 1gbps. Это означает, что Вы сможете копировать файлы в сети со скоростью 125 мегабайт в секунду. Это быстрее скорости современных жестких дисков. CAT5-E или категория 5 UTP Enhanced так же обратно совместима с 10, 100 и 1000Mbit Ethernet. Использование RJ-45 предпочтительнее, чем RJ-58, или больше известные как BNC. Этот разъем предназначен для подключения на более низких скоростях (ограничена 10mbps) коаксиальным кабелем. Хаб против свича Для управления всеми транзакциями (передача блоков информации) в сети используется устройство называемой хаб или свич. В чем отличие между этими двумя устройствами?. Во время передачи пакета данных хаб отправляет их сразу на все компьютеры, что значительно уменьшает пропускную способность канала. Свич, имеет встроенную память, в которой храниться информация о том, к какому порту подключен какой компьютер. Поэтому во время передачи пакета, он отправляется на определенный порт. Кроме того, свич позволяет использовать в сети контроллеры с разной скоростью передачи, при этом общая пропускная способность не будет опускаться до уровня контроллера с минимальной скоростью. Учитывая незначительное ценовое отличие мы настоятельно рекомендуем приобрести именно свич. На сегодняшний день впускаются свичи с 5, 8, 16, 24 или 32 портами. Цена устройства напрямую зависит от количества портов. 802.11a и 802.11b Говоря об организации сети мы считаем необходимым затронуть вопрос беспроводных сетей, т.е. передающих информацию по радиоканалу. Такие сети становятся все популярнее, т.к. позволяют сделать размещение компьютеров более гибким, а пользователям использующим карманные компьютеры или ноутбуки, получить доступ к сети в любой точке офиса и даже за пределами. На сегодняшний день существует два стандарта 802.11a и 802.11b. Для реализации такого подключения необходимо использовать специальные хабы и сетевые карточки. Как выбрать свич? В принципе, любой. Например, мы используем 8-портовый свич от CNET, но другие брэнды, такие как Kingmax, Netgear, Dlink, 3COM так же имеют очень хорошее качество. В общем, в этом вопросе можно довериться компании, которая будет проводить у Вас сеть. Они обычно ставят то, что хорошо работает. 60 Рекомендации по конфигурированию сервера Если Ваш сервер не планируется использовать для игр, нет необходимости использовать самый последний процессор Pentium 4 или Athlon XP с большим объемом оперативной памяти и емким жестким диском, а так же с самой последней графической картой GeForce 4. Главное, чего необходимо добиться, это стабильной круглосуточной работой. Если сервер будет использовать Windows 2000/XP, он должен быть оснащен минимум 128MB RAM. В идеале, Вы можете использовать процессор Pentium 2, III или Athlon 500MHz, при этом система будет достаточно хорошо работать в нашей среде. Типы сетевых подключений Существует пять типов сетевых подключений (табл. 16.1). Таблица 16.1. Типы сетевых подключений Тип подключения Технология связи Пример Телефонное подключение (Dial-up connection) Модем, ISDN, X.25 Соединение с корпоративной сетью или Интернетом с использованием телефонного подключения ЛВС (LAN, Local Area connection) Ethernet, Token Ring, кабельный модем, xDSL, FDDI, IP no ATM, IrDA, радиомодем, Е1/T1 и т. п. Типичный корпоративный пользователь Виртуальная частная сеть (VPN connection, Virtual private network) Виртуальные частные сети по протоколам РРТР или L2TP, объединяющие или подключающие к корпоративным сетям через Интернет или другую сеть общего пользования (public network) Безопасное соединение с корпоративной сетью через Интернет Прямое подключение (Direct Connection) Последовательное соединение, инфракрасная связь, параллельный кабель (DtrectParaUel) Соединение карманного или портативного компьютера с настольным компьютером Входящее подключение (Incoming connection) Коммутируемая связь, VPN или прямое подключение Подключение к корпоративному серверу удаленного доступа 1. Входящие подключения При наличии входящего подключения компьютер под управлением Windows 2000/XP может служить сервером удаленного доступа. Можно создавать входящие подключения для приема вызовов посредством: телефонного подключения (модем, ISDN, X.25), виртуальной частной сети (РРТР, L2TP) или прямого подключения (последовательный, параллельный кабель, инфракрасная связь). Для Windows 2000 Professional входящее подключение может принимать до трех входящих вызовов для каждого из указанных типов средств. На Windows 2000 Server число входящих вызовов ограничено только возможностями компьютера (его аппаратным обеспечением). 61 Для настройки нескольких модемов или адаптеров ISDN на работу со входящими телефонными подключениями можно использовать возможности многоканальной связи (multilink). При создании подключения определяются пользователи, которые могут соединяться с данным входящим подключением, и сетевые протоколы, по которым они могут работать. Для каждого пользователя, подключающегося к входящему подключению, должна существовать локальная учетная запись. Примечание: При большом количестве входящих подключений на компьютере под управлением Windows 2000 Server, который входит в состав корпоративной сети или является контроллером домена, для управления сервером удаленного доступа нужно использовать оснастку Маршрутизация и удаленный доступ (Routing and Remote Access) Windows 2000 Server. Чтобы создать входящее подключение, необходимо иметь полномочия администратора. Клиенты входящих подключений. Windows 2000 поддерживает подключение к входящему подключению клиентов следующих операционных систем (помимо клиентов Windows 2000): Клиенты Windows NT 4.0 — могут использовать все возможности входящего подключения, кроме динамического распределения многоканального соединения, расширяемого протокола аутентификации (ЕАР), клиента защиты передаваемых данных IPSec, а также L2TP для туннелирования через глобальные сети. Клиенты Windows NT 3.1, 3.5 и 3.51 — могут использовать те же возможности входящего подключения, что и клиенты Windows NT 4.0, кроме многоканальных функциональных возможностей. Клиент Windows NT 3.1 не поддерживает протокол двухточечного соединения (РРР), введенный в Windows NT 3.5. Клиенты Windows 98— могут использовать все возможности входящего подключения, кроме динамического распределения многоканального подключения и расширяемого протокола аутентификации (ЕАР). Клиенты Windows 95 — могут использовать все возможности входящего подключения, кроме многоканального соединения, динамического распределения многоканального соединения и расширяемого протокола аутентификации (ЕАР). Клиенты Macintosh— могут соединяться с Windows2000 Server и обращаться к файловым томам и принтерам Macintosh и AppleTalk, используя протокол удаленного доступа AppleTalk (ARAP). Поддерживаются клиенты удаленного доступа AppleTalk 1.0, 2.x и 3.x Клиенты Windows for Workgroups, MS-DOS и LAN Manager— Windows 2000 Server поставляется с Microsoft Network Client for MS-DOS и TCP/IP-32 for Windows for Workgroups, которые поддерживают удаленный доступ. Поставляемые самостоятельно продукты Windows for Workgroups и LAN Manager также могут соединяться с входящим подключением. Чтобы 62 использовать полную систему переадресации, необходимо установить Microsoft Network Client for MS-DOS (настройка по умолчанию). Если используется базовая (basic) система переадресации, удаленный доступ не сможет использовать программу rasphone, а входящее подключение не сможет быть установлено. Компьютеры под управлением Windows for Workgroups, MS DOS и LAN Manager могут, используя удаленный доступ, обращаться через шлюз NetBIOS к серверам NetBIOS, использующим TCP/IP, IPX или NetBEUI, но не могут выполнять приложения, использующие TCP/IP или IPX на клиентской стороне. Эти клиенты также не поддерживают протокол РРР, введенный в Windows NT 3.5. Клиенты РРР. Клиенты РРР под управлением ОС сторонних поставщиков, использующие TCP/IP, IPX, NetBEUI или ARAP, могут устанавливать входящее подключение. Входящее подключение автоматически аутентифицирует клиентов РРР; специальные настройки РРР для таких клиентов не требуются. Создание входящего подключения. Для создания входящего подключения; 1. В папке Сеть и удаленный доступ к сети дважды щелкните на значке Создание нового подключения (Make New Connection) и нажмите кнопку Далее (Next). 2. Выберите положение Принимать входящие подключения (Accept incoming connections) переключателя, нажмите кнопку Далее и следуйте командам мастера, которому надо указать используемые для установления входящих подключений устройства (рис. 16.18). Примечание: Если при создании входящего сетевого подключения повторно используется мастер сетевых подключений, то изменяются настройки существующего входящего сетевого подключения. Чтобы создавать входящие сетевые подключения, необходимо иметь полномочия администратора. Если входящее подключение и Microsoft Fax некорректно работают совместно, например звонки не принимаются через модем, разрешенный для приема факсов, может оказаться, что модем не поддерживает адаптивный ответ. Изучите документацию модема, чтобы проверить возможность адаптивного ответа. Возможно, для корректной работы с входящим подключением - придется запретить работу с факсом. 63 Рис. 16.18. Создание входящего подключения Предоставление разрешений на установление входящего подключения. Для предоставления разрешения на установление входящего подключения: 1. В папке Сеть и удаленный доступ к сети в контекстном меню значка Входящие подключения (Incoming Connections) выберите команду Свойства (Properties). 2. Перейдите на вкладку Общие (General) и выполните одно или несколько следующих действий: В списке Устройства (Devices) установите флажки устройств, через которые может быть установлено входящее подключение. Если выбрано более одного устройства и нужно разрешить многоканальную связь, то установите флажок Многоканальное подключение (Enable mulitlink). По необходимости выберите флажок Разрешить другим пользователям устанавливать частные подключения к моему компьютеру с помощью туннеля в Интернете или в другой сети (Allow others to make private connections to my computer by tunneling through the Internet or other network). Если значок должен отображаться на панели задач, когда входящее подключение установлено, установите флажок Вывести значки соединений на панель задач (Show icons on taskbar when connected). 3. На вкладке Пользователи (Users) выполните одно или несколько следующих действий: Чтобы разрешить пользователю производить подключение, установите флажок рядом с его именем. 64 Чтобы запретить пользователю производить подключение, снимите флажок рядом с его именем. Чтобы добавить пользователя, имеющего разрешение для подключения, нажмите кнопку Новый (New). Чтобы удалить пользователя, нажмите кнопку Удалить (Delete). Чтобы изменить имя пользователя, пароль и разрешение ответного вызова сервера, нажмите кнопку Свойства (Properties). Если требуется, чтобы все пользователи подключались с надежно зашифрованными паролями и данными, установите флажок Все пользователи должны держать в секрете свои пароли и данные (Require all users to secure their passwords their passwords and data). Если требуется, чтобы устройство, соединенное напрямую можно было подключать без указания пароля, установите флажок Всегда разрешать подключение без пароля устройствам с прямым соединением, таким как карманные компьютеры (palmtop PC) (Always allow directly connected devices such as palmtop computers to connect without providing a password). 4. На вкладке Сеть (Networking) выполните одно или несколько следующих действий: Чтобы разрешить функционирование сетевого компонента, в списке сетевых компонентов установите флажок рядом с названием компонента. Чтобы запретить функционирование сетевого компонента, в списке сетевых компонентов снимите флажок рядом с названием компонента. Чтобы добавить сетевой компонент, нажмите кнопку Установить (Install). Чтобы удалить сетевой компонент, нажмите кнопку Удалить (Uninstall). Чтобы сконфигурировать сетевой компонент, нажмите кнопку Свойства (Properties). Примечание: Если на вкладке Пользователи доступ к входящему подключению разрешен, то теоретически, не дать пользователю установить входящее подключение могут другие факторы: учетная запись пользователя может быть запрещена или заблокирована, попытка подключения произведена вне дозволенного времени и т. п. Чтобы изменить входящее подключение, необходимо иметь полномочия администратора. Если протоколы TCP/IP, NetBEUI, ARAP или NWLINK (PX/SPX/NetBIOS/ Compatible Transport Protocol будут разрешены или запрещены для какого-либо входящего подключения, то параметры настройки этих протоколов воздействуют только на входящие подключения. Другие протоколы, например AppleTalk, разрешаются или запрещаются сразу же для всех типов подключения. 65 2. Настройка входящего подключения для использования TCP/IP. Чтобы настроить входящее подключение для использования TCP/IP: 1. В папке Сеть и удаленный доступ к сети в контекстном меню значка Входящие подключения (Incoming Connections) выберите пункт Свойства (Properties). 2. На вкладке Сеть (Networking) в списке выберите пункт Протокол Интер-иета (TCP/IP) (Internet Protocol (TCP/IP)) и нажмите кнопку Свойства. Если требуется, чтобы звонящие пользователи могли обращаться к локальной сети, в которой находится данный компьютер, установите флажок Разрешить звонящим доступ к локальной сети (Allow callers to access my local area network). 3. Выполните одно из следующих действий: Если нужно автоматически назначить адрес TCP/IP, выберите переключатель Назначать адреса TCP/IP автоматически по DHCP (Assign TPC/IP addresses automatically using DHCP). Если нужно задать адреса TCP/IP вручную, выберите переключатель Указать адреса TCP/IP явным образом (Specify TCP/IP addresses), в поле С (Start address) введите IP-адрес начала диапазона, а в поле По (End address) — IP-адрес конца диапазона. 4. Чтобы входящие подключения могли бы использовать конкретный адрес TCP/IP, установите флажок Разрешить звонящему указать свой адрес IP (Allow calling computer to specify its own IP address). Настройка входящего соединения для использования IPX. Чтобы настроить входящее соединение для использования IPX: 1. В папке Сеть и удаленный доступ к сети в контекстном меню значка Входящие подключения выберите пункт Свойства. 2. На вкладке Сеть в списке выберите NWLink IPX/SPX/NetBIOSсовместимый транспортный протокол и нажмите кнопку Свойства. 3. Чтобы звонящие пользователи могли обращаться к локальной сети, в которой находится данный компьютер, установите флажок Разрешить звонящим доступ к локальной сети. 4. Чтобы постоянно использовался один и тот же сетевой номер, установите флажок Присвоить единый номер сети всем компьютерам (Assign same network number to all computers) и выполните одно из следующих действий: Чтобы входящее .соединение использовало протокол RIP для определения сетевого номера IPX, который не используется в сети, выберите положение переключателя Назначить номер сети автоматически (Assign network number automatically). Чтобы управлять назначением сетевого номера вручную в целях безопасности или управления, выберите положение переключателя 66 Назначить указанный номер сети (Assign specified network number) и введите номер сети. 5. Если нужно задавать различные сетевые номера, снимите флажок Присвоить единый номер сети всем компьютерам и выполните одно из следующих действий: Для назначения уникальных номеров сетей установите переключатель Назначать номера сети последовательно из (Assign network numbers sequentially from) и введите первый номер сети. Сетевые номера будут назначаться последовательно, начиная с этого номера. Если нужно, чтобы входящие соединения могли использовать определенные ими номера узлов, установите флажок Разрешать звонящим указывать их собственные номера узлов (Allow callers to specify their own node numbers). Примечание: Разрешение удаленным клиентам выбирать собственные номера узлов — потенциальная угроза для безопасности сети: клиент может притвориться подключавшимся ранее клиентом и получить доступ к сетевым ресурсам, к которым обращался другой клиент. При изменении состояния флажка Разрешить звонящим доступ к локальной сети или Разрешать звонящим указывать их собственные номера узлов изменение немедленно вступает в силу. При изменении состояния флажка (и переключателей) Присвоить единый номер сети всем компьютерам, Назначить номер сети автоматически или Назначить указанный номер сети изменение вступает в силу, как только не окажется ни одного подключенного вызывающего абонента. Настройка ответного вызова для входящих соединений. Чтобы настроить ответный вызов для входящих соединений: 1. В папке Сеть и удаленный доступ к сети в контекстном меню значка Входящие подключения выберите пункт Свойства. 2. На вкладке Пользователи (Users) выберите пользователя, для которого необходимо настроить ответный вызов, и нажмите кнопку Свойства. 3. На вкладке Ответный вызов сервера (Callback) выполните одно из следующих действий: Если не нужно использовать ответный вызов для входящих соединений, выберите положение переключателя Запретить ответный вызов (Do not allow callback). Чтобы разрешить входящим соединениям определять настройки номера, выберите переключатель Звонящий может выбирать номер ответного вызова (Allow the caller to set the callback number). Чтобы использовать конкретный номер, выберите переключатель Только этот номер для ответного вызова (Always use the following callback number) и введите номер. 3. Настройка TCP/IP 67 Чтобы настроить протокол TCP/IP для подключения: 1. В папке Сеть и удаленный доступ к сети в контекстном меню подключения выберите пункт Свойства и выполните одно из следующих действий: Если подключение является подключением к ЛВС, то в списке Отмеченные компоненты используются этим подключением (Components checked are used in this connection) выберите элемент Протокол Интернет (TCP/IP) (Internet Protocol (TCP/IP)) и нажмите кнопку Свойства. Если подключение является коммутируемым, VPN- или входящим подключением, то на вкладке Сеть (Networking) в списке Отмеченные компоненты используются этим подключением (Components checked are used in this connection) выберите элемент Протокол Интернет (TCP/IP) (Internet Protocol (TCP/IP)) и нажмите кнопку Свойства. 2. Выполните одно из следующих действий: Чтобы параметры настройки IP были назначены автоматически, выберите положение переключателя Получить IP-адрес автоматически (Obtain an IP address automatically) и нажмите кнопку ОК. Чтобы задать определенный IP-адрес или адрес сервера DNS: установите переключатель Использовать следующий IP-адрес (Use following IP address) и в поле IP-адрес (IP address) введите нужный IP-адрес; установите переключатель Использовать следующие адреса DNS-cepверов (Use following DNS server addresses) и в полях Предпочитаемый DNS-сервер (Preferred DNS server) и Альтернативный DNS-сервер (Alternate DNS server) введите адреса первичного и вторичного серверов DNS. 3. Чтобы настроить параметры DNS, WINS и прочие параметры, нажмите кнопку Дополнительно (Advanced). Автоматическую настройку IP-адресов (DHCP) желательно использовать всегда, когда это возможно, по следующим причинам: Dynamic Host Configuration Protocol (Протокол автоматического конфигурирования хостов, DHCP) разрешен по умолчанию. Если расположение компьютеров изменилось, не требуется производить различные настройки IP, поскольку все действия производятся автоматически. Автоматическая настройка IP может использоваться для всех типов подключений, следовательно, не требуется настройка различных параметров этих подключений, например адресов DNS, WINS и т. д. 4. Просмотр состояния подключения Об активном подключении можно получить информацию при помощи пункта Состояние (Status) его контекстного меню. В окне Состояние можно просматривать: Продолжительность подключения. 68 Начальное быстродействие. Число байт, переданных (Sent) и полученных (Received) во время активности подключения, коэффициент сжатия (Compression) и количество ошибок (Errors). Диагностические средства, которые можно применить к данному подключению. Например, Windows Network Troubleshooter, TCP/IP Autoping и TCP/IP Windows IP Configuration. Для одноканального подключения и для индивидуальных подключений в многоканальном подключении быстродействие определяется во время установления подключения. Для многоканальных подключений быстродействие равно сумме скоростей индивидуальных подключений. Для многоканальных подключений быстродействие может изменяться, если подключения, входящие в его состав, будут удалены или будут добавлены новые подключения. Если компьютер настроен на прием входящих подключений, значок подключения с именем пользователя, присвоенным этому подключению, автоматически появляется в папке Сеть и удаленный доступ к сети, как только данный пользователь подключается к компьютеру. Можно просматривать состояние входящего подключения, выбирая в его контекстном меню пункт Состояние. Можно также управлять подключением, выбирая пункт Состояние меню Файл (File) или используя значок на панели задач. Если необходимо просмотреть общее состояние всех подключений, в меню Вид (View) выберите пункт Таблица (Details). Также можно разрывать активные подключения нажатием кнопки Отключить (Disconnect) в диалоговом окне Состояние (или при помощи команды Отключить или Запретить в контекстном меню подключения). 5. Настройка подключений Подключения к сети и удаленного доступа к сети можно настраивать. Параметры настройки телефонного соединения, например номер телефона подключения, число попыток повторного набора и т. д., задаются для каждого подключения. Они являются атрибутами подключения и не действуют на настройку других подключений. Например, можно создать коммутируемое подключение, которое пытается дозвониться до занятого сервера 15 раз. Можно создать второе коммутируемое подключение, которое пытается дозваниваться до более свободного сервера. Настройка повторного набора для первого подключения не повлияет на параметры повторного набора второго подключения — они автономны, т. е. вне собственных параметров телефонного подключения настройка не требуется. Однако некоторые параметры сетевых подключений могут воздействовать на другие подключения. Например, если добавить протокол AppleTalk к списку протоколов для одного подключения, этот протокол также будет доступен другим подключениям на том же компьютере. 69 Можно изменять параметры настройки и переименовывать подключение, даже когда оно установлено. Однако, чтобы изменения вступили в силу, подключение нужно повторно установить. Каждое подключение создается с общими параметрами настройки, предоставляющими минимальную информацию, необходимую для успешного установления подключения. Эти параметры отражены на вкладке Общие (General): например, для локального подключения достаточно указать сетевой адаптер, для телефонного подключения — устройство для подключения, код города, номер телефона и код страны. Для исходящего подключения можно задавать дополнительные настройки на вкладках Параметры (Options), Безопасность (Security), Сеть (Networking), Общий доступ (Shared Access). Для входящего подключения можно устанавливать дополнительные настройки на вкладках Пользователи (Users) и Сеть (Networking). Для улучшения производительности подключений можно дополнительно настраивать параметры в окне команды Дополнительные параметры (Advanced Settings) меню Дополнительно (Advanced) папки Сеть и удаленный доступ к сети. Например, Windows 2000 получает доступ к службам доступа к сети и протоколам в порядке, установленном в этом окне. Если локальному подключению разрешено обращаться к Novell NetWare и сетям Microsoft Windows, использующим TCP/IP и IPX, но базовым подключением является подключение к сети Microsoft Windows с использованием TCP/IP, можно переместить опцию Сеть Microsoft Windows (Microsoft Windows Network) в начало списка Службы доступа к сети (Network Providers) на вкладке Порядок служб доступа (Provider Order) и переместить Протокол Интернета (TCP/IP) (Internet Protocol (TCP/IP)) в начало списка Служба доступа к файлам и принтерам сетей Microsoft (File and Printer Sharing for Microsoft Networks) на вкладке Адаптеры и привязки (Adapters and Bindings). Изменяя порядок провайдеров и порядок протоколов, можно улучшить производительность работы. Дополнительные возможности настройки набора номера, позволяющие упростить конфигурирование телефонного подключения, приведены в табл. 16.4. Таблица 16.4. Настройка параметров телефонного подключения Функциональные возможности набора номера Функция Ответный вызов сервера (CallBack) Уменьшает затраты на телефонную связь с помощью сервера, производящего ответный вызов Автонабор номера (Autodial) Помнит сетевые адреса, что позволяет автоматически производить подключение, когда приложение или команда, введенная в командной строке, обращается к удаленной сети 70 Использование нескольких устройств (Dial multiple devices) Объединяет несколько физических соединений, что увеличивает общую ширину полосы пропускания для этого подключения, и динамически устанавливает и разрывает подключения внутри многоканального подключения по требованию Модификаторы телефонного номера (Phone number modifiers) Символы, делающие набор номера более гибким (функции: пауза, приостановка набора номера до ввода требуемых данных и т. д.) Параметры повторного звонка (Redial options) Определяют, сколько раз автоматически повторно будет производиться подключение, если сервер удаленного доступа недоступен. Можно также настроить эту функциональную возможность для повторного звонка в случае разрыва подключения Дополнительные номера телефонов (Multiple phone numbers) Назначение более одного номера телефонному подключению. Это полезно, если производится подключение к модемному пулу, содержащему ряд телефонных номеров Набор номера через оператора (Operator-assisted dialing) Отменяет автоматическое подключение в случае, если требуется вмешательство пользователя (оператора). Например, это нужно при звонке через коммутационный узел с ручным управлением Примечание: Можно конфигурировать параметры телефонных подключений, применяемые ко всем подключениям в пределах одного местоположения (например, набор "9" для выхода на внешнюю линию, использование импульсного или тонального набора номера и т. д.), с помощью опции Параметры телефона и модема (Phone and Modem options) из панели управления. 6. Управление сетевыми компонентами Дополнительные компоненты (вкладка Сеть (Networking) окна свойств подключения, рис. 16.5) можно разрешить и настроить как для всего компьютера целиком, так и для отдельного подключения. 71 Рис. 16.5. Сетевые компоненты для подключения 72 Добавление сетевого компонента. Для добавления сетевого компонента: 1. В контекстном меню соответствующего подключения в папке Сеть и удаленный доступ к сета выберите пункт Свойства (Properties) (рис. 16.5) и выполните одно из следующих действий: Если это локальное подключение, то в появившемся окне нажмите кнопку Install (Установить). Если это коммутируемое, VPN- или входящее подключение, то в появившемся окне на вкладке Сеть (Networking) нажмите кнопку Установить (Install). 2. В диалоговом окне Выбор типа сетевого компонента (Select Network Component Type) выберите в списке Клиент (Client), Служба (Service) или Протокол (Protocol), затем нажмите кнопку Добавить (Add) и выполните одно из следующих действий: Если инсталляционного диска для данного компонента нет (компонент входит в состав Windows), выберите соответствующий компонент (клиента, службу или протокол) и нажмите кнопку ОК. Если есть инсталляционный диск для данного компонента, выберите соответствующий компонент (клиента, службу или протокол), нажмите кнопку Установить с диска (Have Disk), вставьте инсталляционный диск в указанный дисковод и нажмите кнопку ОК. Удаление сетевого компонента. Для удаления сетевого компонента: 1. В контекстном меню подключения в папке Сеть и удалённый доступ к сети выберите команду Свойства (Properties) и выполните одно из следующих действий: Если это локальное подключение, в списке Отмеченные компоненты используются этим подключением (Network components used in this connection), выберите клиента, службу или протокол, которые требуeтся удалить, и нажмите кнопку Удалить (Uninstall). Если это коммутируемое, VPN- или входящее подключение, в списке Отмеченные компоненты используются этим подключением на вкладке Сеть выберите клиента, службу или протокол, которые требуется удалить, и нажмите кнопку Удалить. 2. В открывшемся диалоговом окне нажмите кнопку Да (Yes). Разрешение сетевого компонента. Для разрешения сетевого компонента: 1. В контекстном меню подключения в папке Сеть и удаленный доступ к сети выберите команду Свойства. 2. Выполните одно из следующих действий: Если это локальное подключение, в списке сетевых компонентов, используемых этим подключением, установите флажок рядом “ клиентом., службой или протоколом, которые требуется разрешить. Если это коммутируемое, VPN- или входящее подключение, на вкладке Сеть (Networking) в списке сетевых компонентов, используемых этим 73 подключением, установите флажок рядом с клиентом, службой или протоколом, которые требуется разрешить. Запрещение сетевого компонента. Для запрещения сетевого компонента: 1. В контекстном меню подключения в папке Сеть и удаленный доступ к сети выберите команду Свойства. 2. Выполните одно из следующих действий: Если это локальное подключение, в списке сетевых компонентов, используемых этим подключением, снимите флажок рядом с клиентом, службой, или протоколом, которые требуется запретить. Если это коммутируемое, VPN- или входящее подключение, на вкладке Сеть в списке сетевых компонентов, используемых этим подключением, снимите флажок рядом с клиентом; службой или протоколом, которые требуется запретить. 7. Локальное подключение Как правило, компьютеры под управлением Windows 2000 подключены к локальной сети (ЛВС). При инсталляции операционная система обнаруживает сетевой адаптер и создает локальное сетевое подключение для данного адаптера. Это подключение отображается, как и все другие подключения, в папке Сеть и удаленный доступ к сети. По умолчанию локальное подключение всегда активно. Локальное подключение — единственный тип подключения, которое автоматически становится активным после запуска компьютера или установки ОС. Если разъединить локальное подключение, оно больше не активизируется автоматически (информация об этом хранится в профиле оборудования — hardware profile). В соответствии с требованиями мобильного пользователя происходит автоматическая подстройка оборудования. Например, если пользователь переезжает в удаленный офис корпорации и создает для этого местоположения отдельную конфигурацию оборудования, которая не содержит средств доступа к ЛВС, то Windows 2000 не тратит время впустую на ожидание готовности сетевого адаптера. Адаптер даже не будет производить попыток подключения к несуществующей ЛВС. Если в компьютере имеется более одного сетевого адаптера, в папке Сеть и удаленный доступ к сети появится значок локального подключения для каждого адаптера. Для установления локальных подключений применяются среды Ethernet, Token Ring, кабельные модемы, xDSL, FDDI, IP no ATM, IrDA (инфракрасная связь), радио- и эмулированные ЛВС на базе ATM. Эмулированные локальные сети используют драйверы виртуальных адаптеров, например, драйверы, поддерживающие протокол LANE (LAN Emulation, эмуляция ЛВС). Если в сети произошли изменения, можно настроить существующее локальное подключение, чтобы это отразить. Выбирая в контекстном меню 74 сетевого или коммутируемого подключения пункт Состояние (Status), можно просматривать информацию о подключении (продолжительность и быстродействие подключения, объемы переданных и полученных данных), а также использовать диагностические средства, применимые для конкретного подключения. При установке на компьютер нового устройства для подключения к ЛВС, после перезапуска Windows 2000 в папке Сеть и удаленный доступ к сети появится новый значок локального подключения. Можно установить сетевой адаптер PCMCIA при включенном компьютере, перезапуск Windows 2000 не потребуется — значок локального подключения немедленно появится в указанной папке. Для настройки устройства, используемого для подключения, и связанных с ним клиентов, служб и протоколов служит пункт Свойства контекстного меню. Клиенты определяют доступ через это подключение к компьютерам и файлам в соответствующей сети. Службы предоставляют доступ к ресурсам, например к совместно используемым принтерам и файлам, Протоколы, например TCP/IP, определяют "язык" для связи между компьютерами. Можно конфигурировать адаптеры ЛВС при помощи пункта Дополнительные параметры (Advanced Settings) меню Дополнительно (Advanced) папки Сеть и удаленный доступ к сети. Можно изменять порядок адаптеров, используемых подключением и связанными с ними клиентами, службами и протоколами. Создание подключения к ЛВС. Как правило, большинство пользователей Windows 2000 подключены к локальной сети. При запуске Windows 2000 обнаруживает сетевой адаптер и автоматически создает подключение к ЛВС. В отличие от других типов подключений, подключение к ЛВС выполняется автоматически. 75 8. Подключение к Интернет Доступ к Интернету легко реализуется при помощи сетевых подключений. Для этого требуется выполнение следующих условий: Наличие протокола TCP/IP. Если пользователь принадлежит домену, то учетная запись пользователя должна иметь разрешения удаленного доступа. Наличие модема или другого соединения с Интернет-провайдером (Internet Service Provider, ISP). Наличие учетной записи у Интернет-провайдера. Подключение к Интернету производится путем установления прямого подключения к Интернет-провайдеру и регистрации в его системе. Последовательность входа зависит от требовании провайдера. Подключения по протоколу РРР обычно полностью автоматизированы. Подключения по протоколу SLIP могут потребовать входа в систему при помощи терминального окна; этот процесс можно (или нельзя) автоматизировать с применением сценария в файле Switch.inf. Прежде чем подключение к Интернету будет создано, необходимо связаться с представителем Интернет-провайдера, чтобы проверить параметры настройки подключения: Заданный IP-адрес Опцию сжатия заголовков IP (для РРР) Адрес DNS и имя домена Дополнительные параметры настройки, например, использование протокола защиты Интернета (IPSec) Подключение к Интернет-провайдеру может использовать модем и телефонную линию, адаптер ISDN и линию ISDN, протокол удаленного доступа AppleTalk (ARAP), протокол управления AppleTalk (АТСР), сеть Х.25, протокол туннелирования "точка-точка" (РРТР) или протокол туннелирования второго уровня (L2TP). По модему желательно использовать самое надежное (устойчивое) и, по возможности, самое быстрое соединение, что снизит время загрузки данных из Интернета. Рекомендуется использовать модем со скоростью 28,8 Кбит/с или выше, имеющий также поддержку протоколов V.34, V.90 и т. п. После установления соединения с провайдером пользователь получает доступ к Интернету и любым другим услугам, например к электронной почте, предоставляемым этим провайдером. Создание подключения к Интернату. Для создания подключения: 1. В папке Сеть и удаленный доступ к сети дважды щелкните на значке Создание нового подключения (Make New Connection) и нажмите кнопку Далее (Next). 2. Выберите положение Телефонное подключение к Интернету (Dial-up to the Internet) переключателя, нажмите кнопку Далее 76 3. Установите переключатель Телефонное подключение к частной сети (Dial-up to private network), нажмите кнопку Далее и следуйте командам Мастеpa сетевого подключения (Network Connection Wizard), которому нужно будет указать номер телефона (рис. 16.15) и прочие параметры подключения. Рис. 16.15. Окно программы-мастера сетевых подключений Копирование телефонного подключения. В контекстном меню телефонного, VPN- или прямого подключения в папке Сеть и удаленный доступ к сети выберите команду Создать копию (Duplicate). Примечание: Подключения к ЛВС и входящие подключения нельзя копировать. Можно создать сколько угодно коммутируемых, VPN- или прямых подключений, копируя их в папке Сеть и удаленный доступ к сети. Можно также переименовывать и настраивать их, создавая отдельные подключения для различных модемов, поставщиков услуг Интернет, параметров набора номера и т. д. Настройка модема для телефонного подключения. Чтобы настроить модем для телефонного подключения: 1. В папке Сеть и удаленный доступ к сети в контекстном меню подключения выберите команду Свойства (Properties). 2. В списке Подключить через (Connect using) выберите модем, который необходимо настроить, и нажмите кнопку Настроить (Configure). 3. В группе Параметры оборудования (Hardware features) установите флажки для разрешения необходимых функций (аппаратное управление потоком, обработка ошибок модемом или сжатие данных модемом, рис. 16.16). 77 4. В группе Инициализация (Initialization) установите флажки для выбора тех параметров, которые необходимо разрешить (вывод окна терминала и сценарий). 5. Если требуется активизировать динамик модема, установите флажок Включить динамик модема (Enable modem speaker). Примечание: Чтобы гарантировать совместимость, желательно использовать тот же тип модема, что и на сервере удаленного доступа, выбрать ту же начальную скорость и разрешить те же функциональные возможности оборудования; Если используется другая модель модема, то, по крайней мере, необходимо выбрать модем с поддержкой тех же стандартов ITU-T, что поддерживаются модемом на сервере. Разрешение функциональных возможностей, не поддерживаемых модемом; не влияет на его производительность. Рис. 16.16. Настройка модема для подключения 9. Совместное использование Интернет-подключения Возможность совместного использования Интернет-подключения (Internet Connection Sharing, ICS) позволяет применять Windows 2000 для подключения домашней или малой офисной сети к Интернету. Например, можно создать домашнюю сеть, которая соединяется с Интернетом с помощью телефонного соединения. Если разрешить совместное использование подключения на компьютере, соединенном по телефонной 78 линии, то этот компьютер предоставит службы преобразования сетевых адресов (Network Address Translation, NAT), выдачи адресов (DHCP) и разрешения имен (DNS) всем компьютерам домашней сети. Можно настраивать приложения и службы, которые должны работать через Интернет. Например, если пользователи домашней сети хотят получить доступ к ресурсам SQL Server корпоративной сети, можно настроить приложение SQL Server для подключения, которому разрешено совместное использование. Услуги, предоставляемые домашней сетью, можно настроить так, чтобы к ним могли получить доступ пользователи Интернета. Например, если в домашней сети есть веб-сервер, то, чтобы пользователи Интернета могли соединяться с ним, нужно на совместно используемом подключении настроить службу WWW. Возможность совместного использования удобна в малом офисе или в домашней сети, где конфигурирование сети и подключение к Интернету выполняет компьютер под управлением Windows 2000, на котором располагается данное подключение. Считается, что в этой сети данный компьютер — единственное подключение к Интернету, единственный шлюз в Интернет, и что он назначает все сетевые адреса. Примечание: Чтобы настраивать совместное использование Интернетподключения, необходимо иметь полномочия администратора. ICS недоступно в сети с контроллерами доменов Windows 2000 Server, серверами DNS, шлюзами, серверами DHCP или системами, настроенными для использования статического IP. Если используется Windows 2000 Server и существует один (или несколько) из этих компонентов, то, чтобы достичь того же результата, необходимо использовать возможности NAT из состава службы маршрутизации и удаленного доступа (RRAS). Компьютеру с ICS требуется два подключения. Первое, обычно адаптер ЛВС, служит для связи с компьютерами в домашней сети, второе подключает домашнюю сеть к Интернету. Необходимо проверить, что совместный доступ разрешен для подключения, которое соединяет домашнюю сеть с Интернетом. При этом домашнее сетевое подключение правильно распределяет адреса TCP/IP внутренним пользователям, а общедоступное подключение будет правильно соединять домашнюю сеть с Интернетом. Пользователи вне домашней сети ограждены от опасности получения пакетов с адресами из домашней сети. Разрешая совместное использование для подключения, компьютер удаленного доступа становится DHCP-сервером для домашней сети. DHCP динамически назначает TCP/IP-адреса компьютерам при их запуске. Если совместное использование ошибочно разрешено на внешнем сетевом адаптере (подключающем сеть к Интернету), домашний сервер DHCP может предоставлять адреса TCP/IP пользователям вне домашней сети, что приведет к проблемам в других сетях. Когда разрешается совместное использование подключения, сетевой адаптер, связанный с домашней или малой офисной сетью, получает новый статический IP-адрес. Существующие подключения, использующие TCP/IP 79 на компьютере с совместным использованием соединения, будут потеряны и должны быть восстановлены вручную. Настройка ICS. При разрешении совместного использования подключения некоторые протоколы, службы, интерфейсы и маршруты будут сконфигурированы автоматически (табл. 16.10). Таблица 16.10. Настройки совместного использования подключения Сконфигурированные Состояние элементы IP-адрес =169.254.0.1 Настроен с маской подсети 255.255.0.0 на адаптере ЛВС, который связан с домашней сетью или сетью малого офиса Возможность автоматического вызова (AutoDial) Разрешена Статический IP-маршрут по умолчанию Создается, когда производится телефонное подключение Служба совместного использования Запущена Служба распределения DHCF (DHCP allocator) Разрешена с заданным по умолчанию диапазоном адресов 169.254.0.0 и маской подсети 255.255.0.0. Посредник DNS (DNS Разрешен proxy) Разрешение совместного использования Интернет-подключения. Для разрешения совместного использования Интернет-подключения: 1. В папке Сеть и удаленный доступ к сети в контекстном меню подключения выберите пункт Свойства. 2. На вкладке Общий доступ (Internet Connection Sharing) установите флажок Разрешить общий доступ для этого подключения (Enable Internet Connection Sharing for this connection). 3. Если требуется, чтобы это подключение автоматически активизировалось, когда другой компьютер в ЛВС пытается обратиться к внешним ресурсам, установите флажок Разрешить вызов по требованию (Enable on-demand dialing). Примечание: Нельзя использовать эту возможность в сети с другими контроллерами доменов Windows 2000 Server, серверами DNS, шлюзами, серверами DHCP или системами, сконфигурированными для использования статических IPадресов. Чтобы разрешить совместное использование подключения, необходимо иметь полномочия администратора. 80 Настройка приложений и служб для ICS. Чтобы настроить совместное использование для приложений и служб: 1. В папке Сеть и удаленный доступ к сети в контекстном меню подключения выберите пункт Свойства. 2. Убедитесь, что на вкладке Общий доступ установлен флажок Разрешить общий доступ для этого подключения и нажмите кнопку Параметры (Settings). 3. Если для компьютеров, совместно использующих подключение, нужно настроить сетевые приложения, то на вкладке Приложения (Applications) нажмите кнопку Добавить (Add) и выполните следующие действия: В поле Имя приложения (Name of application) введите легко запоминающееся имя этого приложения (рис. 16.26). В поле Порты удаленного сервера (Remote server port number) введите номер порта удаленного сервера, который использует данное приложение, а затем выберите протокол — TCP или UDP. В поле TCP или UDP, или в обоих полях введите номер порта в той сети, с которой соединится приложение. Некоторые приложения требуют использования и TCP и UDP. 4. Если нужно настроить службу, которая будет доступна пользователям в удаленных сетях, на вкладке Службы (Services) нажмите кнопку Добавить (Add) и выполните следующие действия: В поле Имя службы (Name pf service) введите легко запоминающееся название для данной службы. В поле Номер порта службы (Service port number) введите номер порта на том компьютере, на котором функционирует данная служба, а затем переключателем выберите протокол TCP или UDP. В поле Имя или адрес сервера в частной сети (Name or address of server computer on private network) введите имя или IP-адрес компьютера в частной сети, на котором функционирует данная служба. Пример настройки приложения — широко известная игра Diablo. Если вы хотите разрешить пользователям в домашней сети играть в Diablo с другими пользователями в сети Интернет, введите Diablo в качестве имени приложения, не — в качестве номера порта удаленного сервера, а 6112 — для ответного порта U DP. Пример настройки службы — веб-сервер. Если пользователь в домашней сети поддерживает веб-сервер на компьютере с именем michael, к которому необходимо предоставить доступ пользователям Интернета, введите web server в качестве имени службы, во — в качестве номера порта TCP (поле Номер порта службы) и michael — в качестве имени компьютера-сервера в частной сети (поле Имя или адрес сервера в частной сети). 10. Доступ через ISDN 81 Для повышения быстродействия сетевого подключения можно использовать линию ISDN (Integrated Services Digital Network) — цифровую сеть с интегрированными службами. Стандартные телефонные линии обычно позволяют осуществлять обмен со скоростями до 56 Кбит/с, по линии ISDN можно достичь скоростей 64 и даже 128 Кбит/с. Линия ISDN должна быть установлена телефонной компанией как на сервере, так и на противоположном конце соединения. -Работа ISDN также требует, чтобы на обоих концах были установлены платы ISDN. Затраты на оборудование и линии ISDN могут быть выше, чем на установку стандартных модемов и прокладку телефонных линий. Однако быстродействие связи уменьшает время соединения, что сокращает денежные затраты. Линия ISDN состоит из двух В-каналов, передающих данные со скоростью 64 Кбит/с, и одного D-канала для передачи управляющих сигналов со скоростью 16 Кбит/с. Можно конфигурировать каждый канал В, чтобы он работал как отдельный порт. При помощи некоторых драйверов ISDN-устройств можно объединять каналы. Это означает, что можно получить большую ширину полосы пропускания, настроив работу обоих Вканалов в качестве единственного порта. При конфигурации такого рода скорость линии увеличивается до 128 Кбит/с. Функция многоканальной связи (multilink) в Windows 2000 логически объединяет части канала ISDN. Многоканальная связь объединяет несколько физических линий в логическую совокупность (пучок, bundle) с увеличенной шириной йолосы пропускания. Кроме того, можно распределять многоканальную связь динамически, используя линии только тогда, когда они реально требуются. Эта функция устраняет избыточность ширины полосы пропускания, представляя существенное преимущество для пользователей. Настройка параметров ISDN. Для настройки параметров ISDN: 1. В папке Сеть и удаленный доступ к сети в контекстном меню соединения, использующего ISDN, выберите пункт Свойства. 2. На вкладке Общие в списке Подключить через (Connect using) выберите требуемое устройство ISDN и нажмите кнопку Настроить (Configure). 3. В открывшемся диалоговом окне Настройка ISDN (ISDN Configure) выполнить одно или оба действия: В списке Тин линии (Line type) выберите нужный тип линии. Линии более высокого качества указаны ближе к началу списка. Если требуется установить соединение с выбранным типом линии, а затем повторно установить соединение с более низким качеством в зависимости от состояния линии, установите флажок Согласование типа линии (Negotiate line type). Примечание: В зависимости от типа используемого ISDN-адаптера может появиться окно настройки параметров модема. 82 11. Виртуальные частные сети (VPN) и их администрирование Протоколы РРТР или L2TP, по умолчанию установленные на компьютере, обеспечивают надежный доступ к ресурсам в сети, соединяясь с сервером удаленного доступа Windows 2000 через Интернет или другую сеть. Если для создания сетевого подключение к частной (private) сети используется обще доступная (public) сеть, то совокупность таких подключений называется виртуальной частной сетью (Virtual Private Network, VPN). Достоинства таких сетей перечислены в табл. 16.3, а их особенности и способы использования подробно рассматриваются в следующих разделах главы. Таблица 16.3. Достоинства Использования сетей VPN Преимущество Пример Меньшая стоимость Для подключения используется Интернет (вместо установления телефонного подключения с использованием дорогой междугородной связи). Поскольку Интернет-провайдер сам поддерживает оборудование связи (модемы, адаптеры ISDN и т. п.), при развертывании сети нужно закупать и сопровождать меньшее количество оборудования Аутсорсинг (Передача третьим лицам, outsourcing) забот по поддержке телефонных подключений Пользователь может по городскому номеру подключиться к телефонной компании или ISP, который затем подключит его к серверу удаленного доступа Windows 2000 и к корпоративной сети. Телефонная компания или ISP управляет модемами и телефонными линиями, выделенными для коммутируемого доступа. ISP поддерживает сложную инфраструктуру коммуникационного оборудования, а сетевой администратор корпорации занимается централизованным управлением учетными записями пользователей на сервере удаленного доступа Расширенная безопасность Подключение через Интернет (если используются протоколы PPTP/L2TP) является шифрованным и безопасным, поскольку сервер удаленного доступа поддерживает современные протоколы аутентификации и шифрования. Конфиденциальные данные надежно защищены от пользователей Интернета, но доступны для пользователей виртуальной частной сети. Поскольку данные, передаваемые по VPN-подключению зашифрованы, используемые адреса защищены от просмотра извне; в сети Интернет "видны" только внешние IP-адреса (концов соединения). Это особо важно для корпораций с внутренними IP-адресами, 83 поскольку исключаются административные затраты на изменение IP-адресов для удаленного доступа через Интернет Поддержка сетевых протоколов Поскольку поддерживаются широко распространенные сетевые протоколы (включая TCP/IP, IPX и NetBEUI), с использованием VPN можно дистанционно выполнять любое приложение, зависящее от конкретного сетевого протокола Как показано в следующих примерах, есть два способа создать VPNподключение: устанавливая соединение с ISP, или соединяясь с Интернетом напрямую. Пример 1. VPN-подключение сначала производит запрос к Интернетпровайдеру. После того как это подключение произведено, VPNподключение делает другой запрос к серверу удаленного доступа, который устанавливает туннель L2TP или РРТР. После аутентификации можно получать доступ к корпоративной сети, как это показано на рис. 16.8. Рис. 16.8. VPN-подключение на основе подключения к Интернет-провайдеру Пример 2. Пользователь, имеющий выход в Интернет, соединяется с сервером удаленного доступа при помощи VPN-подключения (рис. 16.9). Таким пользователем может быть тот, чей компьютер подключен к локальной сети, пользователь кабельного модема или абонент службы типа ASDL, где протокол IP доступен сразу после включения компьютера. Драйвер РРТР или L2TP создает туннель через Интернет и производит подключение к серверу удаленного доступа, использующему РРТР или L2TP. После аутентификации пользователь может получить доступ к корпоративной сети, как и в предыдущем примере. 84 Рис. 16.9. VPN-подключение, использующее существующее подключение к Интернету Меньшая стоимость. При помощи VPN мобильные пользователи и сотрудники-надомники (telecommuters) могут получить доступ к корпоративной локальной сети через Интернет за меньшую плату, чем при традиционных решениях по поддержке удаленного доступа. Гораздо эффективнее использовать мощную коммуникационную инфраструктуру телефонной компании, чем прокладывать собственную сеть, устанавливать телефонные линии и закупать коммутаторы. Подключение к виртуальной частной сети через сетевой адаптер подобно набору номера при помощи модема для подключения к обычному сeрверу удаленного доступа, VPN освобождает корпорацию от эксплуатационных расходов и затрат на покупку модемных пулов и специально предназначенных для этого аналоговых телефонных линий. Модемы и сопутствующая инфраструктура находятся в ведении поставщика услуг Интернета, при этом не страдают ни безопасность, ни возможности управления удаленным доступом. В то же время, очевидны преимущества безопасности доступа к частным данным, обеспечиваемой дополнительной аутентификацией, шифрованием и сжатием данных пользователя. Аутсорсинг телефонных подключений. Коммуникационное оборудование, необходимое для телефонных подключений, достаточно сложно. На большом предприятии создание сервера удаленного доступа для поддержки телефонных подключений на базе Windows 2000 требует установки модемов; контроллеров, а также прокладки множества коммуникационных кабелей. Кроме того, большинство решений не обеспечивает эффективную поддержку технологий ISDN, V.34 и V.90. Корпорации часто выбирают аутсорсинг (outsourcing) коммутируемого доступа к своим базовым корпоративным сетям при помощи рентабельного, не зависящего от протокола, безопасного способа, который не требует никаких изменений в существующем адресном пространстве. Поддержка виртуальных глобальных сетей на основе VPN-подключений — один из путей, при помощи которого Интернет-провайдер может обеспечивать потребности корпораций. Таким образом, обслуживающая компания поддерживает и управляет модемами удаленного доступа и каналами связи, оставляя системному администратору корпорации управление пользователями и их аутентификацию. В этом решении воплощены все преимущества аутентификации РРР, шифрования и технологий сжатия (рис. 16.10). 85 Рис. 16.10. Пример сети, использующей аутсорсинг В подключении не участвует драйвер РРТР; клиент просто устанавливает РРР-подключение к серверу удаленного доступа или модемному пулу. В свою очередь, сервер или пул модемов должен осуществить подключение с помощью РРТР для связи с сервером удаленного доступа. Улучшенная безопасность. VPN-подключения, использующие РРТР и L2TP, аутентифицируются по методам аутентификации протокола РРР на уровне пользователя, включающим PAP, CHAP, SPAP, MS-CHAP и, дополнительно, ЕАР. Благодаря возможностям протокола ЕАР (Extensible Authentication Protocol, расширяемый протокол идентификации) и средств безопасности IP (IPSec), виртуальная частная сеть предоставляет улучшенную безопасность для удаленных пользователей. Пользуясь преимуществом аутентификации РРР и параметрами шифрования, задавая РРТР-фильтрацию на сервере удаленного доступа и ограничивая сервер удаленного доступа работой только с аутентифицированными РРТР-клиентами, которые используют шифрованные данные, системный администратор может укрепить безопасность данных и управлять удаленными пользователями намного эффективнее. В некоторых средах данные являются строго конфиденциальными и может потребоваться, чтобы они были физически отделены и скрыты от большинства корпоративных пользователей. Финансовые или личные данные — это данные, требующие максимальной защищенности. Пользователи в корпоративной интрасети, которым предоставлены соответствующие разрешения, могут устанавливать удаленное VPNсоединение с VPN-сервером и получать доступ к защищенным ресурсам частной сети отдельных подразделений корпорации. Весь обмен данными через VPN шифруется, что обеспечивает конфиденциальность данных. Пользователи, не имеющие соответствующих разрешений по установлению VPN-подключения с VPN-сервером, не могут увидеть этот "скрытый" сервер. Поддержка сетевых протоколов. Поскольку технология организации VPN поддерживает наиболее распространенные сетевые протоколы, клиентам сетей Ethernet, TCP/IP, IPX и NetBEUI не требуются дополнительные затраты на использование VPN. Любой сетевой протокол, 86 поддерживаемый службой удаленного доступа, поддерживается и в технологии VPN. Это означает, что можно удаленно выполнять приложения, зависящие от определенных сетевых протоколов. В свою очередь, это снижает затраты по созданию и поддержке VPN-подключений. Безопасность IP-адресов. Если в корпоративной сети используется незарегистрированный IP-адрес (или адрес, зарезервированный InterNIC для частных сетей, например, из диапазона Ю.аДэ.с), то можно направлять трафик через Интернет, указывая только один реальный внешний IP-адрес. Внутри VPN-пакета содержится как этот реальный адрес, так и частный адрес получателя. Поскольку пакет зашифрован, адреса абонентов удаленной частной сети защищены от просмотра. В Интернете видны только внешние IP-адреса. Преимущество VPN наиболее очевидно для корпораций с частными внутренними IP-адресами, поскольку им не требуются административные затраты на изменение IP-адресов для организации удаленного доступа. Администрирование VPN. При помощи Active Directory (на Windows 2000 Server) администратор системы может настраивать VPN для пользователя, значительно усиливая безопасность сети, например, задавать уровни шифрования данных и паролей, а также аутентификацию. Эти требования могут применяться к индивидуальным пользователям или к группе однотипных пользователей (при помощи групповой политики). Например, администратор системы может настроить удаленный доступ, задав такую групповую политику, чтобы для всех пользователей группы, которой она назначена, требовалась аутентификация с использованием протокола ЕАР и сильное шифрование данных (128-битное). При наличии групповой политики критерии безопасности автоматически устанавливаются по отношению к любому пользователю, которому назначена эта групповая политика, когда он соединяется с сервером удаленного доступа. Создание VPN-подключения. Чтобы создать подключение для виртуальной частной сети: 1. В папке Сеть и удаленный доступ к сети сделайте двойной щелчок на значке Создание нового подключения (Make New Connection) и нажмите кнопку Далее (Next). 2. Установите переключатель Подключение к виртуальной частной сети через Интернет (Gormect to a private network through the Internet, рис. 16.11), нажмите фюпку Далее и выполните одно из следующих действий: Если :перед установкой "туннельного" доступа к нужному компьютеру или сети требуется произвести подключение к провайдеру услуг Интернет или другой сетью, выберите положение переключателя Набрать номер для следующего предварительного подключения (Automatically dial this initial connection) и, выбрав нужное подключение в списке нажмите кнопку Next (рис. 16.12). Если не требуется автоматически производить начальное подключение то выберите положение переключателя Не набирать номер 87 для предварительного подключения (Do not dial the initial connection) и нажмите кнопку Далее. 3. Введите имя хоста или IP-адрес компьютера или сети, с которой происходит соединение, и нажмите кнопку Далее (рис. 16.13). 4. Выполните одно из следующих действий: Если необходимо, чтобы подключение было сделано общим для всех пользователей, выберите положение переключателя для всех пользователей (For all users) и нажмите кнопку Далее (рис. 16.14). Если данное подключение предназначено только для текущего пользователя, выберите положение только для меня (Only for myself) переключателя и нажмите кнопку Далее. 5. Если нужно разрешить совместный доступ к ресурсам с других компьютеров через это телефонное подключение, установите флажок Разрешить общий доступ для этого подключения (Enable shared access for this connection), а также укажите, нужно ли производить автоматическое установление данного подключения, если другой компьютер в вашей локальной сета попытается получить доступ к внешним ресурсам установив, по необходимости, флажок Разрешить вызов по требованию (Enable ondemand dialing) и нажмите кнопку Далее, затем введите название этого подключения и нажмите кнопку Завершить (Finish). Примечание: Чтобы сделать подключение доступным для всех пользователей, нужно войти в систему с административными полномочиями. Можно создавать множественные виртуальные подключения к сети копируя их в папке Сеть и удаленный доступ к сети. Можно переименовывать подключения и настраивать их параметры, легко создавая различные подключения, для разных соединений с разными параметрами безопасности и т. д. 88 Рис. 16.11. Выбор типа подключения Рис. 16.12. Выбор способа подключения 89 Рис. 16.13. Ввод имени/адреса удаленного компьютера Рис. 16.14. Разрешение использования подключения другим пользователям 90 Лекция 6 “Технология Object Linking and Embedding (OLE); Технология Component Object Model (COM) , Технология ActiveX. Сервер сценариев WSH” В Windows с самого начала для обеспечения обмена данными между приложениями была разработана технология связывания и внедрения объектов (Object Linking and Embedding, OLE). Сначала технология OLE использовалась для создания документов, а затем для решения более общей задачи – предоставления приложениями друг другу собственных функций (служб) и правильного использования этих функций. Технология, позволяющая одному приложению (клиенту автоматизации) вызывать функции другого приложения (сервера автоматизации) была названа OLE Automation. В основе OLE и OLE Automation лежит разработанная Microsoft базовая "компонентная" технология Component Object Model (COM). В общих словах, компонентное программное обеспечение — это способ разработки программ, при котором используются технологии создания программных модулей, подобные технологиям, применяемым для разработки аппаратных средств. Сложные элементные схемы собираются из стандартизированных микросхем, которые имеют четко определенные документированные функции. Разработчик может эффективно пользоваться такими микросхемами, не задумываясь об их внутренней структуре. В программных компонентах, написанных на каком-либо языке программирования, детали реализации используемых алгоритмов также скрыты внутри компонента (объекта), а на поверхности находятся общедоступные интерфейсы, которыми могут пользоваться и другие приложения, написанные на том же ил другом языке. В настоящее время, по заявлению Microsoft, термин OLE используется только по историческим причинам. Вместо него Microsoft с 1996 года использует новый термин — ActiveX, первоначально обозначавший WWW (World Wide Web) компоненты (объекты), созданные на базе технологии СОМ. Технология ActiveX сейчас является ключевой в продуктах Microsoft. Наиболее полное воплощение она нашла в программах Microsoft Office, Internet Explorer, Internet Information Service (US). В эти продукты для управления соответствующими объектами автоматизации были встроены интерпретаторы специальных языков сценариев: VBScript (используется в Microsoft Office, Internet Explorer, IIS) и JScript (используется в Internet Explorer, IIS Однако непосредственно в операционной системе, вне этих продуктов, вы поднять сценарии, написанные на VBScript или JScript, было нельзя. Сервер сценариев WSH является мощным инструментом, предоставляющим единый интерфейс для специализированных языков (в том числе для VBScript и JScript), которые, в свою очередь, позволяют использовать любые внешние объекты ActiveX. С помощью WSH сценарии могут быть выполнены непосредственно в операционной системе Windows. Назначение и основные свойства WSH 91 При помощи WSH можно выполнять сценарии, написанные на любом языке, для которого установлен соответствующий модуль (scripting engine), поддерживающий технологию ActiveX Scripting. Сценарии могут запускаться несколькими способами: с рабочего стола или из Проводника Windows (с помощью исполняемого файла wscript.exe), и из командной строки (с помощью файла cscript.exe). Используя сценарии WSH, можно непосредственно работать с файловой системой компьютера, а также управлять работой других приложений (серверов автоматизации). При этом возможности сценариев ограничены только средствами, которые предоставляют доступные серверы автоматизации. WSH предъявляет минимальные требования к объему оперативной памяти и является очень удобным инструментом для написания сложных сценариев регистрации пользователей и автоматизации повседневных задач. 'В поставку Windows 98 входит WSH версии 1.0, а в Windows 2000 — версии 2.0. Мы будем рассматривать WSH версии 2.0, в которой Microsoft реализовала поддержку двух языков сценариев: VBScript и JScript. В принципе, можно пользоваться и разработками сторонних компаний, которые предоставляют свои модули для других языков, например, PerlScript, TCL, REXX и Python. По своим функциональным возможностям языки VBScript и JScript в настоящее время стали практически равнозначны, однако внешне их синтаксис различен: VBScript основан на языке Visual Basic, a JScript похож на Java и С. Надо отметить, что большинство примеров сценариев WSH, которые 'встречаются в литературе и на сайтах сети Internet, написаны на VBScript. Отметим также, что WSH 2.0 позволяет в одном сценарии использовать языки JScript и VBScript одновременно. Описанию языка JScript посвящено большое количество доступной литературы, однако, практически везде этот язык рассматривается с точки зрения управления браузером и создания интерактивных HTML-страниц. Мы же в следующем разделе рассмотрим этот язык лишь в том объеме, в котором он может понадобиться при написании сценариев WSH. WSH-сценарий, написанный на языке JScript, — это обычный текстовый файл с расширением js, создавать его можно в любом текстовом редакторе, способном сохранять документы в формате "только текст". Размер сценария может изменяться от одной до тысяч строк, предельный размер ограничивается лишь максимальным размером файла в соответствующей файловой системе. Необходимые сведения о языке JScript Язык JScript — это разработанный Microsoft интерпретируемый объектно-ориентированный язык сценариев, который первоначально предназначался для создания динамических HTML-страниц. Отметим, что JScript не является урезанной версией какого-либо другого языка программирования, хотя по синтаксису он похож на языки Java и С. Как уже 92 было сказано выше, в этом разделе мы кратко рассмотрим те возможности и свойства JScript, которые могут потребоваться при составлении сценариев, выполняемых с помощью WSH. Переменные В сценариях JScript, как и в любом другом языке программирования, можно использовать переменные, обращаясь к ним по имени. При этом переменные, могут быть как глобальными (доступными из любого места сценария), так и локальными (область действия ограничивается функцией, в которой они определены). Хорошим тоном считается предварительное объявление используемых переменных с помощью ключевого слова var, хотя это является обязательным условием только для локальных переменных, определенных в функциях. Пример объявления переменной имеет вид: var MyVariable; При объявлении тип переменной явным образом не указывается (как это делается, например, в языках С или Pascal). Определенный тип переменной присваивается только тогда, когда в нее записывается какое-либо значение. Язык JScript является регистро-зависимым, т. е. имена MyVariable и myvariabie представляют разные переменные. Кроме этого, при выборе имен переменных следует придерживаться следующих правил: * имя переменной должно начинаться с буквы или с символов "_", "$" и может состоять только из букв, цифр, а также символов "_", "$"; * имя переменной не должно совпадать с зарезервированными ключевыми I словами языка JScript, Список ключевых слов JScript приведен в таблице: Зарезервированные ключевые слова JScript Break default false new true Case delete finally null try Catch do for return typeof Class else function super var Const enum if switch void Continue export import this while in throw with Debugger extends Значения переменным в JScript присваиваются с помощью оператора присваивания "=". Например: 93 var MyVariable; MyVariable = "Привет! "; Здесь мы объявили переменную MyVariable и записали в нее текстовую строку. Однако далее в любом месте сценария мы можем присвоить переменной MyVariable числовое значение (при этом тип переменной изменится), например: MyVariable = 10; Кроме этого, переменной можно присвоить специальное значение null: MyVariable = null; В данном случае переменной MyVariable не назначается никакого определенного типа (пустой тип). Такое присвоение применяется в тех случаях, когда необходимо объявить переменную и проинициализировать ее, не прививая этой переменной никакого определенного типа и значения. Типы данных В JScript поддерживаются шесть типов данных, главными из которых являются числа, строки, объекты и логические данные. Оставшиеся два типа — это null (пустой тип) и undefined (неопределенный тип). Числа В сценариях JScript числа могут использоваться в различных форматах: * целые числа (по основанию 8, 10 или 16); * числа с плавающей десятичной точкой; * числа в научной нотации. Также имеются несколько специальных числовых значений: * NaN (Not a Number) — так называемое "нечисло", которое не соответствует никакому числу (это значение генерируется в тех случаях, когда результат выполнения операции над числами не может быть представлен виде числа); * положительная бесконечность; П отрицательная бесконечность; * положительный 0; * отрицательный 0. Текстовые строки Текстовые строки — это последовательность символов, заключенных в одинарные или двойные кавычки, например: "Привет! " 'Большой привет! ‘И тогда он крикнул: "Берегись!"’ Строка может иметь нулевую длину (пустая строка): MyVariable = "" В JScript можно также использовать специальные комбинации символа с помощью которых в строки включаются некоторые неотображаемые символы или символы, имеющие специальное значение. Каждая из этих комбинаций (escape-последовательностей) начинается с символа обратной и сой черты "\". 94 Объекты В JScript под объектом понимается совокупность свойств и методов. Метод — это внутренняя функция объекта, свойство — это одно значение какого-либо типа или несколько таких значений (в виде массива или объекта), хранящихся внутри объекта. Поддерживаются три вида объектов: * встроенные (внутренние) объекты; * объекты, создаваемые программистом в сценарии; * внешние объекты (например, объекты WSH). Логические данные Логические данные предназначены для выполнения операций сравнения, а также для использования в условных операторах. При этом логические данные имеют только два значения: true (истина) и false (ложь). Отметим, что в JScript эти значения никак не соотносятся с числами 1 и 0. Null (пустой тип) и undefined (неопределенный тип) Если переменная была объявлена с помощью ключевого слова var, но ей еще ни разу не присваивалось значение, она имеет неопределенный тип (undefined): гаг MyVariable; После выполнения этой строки переменная MyVariable имеет тип undefined. Как уже отмечалось выше, если теперь присвоить переменной значение null, то эта переменная будет типа null (пустой тип): MyVariable = null; Работа с системным реестром. Опишем теперь методы, имеющиеся у объекта Wshshell Методы объекта Wshshell Метод Описание AppActivate ( title) Активизирует заданное параметров title окно приложения. Строка title задает название окна (например, "calc" или "notepad") CreateShortcut (strPathname) Создает объект WshShortcut для связи" с ярлыком Windows (расширение Ink) или объект WshUrlshortcut для связи, с сетевым ярлыком (расширение url). Параметр strPathname задает полный путь к создаваемому или изменяемому ярлыку 95 Environment (strType) Возвращает объект ment, содержащий среды заданного вида ExpandEnvironmentStrings (strString) Возвращает значение переменной среды текущего командного окна заданной строкой strString (имя переменной должно быть окружено знаками "%"). LogEvent (intType, sage ' [strTarget]) WshEnvironпеременные Протоколирует события в журнале Windows NT или в файле WSH.log. Целочисленный параметр intType определяет тип сообщения, строка strMessage— текст сообщения. strMes- Параметр strTarget может задаваться только в Windows NT, он определяет название системы, в которой протоколируются события (по умолчанию это локальная система). Метод LogEvent возвращает true, если событие записано успешно, и false — в противном случае Выводит на экран информационное окно с сообщением, заданным параметром strText. Параметр nSecToWait Popup (strText, [nSecToWait] , задает количество секунд, по истече[strTitle], [nType]) нии которых окно будет автоматически закрыто, параметр strTitle определяет заголовок окна, параметр пТуре указывает тип кнопок и иконки для окна RegDelete (strName) Удаляет из системного реестра заданную переменную или ключ целиком RegRead(strWame) Возвращает значение переменной реестра 96 ключа или RegWrite (strName, anyValue Записывает в реестр значение задан[,strType]) ной переменной или ключа целиком Run (strCommand, [intWin- Создает новый, процесс, который заdowStyle] , [bffai tOnReturn] ) пускает приложение, заданное параметром strCommand SendKeys (string) Посылает одно или несколько нажатий клавиш в активное окно (эффект тот же, как если бы вы нажимали эти клавиши на клавиатуре) SpecialFolders (strSpecFolder) Возвращает строку, содержащую путь к специальной папке Windows, заданной параметром strSpecFolder Метод RegDelete Если параметр strName оканчивается символами "\\", то этот метод удаляет ключ целиком (вместе со всеми переменными внутри его), в противном случае удаляется только одна заданная переменная. Параметр strName должен начинаться с одного из следующих корневых ключей (табл. 5.31). Краткое название Длинное название HKCU HKEY CURRENT USER HKLM HKEY LOCAL MACHINE HKCR HKEY_CLASSES_ROOT HKEY USERS 97 HKEY_CURRENT_CONFIG В следующем примере из реестра удаляются HKCU\\ScriptEngine\\Value и ключ HKCU\\ScriptEngine\\Key\\: переменная var Wshshell = WScript.CreateObject("WScript.Shell"); WshShell.RegDelete("HKCU\\ScriptEngine\\Value"); WshShell.RegDelete("HKCU\\ScriptEngine\\Key\\"); Метод RegRead С помощью этого метода можно прочитать типы данных, такие как: REG_SZ, REG_EXPAND_SZ, REG_DWORD, 'REG_BINARY И REG_MULTI_SZ. Если в рестре содержатся данные других типов, то метод RegRead вернет значение DISP_E_ В следующем примере на экран выводятся считанные из реестра с помощью метода RegRead значение переменной и значение ключа: var WS = WScript. CreateObject ("WScript. Shell") ; WScript.Echo(WS.RegRead("HKCU\\Control Panel\\Keyboard\\KeyboardSpeed")); WScript.Echo(WS.RegRead("HKCU\\Control Panel\\Keyboard\\")); 98 Метод RegWrite Параметр anyVaiue метода задает значение, которое нужно записать в заданный параметром strName ключ или переменную реестра. Необязательный параметр strType определяет тип записываемого значения. В качестве strType можно указывать REG_SZ, REG_EXPAND_SZ, REG_DWORD и REG_BINARY. Если в качестве параметра strType передается другое значение, то метод RegWrite вернет E_INVALIDARG. В случае, когда strType установлено в REG_SZ или REG_EXPAND_SZ, метод RegWrite автоматически конвертирует параметр anyvaiue в строку. Если значение strType равно REG_DWORD, то anyVaiue переводится в целый формат. Если strType равно REG_BINARY, то anyvaiue должно быть целым числом. Заключение Сервер сценариев WSH позволяет выполнять непосредственно в операцинной системе написанные на специализированных языках типа JScript и VBScript сценарии, в которых можно использовать любые зарегистрированные в системе объекты ActiveX. Собственные объекты WSH 2.0 содержат свойства и методы, с помощью которых можно выполнять следующие основные действия: • выводить информацию в стандартный выходной поток или в окно Windows; • читать данные из стандартного входного потока, т. е. вводить данные с , клавиатуры или использовать информацию, выводимую другой командои; • использовать свойства и методы внешних объектов, а также обрабатывать в. события этих объектов; • запускать новые процессы или активизировать уже имеющиеся; • работать с локальной сетью: определять имя зарегистрировавшегося Р пользователя, подключать сетевые диски и принтеры; • просматривать и изменять переменные среды; В получать доступ к специальным папкам Windows; В создавать ярлыки Windows; • работать с системным реестром. 99 ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ ПО WSH 1. Для чего служит сервер сценариев WSH? а) для предоставления единый интерфейс для специализированных языков б) для использования любых внешних объектов ActiveX в) оба ответа являются верными 2. Каким образом сценарии могут запускаться? а) с рабочего стола или из Проводника Windows (с помощью исполняемого файла wscript.exe) б) из командной строки (с помощью файла cscript.exe). в) оба ответа являются верными 3. Что представляет собой компонентное программное обеспечение? а) это способ разработки программ, при котором используются технологии создания программных модулей, подобные технологиям, применяемым для разработки аппаратных средств б) технологии создания программных модулей микросхемы, которые имеют четко определенные документированные функции в) детали реализации алгоритмов 4. В сценариях JScript переменные могут быть: а) глобальными (доступными из любого места сценария) б) локальными (область действия ограничивается функцией, в которой они определены) в) глобальными и локальными г) Ни глобальными, ни локальными 100 Лекция 7 “Интерфейс WinAPI, структура Windows-приложения” 1. Общие свойства Windows-платформ Операционные системы Windows - это графические операционные системы, впервые представленные в ноябре 1985 года для использования на компьютерах типа IBM PC и совместимых с ним в виде системы Windows 1.0. По мере проникновения на рынок персональных компьютеров (ПК) системы Windows почти полностью вытеснили всех имеющихся конкурентов и стали, фактически, эталоном операционной системы для ПК. 1.1. Интерфейс программирования приложений Для разработчиков Windows-приложений фирма Microsoft предоставляет специальный интерфейс программирования приложений под названием Win32 API (application programming interface), содержащий совокупность функций, к которым может обращаться приложение. Win32 API реализован на следующих платформах: Win32s, Windows 95/98/NT/2000, Windows CE. Фирма Microsoft стремилась включить все Win32-функции во все платформы, поддерживающие интерфейс Win32 API. Для разработчиков программного обеспечения это означает, что тексты программ не приходится переписывать для каждой платформы заново, приложение достаточно лишь перекомпилировать под другую платформу. Все Win32-платформы содержат Win32-функции, а значит, можно вызывать любую из функций интерфейса Win32 API независимо от того на какой платформе компилируется приложение. Но реализация реализации рознь. Когда Microsoft заявляет, что все Win32-функции будут реализованы на каждой платформе, то на деле это означает, что все Win32-функции будут существовать на каждой платформе, но поддерживаться на некоторых из них они будут только частично. Но, несмотря на очевидные различия между Win32-платформами, их объединяют более существенные черты. В частности, предполагается, что большинство простых Windows-приложений совместимы со всеми Windowsплатформами с незначительными изменениями или вовсе без них. Рассмотрим теперь основные общие свойства Windows-платформ. 101 1.2. Окна и сообщения Систему Windows часто называют операционной системой передачи сообщений. В основе системы лежит механизм, транслирующий практически каждое событие (нажатие клавиши, перемещение мыши, истечение времени таймера) в сообщение. Типичное приложение построено на основе цикла сообщений, который принимает эти сообщения и отправляет их к соответствующим функциям обработчикам сообщений. Хотя сообщения передаются приложениям, они адресованы не им, а другим основополагающим компонентам операционной системы - окнам. С точки зрения пользователя, окно - это прямоугольная область экрана, которую занимает каждая программа Windows. Хотя одна программа может создать несколько окон, всегда имеется одно окно верхнего уровня, которое называется "главным окном" приложения. С точки зрения программиста, окно - это самостоятельно существующий объект, параметры которого описаны в специальных структурах данных, а поведение функцией окна. Итак, окно - это гораздо больше, чем просто прямоугольная область на экране компьютера; оно представляет некую абстрактную сущность, через которую взаимодействуют пользователь и компьютер. 1.3. Приложения, потоки и окна В многозадачных (но не многопоточных) операционных системах наименьшей единицей выполнения является задача или процесс. Механизм распределения задач в этих операционных системах переключается между этими задачами; многозадачность выполняется между двумя или более процессами. В противоположность этому в многопоточной системе наименьшей единицей выполнения является поток, не процесс. Задача или процесс могут состоять из одного или более потоков (обычно один определяется как главный поток). Организация нового потока требует меньше системных ресурсов, потоки одного процесса имеют доступ к одному адресному пространству; переключение между потоками одного и того же процесса требует незначительных расходов ресурсов системы. Типичное Win32-приложение состоит из одного или более потоков, которые выполняются параллельно (потоки можно понимать как многозадачность в рамках отдельного приложения, например, один поток обрабатывает данные, вводимые пользователем, в то время как другой поток занят передачей документа на принтер). Окно всегда принадлежит какому-то потоку; поток может владеть одним или несколькими окнами или вообще ни одним. Поток, выполняющий какие-либо операции, не имеющий ни окон, ни очереди сообщений, ни цикла сообщений, называется обычно рабочим потоком, в противоположность более совершенному, обрабатывающему очередь сообщений потоку пользовательского интерфейса. 102 Все окна находятся в иерархической зависимости: некоторые из них являются окнами верхнего уровня, другие подчинены своим родительским окнам. В Windows существует множество типов окон. Самыми очевидными типами окон являются большие прямоугольные окна, связанные с приложениями, и диалоговые панели, которые можно переместить, изменить их размеры, максимизировать или минимизировать. Менее очевидно, что многие элементы, отображаемые внутри главного или диалогового окна, сами по себе являются окнами. Каждая кнопка, поле ввода, полоса прокрутки, окно списка, пиктограмма, даже фон экрана обрабатывается операционной системой как окно. 1.4. Классы окон Основное поведение окна определяется классом окон. Класс окна (не путать с понятием "класс" языка программирования C++) несет информацию о начальном внешнем виде окна, пиктограмме по умолчанию, курсоре и ресурсе меню, связанном с окном; и, что, возможно, более важно - об адресе функции, называемой оконной процедурой. Когда приложение обрабатывает сообщения, оно обычно делает это посредством вызова функции DispatchMessage для каждого принятого сообщения - это происходит в так называемом цикле сообщений. В свою очередь, функция DispatchMessage вызывает соответствующую оконную процедуру, проверяя, для какого класса окна предназначено сообщение. Именно эта оконная процедура действительно обрабатывает сообщение, переданное окну. Рассмотрим, какие типы классов окон существуют. Существует множество стандартных классов окон, предусмотренных самой операционной системой Windows. Эти системные глобальные классы реализуют функциональные возможности общих элементов управления. Любое приложение может использовать эти классы в своих окнах; например, реализовать элемент управления - поле ввода, используя класс окна Edit. Приложение также может определять собственные классы окон с помощью функции RegisterClass. Эта функция позволяет программисту реализовать поведение окна, не являющегося частью ни одного из поддерживаемых системой глобальных классов. Например, таким образом, типичное приложение реализует функциональные возможности своего главного окна, регистрирует пиктограмму главного окна и ресурса меню. Windows также позволяет разбивать существующие окна на подклассы (субклассы) и суперклассы. Разбиение на подклассы замещает оконную процедуру для класса окна на другую процедуру. Это разбиение осуществляется путем изменения адреса процедуры через функцию SetWindowLong (в случае простого разбиения на подклассы) или 103 SetClassLong (в случае глобального разбиения на подклассы). При этом в первом случае изменится только поведение определенного окна, а во втором - поведение всех окон указанного класса, создаваемых данным приложением. Операция создания суперкласса создает новый класс на основе существующего, сохраняя его оконную процедуру. Чтобы создать суперкласс из класса окна, приложение извлекает информацию о классе с помощью функции GetClassInfo, изменяет полученную таким образом структуру WNDCLASS и использует измененную структуру при вызове RegisterClass. Через функцию GetClassInfo приложение также получает адрес оригинальной оконной процедуры, который остается тот же; сообщения, которая не обработала новая оконная функция, должны быть переданы оригинальной процедуре. Замечание. Несмотря на то, что используемая выше терминология напоминает терминологию объектно-ориентированного программирования, понятие класса окна не следует путать с понятиями C++. Понятие класса окна возникло на несколько лет раньше начала использования в Windows объектно-ориентированных языков. 1.5. Типы сообщений Существует много разновидностей сообщений, представляющих события на разных уровнях. Каждое простое событие, каждое простое действие посылается в виде сообщения окну для обработки. Приложению приходит множество сообщений, однако приложение не должно заботиться о смысле каждого отдельного сообщения. Вместо обработки всех возможных сообщений приложение имеет свободу выбора; необработанные сообщения передаются в функции обработки сообщений операционной системы по умолчанию. Приходящее приложению Windows-сообщение состоит из нескольких частей, для его представления используется структура MSG. Приведем описание структуры, применяющейся для представления сообщения, т.е. описывающей тип сообщения: typedef struct tagMSG { HWND hwnd; // окно, которому посылается это сообщение UINT message; // значение самого сообщение WPARAM wParam; // для передачи дополнительной информации LPARAM lParam; // для передачи дополнительной информации DWORD time; // время, когда произошло событие POINT pt; // точка, где произошло события (для мыши) } MSG; Элемент структуры hwnd однозначно идентифицирует окно, которому посылается это сообщение. Каждое окно в Windows имеет такой идентификатор. Элемент message идентифицирует само сообщение. Этот элемент может иметь сотни различных значений, означающих одно из 104 многих сотен различных сообщений, которые могут получать приложения Windows. Для идентификаторов сообщений обычно используются символьные представления (WM_PAINT, WM_TIMER), а не числовые значения. Эти символьные значения определены в стандартных файлах заголовков Windows (приложению необходимо включать в свой исходный текст только файл windows.h - он содержит директивы #include для остальных файлов). Сообщения можно разделить на несколько групп в зависимости от их функций. Самой насыщенной группой сообщений является группа сообщений управления окнами. Символьные идентификаторы для этих сообщений начинаются с WM_. Эта группа настолько велика, что ее уместно еще раз разбить на категории. Эти категории включают: сообщения DDE (dynamic data exchange), сообщения буфера обмена (clipboard), сообщения мыши, сообщения клавиатуры, сообщения неклиентской (non-client) области окна, сообщения MDI (multiple-document interface), и многие другие типы. Перечисленные категории несколько неточны, не всегда строго определены; они просто служат для удобства программистов, чтобы можно было представить картину множества событий управления окнами. Множество сообщений WM_ также не фиксировано, оно растет по мере добавления новых возможностей операционной системы. Другие группы сообщений связаны с определенными типами окон. Существуют сообщения, определенные для полей ввода, кнопок, списков, комбинированных списков, полос прокрутки, элементов просмотра списка деревьев и т.д. Эти сообщения за редким исключением обычно обрабатываются оконной процедурой окна элемента управления и редко представляют интерес для программистов приложений. Приложения также могут определять собственные сообщения. Первый способ пригоден только для случая, если сообщение пересылается между окнами (частями) одного и того же приложения. Для этого необходимо определить символическое имя нового сообщения при помощи директивы #define, например: #define СимволическоеИмяОдногоСообщения (WM_USER+1) #define СимволическоеИмяДругогоСообщения (WM_USER+2) Вторым способом определения собственного сообщения является использование функции RegisterWindowMessage, которая возвращает уникальный идентификатор для сообщения. Использование собственных типов сообщений, полученных таким способом, позволяет частям приложения связываться между собой; разные приложения также могут обмениваться информацией таким способом. Однако для взаимодействия приложений доступны более мощные механизмы, например, отображаемые в память файлы. 105 1.6. Вызов функций Windows Существование цикла сообщений - не единственный механизм, посредством которого приложение взаимодействует с Windows. Windows предлагает огромное количество системных вызовов для выполнения большого разнообразия задач, включая управление потоками, работу с окнами, обработку файлов, управление памятью, графический сервис, коммуникацию и много других функций. Замечание. Основное множество системных вызовов Windows можно разделить на три главных категории. Службы GDI (Graphics Device Interface интерфейс графических устройств) предлагают аппаратно-независимые функции графического вывода. Службы пользователя включают в себя системные вызовы для управления элементами пользовательского интерфейса, такими как окна, элементы управления, диалоговые окна или сообщения. Службы ядра включают системные вызовы для управления процессами и потоками, управления ресурсами, файлами и памятью. Windows также включает разносторонние пользовательские интерфейсы программирования приложений (API), вкратце рассматриваемые ниже. Службы GDI. Функции GDI используются для выполнения основных независимых от устройства графических операций над контекстом устройства. Контекст устройства - это интерфейс для определенного графического устройства. Его можно использовать для получения информации об устройстве и выполнения графического вывода на это устройство. Информация, которая может быть получена через контекст устройства, содержит его подробное описание. Технология устройства (векторная или растровая), его тип, имя, разрещающая способность, цветовые возможности, возможности шрифтов - все это можно получить, вызвав контекст соответствующего устройства. Службы пользователя. Модуль User (модуль пользователя) поддерживает системные вызовы для работы с элементами пользовательского интерфейса. Они включают в себя функции обработки окон, диалоговых панелей, меню, текстовых и графических курсоров, элементов управления, буфера обмена и многих других понятий. Именно благодаря функциям модуля User становятся доступными высокоуровневые компоненты пользовательского интерфейса. Службы ядра системы. Службы ядра обычно относятся к категории управления файлами, памятью, процессами, потоками и ресурсами. Это не полный список, но все же эти категории описывают самые часто используемые функции модуля Kernel. Другие API. Windows - это намного больше, чем возможности, реализованные в рассматриваемых выше трех основных модулях. Существует множество модулей, других API, каждый реализующий свое определенное множество функциональных возможностей. Рассмотрим кратко некоторые из наиболее широко используемых API. 106 Функции общих элементов управления используются для работы с новыми элементами управления (расширяющими множество стандартных элементов управления). Общие диалоговые окна содержат поддерживаемые системой диалоговые окна для открытия файла, выбора цвета из цветовой палитры, выбора шрифта из множества инсталлированных в системе, определения операции поиска или поиска с заменой. Эти диалоговые окна можно использовать по умолчанию или их функции можно изменять через новые шаблоны диалоговых окон и оконных процедур. MCI (multimedia control interface) предоставляет собой интерфейс управления средствами мультимедиа. Через функции MCI приложения легко могут получить доступ к видео-, аудио- и MIDI-возможностям Windows. Существует несколько групп функций, связанных с сетью: например, WinSock - библиотека Windows Sockets, WinInet - библиотека Windows Internet API и др. 1.7. Оконная функция - функция обратного вызова Программисты хорошо знакомы с понятием вызова операционной системы для выполнения каких-то действий. Например, программисты на C используют функцию fopen для открытия файла. Библиотечные функции, поставляемые компилятором, содержат код, который фактически вызывает для открытия файла операционную систему. Здесь все просто. Но операционная система Windows ведет себя иначе. Хотя в Windows имеется очень много доступных программисту функций, Windows также и сама посылает вызовы программе, особенно оконной процедуре. Оконная процедура связана с классом окна, который программа регистрирует с помощью вызова функции RegisterClass. Окно, создаваемое на основе этого класса, использует оконную процедуру для обработки всех сообщений окна. Windows посылает сообщения окну, вызывая оконную процедуру. Рассмотрим примеры, когда Windows вызывает оконную процедуру: первый раз при создании окна; при последующем удалении окна; при изменении размеров окна, при его перемещении, при его свертывании; при выборе пункта меню; при манипуляции с полосами прокрутки или с мышью; чтобы сообщить ей о необходимости перерисовать рабочую область. Все эти вызовы имеют форму сообщений. В большинстве Windowsпрограмм основная часть программы направлена на обработку этих сообщений. Свыше 200 различных сообщений, которые Windows может отправить оконной процедуре, идентифицируются именами, которые начинаются с cимволов WM_ и определяются в заголовочных файлах Windows. Фактически, идея функции, находящейся в программе, но которая вызывается не из самой программы, не является абсолютно новой в 107 традиционном программировании. Функции signal в языке С может перехватить нажатие комбинации клавиш <Ctrl+Break>. В Windows эта идея расширена и пронизывает всю систему. Любое событие, относящееся к окну, передается оконной процедуре в виде сообщения. Затем оконная процедура соответствующим образом реагирует на это сообщение или передает сообщение в функцию DefWindowProc для обработки его по умолчанию. 1.8. Синхронные и асинхронные сообщения Итак, передача окну сообщений означает вызов операционной системой Windows оконной процедуры. Но в программах для Windows имеется и цикл обработки сообщений, который берет сообщения из очереди сообщений, вызывая функцию GetMessage, и отправляет их оконной процедуре, вызывая функцию DispatchMessage. Так что же, буферизуются ли сообщения для Windows-программы (так же как в обычной программе буферизуется ввод с клавиатуры) и затем пересылаются дальше, или она (программа для Windows) получает сообщения непосредственно снаружи? Одни и те же сообщения могут быть и синхронные (queued), и асинхронные (nonqueued). Синхронными сообщениями называются сообщения, которые Windows помещает в очередь сообщений программы, и которые извлекаются и диспетчеризируются в цикле обработки сообщений. Асинхронные сообщения передаются непосредственно окну, когда Windows вызывает оконную процедуру. Говорят, что синхронные сообщения помещаются (отправляются) в очередь сообщений (post), а асинхронные посылаются прямо в оконную процедуру (send). Структура программ для Windows очень проста, поскольку у них имеется только одно центральное место обработки сообщений. В результате оконная процедура получает все предназначенные для окна сообщения, как синхронные, так и асинхронные. Синхронными становятся сообщения, в основном, тогда, когда они являются результатом пользовательского ввода путем нажатия клавиш (например, WM_KEYDOWN или WM_KEYUP), это символы, введенные с клавиатуры (WM_CHAR), результат движения мыши (WM_MOUSEMOVE) и щелчков кнопки мыши (WM_LBUTTONDOWN). Кроме этого, синхронные сообщения включают в себя сообщения таймера (WM_TIMER), сообщение о выходе из программы (WM_QUIT), а также все сообщения, которые помещаются в очередь сообщений посредством вызова приложением функции PostMessage. Сообщения становятся асинхронными во всех остальных случаях. Часто асинхронные сообщения являются результатом вызова определенных функций Windows или непосредственным результатом вызова функции SendMessage. Очевидно, что процесс этот сложен, но, к счастью, большая часть сложностей ложится на Windows, а не пользовательские программы. 108 С позиции оконной процедуры совершенно не важно, для обработки какого сообщения и кем она вызвана. Оконная процедура может что-то сделать с этими сообщениями, а может и проигнорировать их. По этой причине оконную процедуру назвали конечным пунктом обработки (ultimate hook). Сообщения извещают оконную процедуру почти обо всем, что влияет на окно. Например, когда WinMain вызывает функцию CreateWindow, Windows отправляет оконной процедуре асинхронное сообщение WM_CREATE. КогдаWinMain вызывает UpdateWindow, Windows отправляет оконной процедуре асинхронное сообщение WM_PAINT. Сообщения не похожи на аппаратные прерывания. Во время обработки в оконной процедуре одного сообщения программа не может быть прервана другим сообщением. Только в этом случае, если оконная процедура вызвала функцию, которая сама стала источником нового сообщения, то оконная процедура начнет обрабатывать это новое сообщение еще до того, как функция вернет управление программе. Цикл обработки сообщений и оконная процедура работают не параллельно. Когда оконная процедура обрабатывает сообщение, то это результат вызова функции DispatchMessage в WinMain. DispatchMessage не завершается до тех пор, пока оконная процедура не обработала сообщение. Часто возникает необходимость того, чтобы оконная функция сохраняла информацию, полученную в сообщении, и использовала ее при обработке другого сообщения. Тогда эту информацию следует описывать в оконной процедуре в виде статических переменных, либо хранить в глобальных переменных. 1.9. Разделение аппаратных ресурсов Одним из наиболее существенных свойств Windows является то, что под его управлением можно одновременно запускать на выполнение несколько программ. Различные приложения делят между собой эти ограниченные ресурсы, распределение которых осуществляет операционная оболочка Windows. Программируя для Windows, нельзя забывать о том, что все аппаратные ресурсы являются разделяемыми, и для их правильного использования следует придерживаться определенных правил. Так, если программа для MS-DOS имеет доступ ко всей свободной оперативной памяти и может обращаться к этой памяти так, как захочется программисту, то в Windows, где одновременно может выполняться несколько программ, память является разделяемым ресурсом. Другим примером разделяемого ресурса является дисплей. Программируя в MS-DOS, можно в любой момент переключить режим видеоадаптера, изменить цвет или даже напрямую обратится контроллеру и что-то записать в видеопамять. Такая техника полностью исключается при программировании в Windows. Дисплей - разделяемый системный ресурс, и обращаться к нему можно только так, как позволяет Windows. 109 Одной из основных целей создателей Windows являлось обеспечение визуального доступа к большинству приложениям одновременно. Для этого каждому приложению выделяется часть экрана для взаимодействия с пользователем. В Windows каждое приложение в любой момент времени имеет доступ к определенной части экрана. Таким образом, экран в Windows - разделяемый ресурс, средством разделения которого является окно приложения. Итак, два важных вывода. Во-первых, загруженная на выполнение программа не забирает на себя полностью все ресурсы - эти ресурсы выделяются приложению при помощи специальных механизмов. Во-вторых, в каждый момент времени программа не знает, какая именно область экрана принадлежит окну приложения, поскольку пользователь в любой момент может переместить окно и изменить его размеры (для определения координат окна нужно обратиться к специальной функции Windows). 110 2. Общая структура Windows-приложения Процесс программирования Windows-приложений отличается от способа, ориентированного на обработку последовательностей команд или запросов, как это происходит в хорошо известной модели программирования консольных приложений. Обработка приложением Windows-сообщений накладывает на структуру программы весьма жесткие ограничения. Приступим к исследованию структуры типичного Windows-приложения, отметив предварительно, что в исходный код Windows-приложения следует включать файл windows.h - он содержит директивы #include для всех остальных стандартных файлов заголовков Windows. В этих файлах содержатся описания различных структур данных и функций Windows. 2.1. Пример типичного Windows-приложения Приведем исходный текст приложения, которое создает главное окно, в клиентской области которого выводится текст. При нажатии левой клавишей мыши в клиентской области окна при помощи стандартной диалоговой панели сообщений выдается предупреждение. // --- Обязательный включаемый файл #include <windows.h> // --- Описание функции главного окна LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); // --- Глобальные переменные HINSTANCE hInst; // Дескриптор экземпляра приложения char ClassName[]="Window"; // Название класса окна char AppTitle[]="Application Win32"; // Заголовок главного окна // --- Функция WinMain int WINAPI WinMain( HINSTANCE hInstance, // Дескриптор экземпляра приложения HINSTANCE hPrevInstance, // В Win32 всегда равен NULL LPSTR lpCmdLine, // Указатель на командную строку. Он позволяет // приложению получать данные из командной строки. int nCmdShow // Определяет, как приложение первоначально // отображается на дисплее: пиктограммой // (nCmdShow = SW_SHOWMINNOACTIVE) // или в виде открытого окна //(nCmdShow = SW_SHOWNORMAL). ) { 111 WNDCLASS wc; // Структура для информации о класса окна HWND hWnd; // Дескриптор главного окна приложения MSG msg; // Структура для хранения сообщения // Сохраняем дескриптор экземпляра приложения в глобальной переменной, // чтобы при необходимости воспользоваться им в функции окна. hInst=hInstance; // --- Проверяем, было ли приложение запущено ранее. // Воспользуемся функцией FindWindow, которая позволяет найти окно верхнего // уровня по имени класса или по заголовку окна: // HWND FindWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName); // Через параметр lpClassName передается указатель на текстовую строку, в которую // необходимо записать имя класса искомого окна. На базе одного и того же класса // можно создать несколько окон. Если необходимо найти окно с заданным заголовком, // то имя заголовка следует передать через параметр lpWindowName. Если же подойдет // любое окно, то параметр lpWindowName может иметь значение NULL. if((hWnd=FindWindow(ClassName, NULL))!=NULL) { // Пользователь может не помнить, какие приложения уже запущены, // а какие нет. Когда он запускает приложение, то ожидает, что на экране // появится его главное окно. Поэтому, если приложение было запущено // ранее, целесообразно активизировать и выдвинуть на передний план // его главное окно. Это именно то, к чему приготовился пользователь. if(IsIconic(hWnd)) ShowWindow(hWnd, SW_RESTORE); SetForegroundWindow(hWnd); // Найдена работающая копия - работа новой копии прекращается. return FALSE; } 112 // --- Работающая копия не найдена - функция WinMain приступает к инициализации. // Заполнение структуры WNDCLASS для регистрации класса окна. memset(&wc, 0, sizeof(wc)); wc.lpszClassName=ClassName; // Имя класса окон wc.lpfnWndProc=(WNDPROC)WndProc; // Адрес оконной функции wc.style=CS_HREDRAW|CS_VREDRAW; // Стиль класса окон wc.hInstance=hInstance; // Экземпляр приложения wc.hIcon=LoadIcon(NULL,IDI_APPLICATION); // Пиктограмма для окон wc.hCursor=LoadCursor(NULL,IDC_ARROW); // Курсор мыши для окон wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); // Кисть для окон wc.lpszMenuName=NULL; // Ресурс меню окон wc.cbClsExtra=0; // Дополнительная память wc.cbWndExtra=0; // Дополнительная память // Pегистрация класса окна. RegisterClass(&wc); // Создаем главное окно приложения. hWnd=CreateWindow( ClassName, // Имя класса окон AppTitle, // Заголовок окна WS_OVERLAPPEDWINDOW, // Стиль окна CW_USEDEFAULT, // X-координаты CW_USEDEFAULT, // Y-координаты CW_USEDEFAULT, // Ширина окна CW_USEDEFAULT, // Высота окна NULL, // Дескриптор окна-родителя NULL, // Дескриптор меню окна hInst, // Дескриптор экземпляра приложения NULL); // Дополнительная информация if(!hWnd) { // Окно не создано, выдаем предупреждение. MessageBox(NULL,"Create: ror",AppTitle,MB_OK|MB_ICONSTOP); 113 er- return FALSE; } // Отображаем окно. ShowWindow(hWnd, nCmdShow); // Обновляем содержимое клиентской области окна. UpdateWindow(hWnd); // Запускаем цикл обработки очереди сообщений. Функция GetMessage получает // сообщение из очереди, выдает false при выборке из очереди сообщения WM_QUIT while(GetMessage(&msg, NULL, 0, 0)) { // Преобразование некоторых сообщений, полученных с помощью клавиатуры TranslateMessage(&msg); // Отправляем сообщение оконной процедуре DispatchMessage(&msg); } return msg.wParam; } // --- Функция окна LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { char *str="First Windows aplication"; switch(msg) { // Необходимо обновить содержимое клиентской области окна. case WM_PAINT: { HDC hDC; 114 PAINTSTRUCT ps; hDC=BeginPaint(hWnd,&ps); // Получить контекст окна TextOut(hDC,20,20,str,strlen(str)); // Нарисовать текст EndPaint(hWnd,&ps); // Освободить контекст окна }; break; // Нажата левая клавиша мыши в клиентской области окна. case WM_LBUTTONDOWN: { MessageBox(hWnd, "32-bit aplication", "Window", MB_OK|MB_ICONINFORMATION); }; break; // Пользователь удалил окно. case WM_DESTROY: { // Если данная функция является оконной функцией главного окна, то // следует в очередь сообщений приложения послать сообщение WM_QUIT PostQuitMessage(0); }; break; // Необработанные сообщения передаем в стандартную // функцию обработки сообщений по умолчанию. default: return DefWindowProc(hWnd, msg, wParam, lParam); } return 0l; } 2.2. Точка входа в программу Когда программист создает программу для консольную программу на языке С, от него жестко требуется наличие лишь функции main. Операционная система вызывает ее при запуске программы, и с этого момента программист, вернее его программа, может делать все по своему желанию. Если программе необходимо узнать информацию о том, какие клавиши нажаты, или как-то воспользоваться сервисом операционной системы, она вызывает соответствующие функции. 115 При запуске в Windows операционная система вызывает в программе функцию WinMain. В любом приложении обязательно должна присутствовать эта функция, на которую возлагается ряд специфических задач. И самая важная из них - создание основного окна программы, с которым должен быть связан код, способный обрабатывать сообщения, передаваемые операционной системой этому окну. Существенное различие между консольной и Windows-программами в том, что первая для получения данных, введенных пользователем, вызывает операционную систему, а вторая делает это через сообщения, передаваемые программе операционной системой. Итак, точкой входа программы для Windows является функция WinMain, которая всегда определяется следующим образом: int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) Эта функция использует последовательность вызовов WINAPI (паскалевское соглашение о передаче аргументов при вызове функций) и, по своему завершению, возвращает операционной системе Windows целое число. Рассмотрим назначение параметров функции WinMain. Параметр hInstance называется дескриптором экземпляра приложения. Дескриптором экземпляра приложения - это уникальное число, идентифицирующее программу, когда она работает под Windows. Каждая копия одной и той же запущенной несколько раз программы называется "экземпляром" и у каждой свое значение hInstance. Параметр hPrevInstance в настоящее время устарел и в Win32 всегда равен NULL. Параметр lpCmdLine является указателем на оканчивающуюся нулем строку, в которой содержаться параметры, переданныве программе из командной строки. Параметр nCmdShow определяет, как приложение первоначально отображается на дисплее: пиктограммой (nCmdShow = SW_SHOWMINNOACTIVE) или в виде открытого окна (nCmdShow = SW_SHOWNORMAL). Перечислим действия, обычно выполняемые функцией WinMain: Если найдена работающая копия приложения, то работа новой копии прекращается. Иначе: Сохранение дескриптора экземпляра приложения в глобальной переменной. Регистрация класса окна приложения и другие инициализации.li Создание главного окна приложения и, возможно, других, подчиненных окон. Отображение созданного окна и отрисовка содержимого его внутренней части. 116 Запуск цикла обработки сообщений, помещаемых в очередь приложения. Завершение работы приложения при извлечении из очереди сообщения WM_QUIT. 2.3. Поиск работающей копии приложения При запуске любого приложения пользователь может не помнить, какие приложения уже запущены, а какие нет. Когда он запускает приложение, то ожидает, что на экране появится его главное окно. Поэтому, если приложение было запущено ранее, целесообразно активизировать и выдвинуть на передний план его главное окно. Это именно то, к чему приготовился пользователь. Для проверки того было ли приложение запущено ранее, можно воспользоваться функцией FindWindow, которая позволяет найти окно верхнего уровня по имени класса или по заголовку окна: HWND FindWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName); Через параметр lpClassName передается указатель на текстовую строку, в которую необходимо записать имя класса искомого окна. На базе одного и того же класса может быть создано несколько окон. Если необходимо найти окно с заданным заголовком, то имя заголовка следует передать через параметр lpWindowName. Если же подойдет любое окно, то параметр lpWindowName может иметь значение NULL. Приведем фрагмент кода функции WinMain, проверяющий, было ли ранее приложение запущено и при положительном ответе выдвигающий на передний план главное окно ранее запущенной копии: ... HWND hWndOld=FindWindow(ClassName, NULL); if(hWndOld) { if(IsIconic(hWndOld)) ShowWindow(hWndOld, SW_RESTORE); SetForegroundWindow(hWndOld); return FALSE; } // Работающая копия не найдена - функция WinMain приступает // к инициализации приложения и запуску цикла обработки сообщений ... Замечание. Если необходимо, чтобы каждая копия приложения работала как отдельный процесс, то приведенный фрагмент кода следует не включать в функцию WinMain. 2.4. Регистрация класса окна Как уже говорилось, самая важная задача функции WinMain - создание основного окна программы, с которым должен быть связан код, способный обрабатывать сообщения, передаваемые операционной системой этому окну. Обычно приложение создает окно за два шага. Сначала с помощью функции RegisterClass регистрируется класс окна, а затем создается само окно зарегистрированного класса с помощью функции CreateWindow. 117 Класс окна определяет общее поведение нового типа окон, включая адрес новой оконной процедуры. Такие второстепенные аспекты как размер, расположение и внешний вид окна определяются при его создании. Новый класс окна регистрируется при вызове приложением следующей функции: ATOM RegisterClass(const WNDCLASS *lpwc); Единственный параметр этой функции lpwc указывает на структуру типа WNDCLASS, описывающую тип нового окна. Возвращаемое значение является атомом Windows - 16-разрядным значением, идентифицирующим уникальную символьную строку в таблице Windows. Приведем фрагмент кода функции WinMain, в котором осуществляется заполнение полей структуры, описывающей класс окна, и регистрация класса окна: ... // Сохраняем дескриптор экземпляра приложения в глобальной переменной hInst типа // HINSTANCE, чтобы при необходимости воспользоваться им в функции окна. hInst=hInstance; // Заполнение структуры WNDCLASS для регистрации класса окна. WNDCLASS wc; memset(&wc, 0, sizeof(wc)); // Очистка полей структуры wc.lpszClassName="MyWindowClassName"; // Имя класса окон - строка wc.lpfnWndProc=(WNDPROC)WndProc; // Адрес оконной функции wc.style=CS_HREDRAW|CS_VREDRAW; // Стиль класса окон wc.hInstance=hInst; // Экземпляр приложения wc.hIcon=LoadIcon(NULL,IDI_APPLICATION); // Пиктограмма для окон wc.hCursor=LoadCursor(NULL,IDC_ARROW); // Курсор мыши для окон wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); // Кисть для окон wc.lpszMenuName=NULL; // Ресурс меню окон wc.cbClsExtra=0; // Дополнительная память wc.cbWndExtra=0; // Дополнительная память // Pегистрация класса окна RegisterClass(&wc); ... 118 2.5. Поля структуры WNDCLASS Рассмотрим подробнее поля структуры WNDCLASS. Название нового регистрируемого класса окон задается при помощи параметра-строки lpszClassName. Наиболее важными параметрами структуры WNDCLASS являются style и lpfnWndProc. Основная часть того, что представляет окно как уникальную и сложную сущность, управляется через стиль класса окна и оконную процедуру. Параметр lpfnWndProc указывает адрес функции оконной процедуры. Эта функция отвечает за обработку всех сообщений, получаемых окном. Она может обрабатывать эти сообщения сама или вызывать оконную процедуру по умолчанию DefWindowProc. Сообщения могут быть разнообразными: изменение размера и перемещение окна, события от мыши, клавиатуры, команды меню, запросы на перерисовку, события от таймера и другого аппаратного обеспечения и т.д. Некоторые глобальные характеристики окна управляются через параметр стиля окна - style. Для этого параметра можно установить комбинацию значений, используя операцию поразрядного ИЛИ. Например, значение CS_DBLCLKS указывает Windows генерировать события о двойном щелчке кнопкой мыши. Значения CS_HREDRAW и CS_VREDRAW указывают, что окно должно перерисовываться полностью каждый раз при изменении горизонтального или вертикального размера. Приведем назначение остальных, менее важных для функционирования окна, полей структуры WNDCLASS. поле hIcon - дескриптор пиктограммы, используемой для представления минимизированных окон этого класса; поле hCursor - дескриптор стандартного указателя мыши для окон этого класса, hbrBackground - дескриптор кисти интерфейса GDI, используемой для рисования фона окна; строка lpszMenuName определяет ресурс меню (по имени или с помощью макроса MAKEINTRESOURCE по целому идентификатору), который используется для стандартного меню этого класса; параметры cbClsExtra и cbWndExtra используются, чтобы выделить дополнительную память для класса окна и для отдельных окон, через них задается размер этой дополнительной памяти. Приложения могут использовать эту дополнительную память для хранения специальной информации приложения, относящейся к классу окна или к отдельным окнам. 2.6. Создание окна Регистрация нового класса является первым шагом в создании окна. Затем приложение должно создать само окно с помощью функции CreateWindow, которая возвращает дескриптор созданного окна типа HWND: HWND CreateWindow(LPCSTR lpClassName, LPCSTR lpWindowName, 119 DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HANDLE hInstance, LPVOID *lpParam); У каждого окна в Windows имеется уникальный дескриптор типа HWND. Дескриптор окна - это один из важнейших описателей, которыми оперирует программа для Windows. Для многих функций Windows требуется дескриптор окна, благодаря которому Windows знает, к какому окну применить функцию. Приведем фрагмент кода функции WinMain, в котором осуществляется создание окна зарегистрированного ранее класса с именем "MyWindowClassName": ... // Создаем главное окно приложения. HWND hWndMain=CreateWindow( "MyWindowClassName", // Имя класса окон "MyWindowTitle", // Заголовок окна WS_OVERLAPPEDWINDOW, // Стиль окна CW_USEDEFAULT,CW_USEDEFAULT, // X- и Y-координаты CW_USEDEFAULT,CW_USEDEFAULT, // Ширина и высота окна NULL, // Дескриптор окна-родителя NULL, // Дескриптор меню окна hInst, // Дескриптор экземпляра приложения NULL); // Дополнительная информация if(!hWndMain) { // Окно не создано, выдаем предупреждение. MessageBox(NULL,"Create: error","MyTitle",MB_OK|MB_ICONSTOP); return FALSE; } ... 2.7. Параметры функции CreateWindow Первый параметр lpClassName указывает имя класса, поведение которого наследует данное окно. Этот класс должен быть зарегистрирован с помощью фунцкии RegisterClass или быть одним из предопределенных классов элементов управления. Эти переопределенные классы включают в себя стандартные классы элементов управления с именами "button", "combobox", "listbox", "edit", "scrollbar" и "static". Параметр lpWindowName определяет строку, которая выводится в заголовке создаваемого окна. Параметр dwStyle определяет стиль окна. Не следует путать стиль окна со стилем класса, передаваемым в RegisterClass через структуру WNDCLASS. 120 Хотя стиль класса определяет некоторые постоянные свойства окон, принадлежащих классу, стиль окна, передаваемый CreateWindow, используется для инициализации локальных свойств окна. Как и в случае стиля класса, стиль окна также обычно является комбинацией значений (объединенных операцией поразрядного ИЛИ). Замечание. Для определения стиля главного окна чаще всего используют стиль перекрывающегося окна, для чего через параметр dwStyle передают символическую константу WS_OVERLAPPEDWINDOW, определенную во включаемых файлах следующим образом: #define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED| \ WS_CAPTION|WS_SYSMENU|WS_THICKFRAME| \ WS_MINIMIZEBOX|WS_MAXIMIZEBOX) После указания типа окна нужно задать начальные геометрические размеры окна. Если при задании параметров x, y, nWidth и nHeight использовать константу CW_USEDEFAULT, то Windows установит расположение и размеры окна самостоятельно. При создании окна указывается также дескрипторы его окна-родителя и меню. Если окно является главным окном приложения, то параметру hWndParent присваивается значение NULL. Значение NULL на месте дескриптора меню hMenu говорит о том, что у окна будет только меню класса, общее для всех окон этого класса. При создании окна необходимо указать, какой экземпляр приложения, которое создает окно, что и делается при помощи параметра hInstance. Последний параметр lpParam используется для передачи окну дополнительных данных (если их нет, то он должен быть равен NULL). При необходимости этот параметр используется в качестве указателя на какиенибудь данные, на которые программа в дальнейшем могла бы ссылаться. 2.8. Отображение окна Хотя функция CreateWindow и создает окно, это не значит, что оно будет автоматически отображаться на экране дисплея. Для отображения окна следует воспользоваться функцией ShowWindow. Первым параметром в эту функцию передается дескриптор окна, вторым параметром обычно (для главного окна приложения) является величина, передаваемая в качестве параметра функции WinMain, . она задает начальный вид окна на экране. BOOL ShowWindow(HWND hwnd, int nCmdShow); Функция ShowWindow выводит окно на экран. Если второй параметр этой функции имеет значение SW_SHOWNORMAL, то фон рабочей области окна закрашивается той кистью, которая задана в классе окна. Для перерисовки рабочей области затем необходимо сделать вызов функции: void UpdateWindow(HWND hwnd); Функция UpdateWindow передает функции окна сообщение WM_PAINT. Получив это сообщение, функция обновляет содержимое экрана. 121 Приведем фрагмент кода функции WinMain, в котором осуществляется отображение созданного окна и отрисовка содержимого его внутренней части: ... ShowWindow(hWnd, nCmdShow); // Отображаем окно. UpdateWindow(hWnd); // Обновляем его содержимое клиентской области окна ... Функции отображения и обновления вызываются, как правило, после создания окна, но, вообще говоря, порядок и место вызова функций ShowWindow и UpdateWindow не является обязательным. Окно может быть отображено не в момент создания, а позже, по желанию программиста. Итак, для отображения окна в типичном приложении необходимо: Зарегистрировать класс окна функцией RegisterClass. Создать окно функцией CreateWindow. Отобразить окно функцией ShowWindow. Обновить рабочую (клиентскую) область окна функцией UpdateWindow. 2.9. Цикл обработки очереди сообщений После создания и отображения окна функция WinMain должна подготовить приложение к получению информации от пользователя через клавиатуру и мышь. Windows поддерживает очередь сообщений (message queue) для каждой программы, работающей в данный момент в системе. Когда происходит ввод информации, Windows преобразовывает ее в сообщение, которое помещается в очередь сообщений приложения. Программа извлекает сообщения из очереди сообщений, выполняя блок команд, известный как цикл обработки сообщений (message loop). Простейший цикл обработки сообщений имеет следующий вид: ... MSG msg; while( GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); // преобразование клавиат. сообщ. в символьные DispatchMessage(&msg); // отправка сообщения окну-адресату приложения } ... Рассмотрим, как именно работает цикл обработки сообщений Windowsприложения. Цикл обработки начинается с извлечения сообщений из очереди при помощи функции: BOOL GetMessage(MSG FAR* lpmsg,HWND hwnd, UINT uMsgFilterMin,UINT uMsgFilterMax); 122 Если при вызове этой функции указать вторым аргументом NULL, то программа будет получать сообщения от всех окон, созданных программой. При помощи параметров uMsgFilterMin и uMsgFilterMax можно отфильтровать сообщения, получаемые программой. Если на их месте передать 0, то программа будет получать все сообщения. После вызова функции GetMessage приложение получает структуру msg типа MSG с информацией о сообщении. Структура MSG содержит информацию об окне, которому предназначено сообщение, численное значение самого сообщения, время и координаты (для сообщений от мыши) возникновения сообщения, а также два дополнительных параметра wParam и lParam, смысл и значение которых зависят от особенностей сообщения. Каждое получаемое приложением сообщение (за исключением WM_QUIT) направлено одному из окон приложения. Поскольку приложение не должно прямо вызывать функцию обработки окна, для передачи сообщения нужному окну используется функция: LONG DispatchMessage(const MSG FAR* lpmsg); Эта функция передает msg обратно в Windows. Windows отправляет сообщение для его обработки соответствующей оконной процедуре - таким образом Windows вызывает оконную процедуру. После того, как оконная функция обработает сообщение, Windows возвращает управление в приложение к следующему за вызовом DispatchMessage коду, цикл обработки сообщений в очередной раз возобновляет работу, вызывая GetMessage. Если поле message сообщения msg, извлеченного из очереди сообщений, равно любому значению, кроме WM_QUIT, то функция GetMessage возвращает ненулевое значение. Сообщение WM_QUIT, извлеченное из очереди приложения заставляет прервать цикл обработки сообщений. Перед вызовом функции DispatchMessage могут быть помещены специальные функции, производящие над помещенными в очередь сообщениями какие-то действия. Например, преобразование некоторых сообщений, полученных с помощью клавиатуры, в более понятные сообщения можно при помощи функции BOOL TranslateMessage(const MSG FAR* lpmsg); 2.10. Завершение работы приложения Приложение завершает свою работу тогда, когда функция WinMain передает управление Windows. Передать управление можно в любом месте WinMain, в том числе и до входа в цикл обработки очереди сообщений. Однако после входа в цикл обработки очереди сообщений единственным способом завершить приложение является посылка в очередь приложения сообщения WM_QUIT. Сообщение WM_QUIT, таким образом, является средством завершения работы приложения. Оно обычно помещается в очередь сообщений только функцией главного окна данного приложения. Делается окна вызовом функции PostQuitMessage. Когда функция GetMessage извлекает сообщение WM_QUIT из очереди, она возвращает нуль, что приводит к завершению работы приложения. При 123 завершении приложения следует аккуратно освобождать занятые ресурсы не стоит полагаться в этом на Windows. Приведем фрагмент кода функции WinMain, в котором осуществляется завершение работы приложения: ... // цикл обработки сообщений while( GetMessage(&msg, NULL, 0, 0)) { ... } // завершается после получения WM_QUIT ... return TRUE; // завершение работы приложения 2.11. Оконная процедура После того, как класс окна зарегистрирован, окно создано и отображено и приложение вошло в цикл обработки сообщений начинается обработка поступающих сообщений, при этом главная роль отводится функции окна. Реальная работа приложения происходит в оконных функциях. Именно оконная процедура определяет то, что выводится в рабочую область окна и то, как окно реагирует на пользовательский ввод. Оконной процедуре можно назначать любое имя, в программе Windows может содержаться более одной оконной процедуры. Оконная процедура всегда связана с определенным классом окна, который регистрируется при помощи функции RegisterClass. Функция CreateWindow создает окно на основе определенного класса окна. На основе одного и того же класса можно создать несколько окон. Оконная процедура всегда определяется следующим образом: LRESULT CALLBACK WndProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); Все четыре параметра оконной процедуры идентичны первым четырем полям структуры MSG. Первым параметром является дескриптор окна, получающего сообщение. Если в программе создается несколько окон на основе одного и того же класса окна (и следовательно одной и той же оконной процедуры), тогда параметр hWnd идентифицирует конкретное окно, которое получает сообщение. Функция окна имеет одно очень важное свойство: она вызывается непосредственно Windows и не может вызываться приложением напрямую. Как и большинство функций Windows, в функции окна используется соглашение о связях языка Паскаль, поэтому объявление функции CALLBACK обязательно. Простейшая функция окна выглядит следующим образом (здесь функция окна обрабатывает сообщения при помощи специальной функции Windows, которая производит стандартную обработку всех сообщений.): LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { return( DefWindowProc(hWnd, message, wParam, lParam)); 124 } Функция DefWindowProc играет ключевую роль в формировании информационных потоков сообщений Windows, и ее указание в функции окна обязательно. Перед тем, как передать управление функции DefWindowProc, можно перехватить и обработать практически любое сообщение. 2.12. Обработка сообщений Каждое получаемое окном сообщение идентифицируется номером, который содержится в параметре msg оконной процедуры. Если оконная процедура обрабатывает сообщение, то ее возвращаемым значением должен быть 0. Все сообщения, не обрабатываемые оконной процедурой, должны передаваться функции Windows DefWindowProc (такой механизм позволяет Windows обрабатывать окно совместно с приложением). При этом значение, возвращаемое функцией DefWindowProc, должно быть возвращаемым значением оконной процедуры. Типичный вид функции окна приводится ниже: LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_PAINT: // Обновить содержимое клиентской области окна { ... }; break; case WM_DESTROY: // Пользователь удалил окно { ... // В функции главного окна следует в очередь // сообщений послать сообщение WM_QUIT PostQuitMessage(0); }; break; default: return DefWindowProc(hWnd, msg, wParam, lParam); } return 0; } 125 Функция окна получает сообщение из двух источников: из цикла обработки сообщений и от Windows: Из цикла обработки сообщений поступают сообщения ввода: перемещение и нажатие клавиш мыши, нажатие и отпускание клавиш клавиатуры и, если установлен генератор событий таймера, сообщения от таймера. Windows посылает функции окна сообщения поддержки окна напрямую, минуя очередь приложения и цикл обработки сообщений. Эти сообщения обычно вызваны событиями, требующими немедленной реакции по изменению вида окна. 2.13. Отображение содержимого окна, сообщение WM_PAINT Сообщение WM_PAINT крайне важно для программирования под Windows. Оно сообщает программе, что часть или вся рабочая область окна недействительна (invalid), и ее следует перерисовать. Рассмотрим ситуации, когда рабочая область может становиться недействительной. При первом создании окна недействительна вся рабочая зона (другое название - клиентская часть) окна, посколько программа еще ничего не нарисовала. Сообщение WM_PAINT, посылаемое, когда приложение вызывает функцию UpdateWindow, заставляет оконную процедуру что-то нарисовать в рабочей области. Когда пользователь изменяет размер окна, в стиле которого заданы флаги CS_HREDRAW и CS_VREDRAW, рабочая область также становится недействительной. Операционная система вслед за этим посылает в оконную процедуру сообщение WM_PAINT. Когда пользователь минимизирует окно программы, а затем вновь восстанавливает до прежнего размера, то в Windows содержимое рабочей области не сохраняется (в графической среде это бы привело к тому, пришлось бы хранить слишком много данных). Вместо этого Windows делает недействительным все окно. Затем оконная процедура получает сообщение WM_PAINT и сама восcтанавливает содержимое окна. Когда пользователь перемещает окна так, что они перекрываются, Windows не сохраняет ту часть окна, которая закрывается другим окном. Когда эта часть позже открывается, Windows отмечает эту область как недействительную. Оконная процедура получает сообщение WM_PAINT для восстановления содержимого окна. Если по логике работы приложения при обработке того или другого сообщения требуется изменить содержимое окна, то приложение может само при помощи функции InvalidateRect объявить любую область окна как недействительную (т.е. требующую обновления), а затем сообщить Windows, что необходимо перерисовать часть или все окно при помощи функции UpdateWindow: InvalidateRect(hWnd,NULL,TRUE); UpdateWindow(hWnd); Замечание.Первый параметр функции InvalidateRect является идентификатором окна, для которого выполняется операция. Второй 126 параметр - указатель на структуру типа RECT, определяющую прямоугольную область, подлежащую обновлению (если он равен NULL, то недействительной объявляется вся внутренняя часть окна). Третий параметр определяет необходимость стирания фона окна (если параметр задан как TRUE, фон окна подлежит стиранию). Итак, сообщение WM_PAINT посылается операционной системой окну, когда его часть требует перерисовки, и в очереди сообщений потока, владеющего этим окном, не находится других необработанных сообщений. Eсли окно содержит одну или несколько областей, подлежащих обновлению, то приложение получает одно сообщение WM_PAINT, в котором определена область, охватывающая все указанные области. Обработка сообщения WM_PAINT почти всегда начинается с вызова функции BeginPaint: case WM_PAINT: // Обновить содержимое клиентской области окна { PAINTSTRUCT ps; HDC hDC=BeginPaint(hWnd,&ps); . . . // вызов функций GDI для контекста HDC а заканчивается вызовом функции EndPaint: . . . // вызов функций GDI для контекста HDC EndPaint(hWnd, &ps); }; break; В обеих функциях первый параметр - это дескриптор окна приложения, а второй - это указатель на структуру типа PAINTSTRUCT. В этой структуре содержится некоторая информация, которую оконная процедура может использовать для рисования в рабочей области окна. В частности, одно из полей этой структуры представляет собой самый маленький прямоугольник, содержащий все области окна, требующие перерисовки. Ограничив свои действия по рисованию только этой прямоугольной областью, приложение может ускорить процесс перерисовки. При обработке вызова BeginPaint, Windows 1. обновляет фон рабочей области с помощью кисти, которая указывалась при регистрации класса окна; 2. делает всю рабочую область действительной (не требующей перерисовки); 3. возвращает дескриптор контекста устройства (этот дескриптор необходим для вывода в рабочую область текста и графики). При использовании дескриптора контекста устройства, возвращаемого функцией BeginPaint, приложение не может рисовать вне рабочей области. Функция EndPaint освобождает дескриптор устройства, после чего его нельзя использовать. Замечание 1. Функцию BeginPaint следует вызывать только в ответ на сообщение WM_PAINT. Каждый вызов этой функции должен сочетаться с последующим вызовом функции EndPaint. 127 Замечание 2. Так как приложение практически никогда при обработке сообщения WM_PAINT не знает размеров всей своей клиентской области, то перед рисованием оно может получить эту информацию при помощи функции: BOOL GetClientRect(HWND hWnd, LPRECT rect); Первый параметр - дескриптор окна, второй - указатель на переменную типа RECT, в эту переменную функция GetClientRect помещает информацию о размере рабочей области в пикселях. 2.14. Удаление окна, сообщение WM_DESTROY Сообщение WM_DESTROY является еще одним важным сообщением. Это сообщение показывает, что Windows находится в процессе ликвидации окна в ответ на полученную от пользователя команду (пользователь вызывает поступление этого сообщения, если нажмет мышью на пиктограмме "Close", выберет пункт "Close" из системного меню или нажмет комбинацию клавиш Alt+F4). Главное окно стандартно реагирует на это сообщение, вызывая функцию: PostQuitMessage(0); Эта функция ставит сообщение WM_QUIT в очередь сообщений приложения. Это заставляет функцию WinMain прервать цикл обработки сообщений и выйти в систему, завершив работу приложения. 128 ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ ПО WIN API 1. Какая функция является точкой входа в Windows-программу? 2. Что такое дескриптор копии приложения? Что он идентифицирует? 3. Какие действия обычно выполняет функция WinMain? 4. Для чего необходимо регистрировать класс окна? 5. Какие характеристики класса окон можно задать при его регистрации? Какие поля структуры, описывающей класс окна, являются наиболее важными? 6. Что такое оконная процедура? Для чего она предназначена? Кто ее вызывает в процессе работы приложения? 7. Может ли приложение создавать окна, принадлежащие классам, которые приложение самостоятельно не регистрировало? 8. Что такое дескриптор окна? Для чего он необходим? 9. После создания окна оно обязательно должно появиться на экране? Что необходимо сделать для отображения окна? 10. Для чего служит цикл обработки сообщений? Откуда приложение извлекает очередное сообщение? Каким образом и кем сообщения создаются? 11. Сколько очередей сообщений существует? Для кого предназначены сообщения? 12. Каким образом цикл обработки сообщений прерывается, давая возможность приложению завершить свою работу? 13. Кто обычно посылает сообщение (и какое), которое прерывает цикл обработки сообщений? 14. Если должно сделать приложение, если оно не обрабатывает некоторое сообщение? 15. Из каких источников оконная процедура получает сообщения? 16. Какое сообщение приходит окну, если часть его рабочей области (или вся она) требует перерисовки? Что такое недействительная область? 17. В каких ситуациях рабочая область может становиться недействительной? 18. С вызова какой функции должна начинаться обработка сообщения WM_PAINT? 19. Вызовом какой функции она должна заканчиваться? Для чего вызываются эти функции? 20. Как обычно реагирует стандартное главное окно приложения на получение сообщения о его удалении? Что при этом происходит с приложением? 129 Лекция 8 “Глобальные сети. Работа в сети. Средства защиты информации в сети. Путеводители (навигаторы). Глобальные и локальные сетевые технологии. Элементы системной интеграции” Краткое историческое введение Около 20 лет назад Министерство Обороны США создало сеть, которая явилась предтечей Internet, - она называлась ARPAnet. ARPAnet была экспериментальной сетью, - она создавалась для поддержки научных исследований в военно-промышленной сфере, - в частности, для исследования методов построения сетей, устойчивых к частичным повреждениям, получаемым, например, при бомбардировке авиацией и способных в таких условиях продолжать нормальное функционирование. Это требование дает ключ к пониманию принципов построения и структуры Internet. В модели ARPAnet всегда была связь между компьютеромисточником и компьютером-приемником (станцией назначения). Сеть a priori предполагалась ненадежной: любая часть сети может исчезнуть в любой момент. На связывающиеся компьютеры - не только на саму сеть - также возложена ответственность обеспечивать налаживание и поддержание связи. Основной принцип состоял в том, что любой компьютер мог связаться как равный с равным с любым другим компьютером. Передача данных в сети была организована на основе протокола Internet - IP. Протокол IP - это правила и описание работы сети. Этот свод включает правила налаживания и поддержания связи в сети, правила обращения с IPпакетами и их обработки, описания сетевых пакетов семейства IP (их структура и т.п.). Сеть задумывалась и проектировалась так, чтобы от пользователей не требовалось никакой информации о конкретной структуре сети. Для того, чтобы послать сообщение по сети, компьютер должен поместить данные в некий ``конверт'', называемый, например, IP, указать на этом ``конверте'' конкретный адрес в сети и передать получившиеся в результате этих процедур пакеты в сеть. Эти решения могут показаться странными, как и предположение о ``ненадежной'' сети, но уже имеющийся опыт показал, что большинство этих решений вполне разумно и верно. Пока Международная Организация по Стандартизации (Organization for International Standartization - ISO) тратила годы, создавая окончательный стандарт для компьютерных сетей, пользователи ждать не желали. Активисты Internet начали устанавливать IPпрограммное обеспечение на все возможные типы компьютеров. Вскоре это стало единственным приемлемым способом для связи разнородных компьютеров. Такая схема понравилась правительству и университетам, которые проводят политику покупки компьютеров у различных производителей. Каждый покупал тот компьютер, который ему нравился и 130 вправе был ожидать, что сможет работать по сети совместно с другими компьютерами. Примерно 10 лет спустя после появления ARPAnet появились Локальные Вычислительные Сети (LAN), например,такие как Ethernet и др. Одновременно появились компьютеры, которые стали называть рабочими станциями. На большинстве рабочих станций была установлена Операционная Система UNIX. Эта ОС имела возможность работы в сети с протоколом Internet (IP). В связи с возникновением принципиально новых задач и методов их решения появилась новая потребность: организации желали подключиться к ARPAnet своей локальной сетью. Примерно в то же время появились другие организации, которые начали создавать свои собственные сети, использующие близкие к IP коммуникационные протоколы. Стало ясно, что все только выиграли бы, если бы эти сети могли общаться все вместе, ведь тогда пользователи из одной сети смогли бы связываться с пользователями другой сети. Одной из важнейших среди этих новых сетей была NSFNET, разработанная по инициативе Национального Научного Фонда (National Science Foundation - NSF), аналога нашего Министерства Науки. В конце 80-х NSF создал пять суперкомпьютерных центров, сделав их доступными для использования в любых научных учреждениях. Было создано всего лишь пять центров потому, что они очень дороги даже для богатой Америки. Именно поэтому их и следовало использовать кооперативно. Возникла проблема связи: требовался способ соединить эти центры и предоставить доступ к ним различным пользователям. Сначала была сделана попытка использовать коммуникации ARPAnet, но это решение потерпело крах, столкнувшись с бюрократией оборонной отрасли и проблемой обеспечения персоналом. Тогда NSF решил построить свою собственную сеть, основанную на IP технологии ARPAnet. Центры были соединены специальными телефонными линиями с пропускной способностью 56 Kbps ( 7 KB/s). Однако, было очевидно, что не стоит даже и пытаться соединить все университеты и исследовательские организации непосредственно с центрами, т.к. проложить такое количество кабеля - не только очень дорого, но практически невозможно. Поэтому решено было создавать сети по региональному принципу. В каждой части страны заинтересованные учреждения должны были соединиться со своими ближайшими соседями. Получившиеся цепочки подсоединялись к суперкомпьютеру в одной из своих точек, таким образом суперкомпьютерные центры были соединены вместе. В такой топологии любой компьютер мог связаться с любым другим, передавая сообщения через соседей. Это решение было успешным, но настала пора, когда сеть уже более не справлялась с возросшими потребностями. Совместное использование суперкомпьютеров позволяло подключенным общинам использовать и множество других вещей, не относящихся к суперкомпьютерам. Неожиданно университеты, школы и другие организации осознали, что заимели под рукой 131 море данных и мир пользователей. Поток сообщений в сети (трафик) нарастал все быстрее и быстрее пока, в конце концов, не перегрузил управляющие сетью компьютеры и связывающие их телефонные линии. В 1987 г. контракт на управление и развитие сети был передан компании Merit Network Inc., которая занималась образовательной сетью Мичигана совместно с IBM и MCI. Старая физически сеть была заменена более быстрыми (примерно в 20 раз) телефонными линиями. Были заменены на более быстрые и сетевые управляющие машины. Процесс совершенствования сети идет непрерывно. Однако, большинство этих перестроек происходит незаметно для пользователей. Включив компьютер, вы не увидите объявления о том, что ближайшие полгода Internet не будет доступна из-за модернизации. Возможно даже более важно то, что перегрузка сети и ее усовершенствование создали зрелую и практичную технологию. Проблемы были решены, а идеи развития проверены в деле. Важно отметить то, что усилия NSF по развитию сети привели к тому, что любой желающий может получить доступ к сети. Прежде Internet была доступна только для исследователей в области информатики, государственным служащим и подрядчикам. NSF способствовал всеобщей доступности Internet по линии образования, вкладывая деньги в подсоединение учебного заведения к сети, только если то, в свою очередь, имело планы распространять доступ далее по округе. Таким образом, каждый студент четырехлетнего колледжа мог стать пользователем Internet. И потребности продолжают расти. Большинство таких колледжей на Западе уже подсоединено к Internet, предпринимаются попытки подключить к этому процессу средние и начальные школы. Выпускники колледжей прекрасно осведомлены о преимуществах Internet и рассказывают о них своим работодателям. Вся эта деятельность приводит к непрерывному росту сети, к возникновению и решению проблем этого роста, развитию технологий и системы безопасности сети. Что составляет Internet? В действительности Internet не просто сеть, - она есть структура, объединяющая обычные сети. Internet - это ``Сеть сетей''. Что включает Internet? Вопрос непростой. Ответ на него меняется со временем. Вначале ответ был бы достаточно прост: ``все сети, использующие протокол IP, которые кооперируются для формирования единой сети своих пользователей''. Это включало бы различные ведомственные сети, множество региональных сетей, сети учебных заведений и некоторые зарубежные сети (за пределами США). Чуть позже привлекательность Internet осознали и некоторые не-IPсети. Они захотели предоставить ее услуги своим клиентам и разработали методы подключения этих ``странных'' сетей (например, Bitnet, DECnet и т.д.) к Internet. Сначала эти подключения, названные шлюзами, служили только для передачи электронной почты. Однако, некоторые из них разработали 132 способы передачи и других услуг. Являются ли эти сети частью Internet? И да, и нет. Все зависит от того, хотят ли они того сами. Административное устройство Internet Internet по организации во многом напоминает церковь. Это организация с полностью добровольным участием. Управляется она чем-то наподобие совета старейшин, однако, у Internet нет патриарха, президента или Папы. Составляющие сети могут иметь своих президентов или аналогичных вождей, но это совсем другое дело; в Internet нет единственной авторитарной фигуры. Высшая власть, где бы Internet ни была, остается за ISOC (Internet Society). ISOC - общество с добровольным членством. Его цель - способствовать глобальному обмену информацией через Internet. Оно назначает совет старейшин, который отвечает за техническую политику, поддержку и управление Internet. Совет старейшин представляет собой группу приглашенных добровольцев, называемую IAB (Совет по архитектуре Internet.). IAB регулярно собирается, чтобы ``благословить'' стандарты и распределить ресурсы, такие, например, как адреса. Internet работает, поскольку имеются стандартные способы общения между компьютерами и прикладными программами. Это позволяет компьютерам разного типа связываться без особых проблем. IAB ответственен за стандарты; он решает, когда стандарт необходим и каким ему следует быть. Когда требуется стандарт, совет рассматривает проблему, принимает стандарт и по сети оповещает о нем мир. IAB также следит за различными номерами (и другими вещами), которые должны оставаться уникальными. Например, каждый компьютер в Internet имеет свой уникальный 32-разрядный двоичный адрес; никакой другой компьютер не имеет такого же. Как присваивается этот адрес? IAB заботится о такого рода проблемах. Он не присваивает адресов самолично, но разрабатывает правила, как эти адреса присваивать. Пользователи Internet высказывают свои жалобы и предложения на встречах IETF (Оперативного инженерного отряда Internet). IETF - это другая добровольная организация; также собирается регулярно, чтобы обсудить текущие эксплуатационные и назревающие технические проблемы. При обсуждении достаточно важной проблемы IETF создает рабочую группу для ее дальнейшего исследования. (На практике ``достаточно важная'' обычно означает, что для рабочей группы находится достаточное количество добровольцев). Посещать встречи IETF и состоять в рабочих группах могут все; главное, чтобы люди работали, дело-то добровольное. Рабочие группы имеют различные функции: это может быть выпуск документации, выработка стратегии действий при возникновении проблем, стратегические исследования, разработка новых стандартов и протоколов, доработка уже существующих (например, изменение значений отдельных полей). Рабочая группа обычновыпускает доклад. В зависимости от вида рекомендации, это может быть просто документацией и быть доступной для любого желающего, что может быть принято добровольно как здравая идея, или же это может быть послано в IAB и быть объявленной стандартом. 133 Если некая сеть принимает учение Internet, присоединяется к ней и считает себя ее частью, тогда она и является частью Internet. Возможно ей многое покажется неразумным, странным, сомнительным - она может поделиться своими сомнениями с IETF. Некоторые жалобы-предложения могут оказаться вполне разумными и, возможно, Internet соответственно изменится. Что-то может показаться просто делом вкуса или традиции, тогда эти возражения будут отклонены. Если сеть делает что-либо, что может навредить Internet, она может быть исключена из сообщества до тех пор, пока она не исправится. Сейчас Internet состоит из более чем 12 тысяч объединенных между собой сетей. Финансы За Internet никто централизовано не платит; нет такой организации как Internet Inc., которая собирает плату со всех сетей Internet или пользователей. Вместо этого каждый платит за свою часть. NSF платит за содержание NSFNET. NASA платит за Научную Сеть NASA (NASA Science Internet). Представители сетей собираются вместе и решают, как им соединяться друг с другом и содержать эти взаимосвязи. Колледж или корпорация платит за ее подключение к некоторой региональной сети, которая в свою очередь платит за свой доступ сетевому владельцу государственного масштаба. Как структура Internet сказывается на Пользователе ? То, что Internet не сеть, а собрание сетей, мало как сказывается на конкретном пользователе. Для того, чтобы сделать что-нибудь полезное (запустить программу или добраться до каких-либо единственных в своем роде данных), пользователю не надо заботиться о том, как эти составляющие сети содержатся, как они взаимодействуют и поддерживают межсетевые связи. Рассмотрим для наглядности телефонную сеть - тоже в некотором роде Internet. Министерство Связи России, Pacific Bell, AT&, MCI, British Telecom, Telefon's de Mexico и т.д., - все это отдельные корпорации, которые обслуживают разные телефонные системы. Они же заботятся о совместной работе, о создании объединенной сети; все, что вам нужно сделать, где бы на планете вы ни находились и куда бы вы ни звонили, - это набрать номер. Если забыть о цене и рекламе, вам должно быть совершенно все равно, с кем вы имеете дело: с МСI, AT& или Министерством Связи. Снимаете трубочку, нажимаете кнопочки (крутите диск) и говорите. Вас, как пользователя, заботит только, кто занимается вашими заявками, когда появляются проблемы. Если что-либо перестает работать, только одна из соответствующих компаний может исправить это. Они общаются друг с другом по проблемным вопросам, но каждый из владельцев сетей ответственен за проблемы, возникающие на его собственном участке системы, за сервис, который эта сеть предоставляет своим клиентам. Это же верно и для Internet. Каждая сеть имеет свой собственный сетевой эксплуатационный центр (NOC). Каждый такой рабочий центр 134 связан с другими и знает, как разрешить различные возможные проблемы. Ваш регион имеет соглашение с одной из составляющих сетей Internet и ее забота состоит в том, чтобы люди вашего региона были довольны работой сети. Так что, если что-то испортится, NOC и есть та самая организация, с кого за это спросят, кого за это будут бить. Архитектура сетевых протоколов TCP/IP, на базе которых построена Internet, предназначена специально для объединенной сети. Сеть может состоять из совершенно разнородных подсетей, соединенных друг с другом шлюзами. В качестве подсетей могут выступать самые разные локальные сети (Token Ring, Ethernet, пакетные радиосети и т.п.), различные национальные, региональные и специализированные сети (например, HEPnet), а также другие глобальные сети, такие, например, как Bitnet или Sprint. К этим сетям могут подключаться машины совершенно разных типов. Каждая из подсетей работает в соответствии со своими специфическими требованиями и имеет свою природу связи, сама разрешает свои внутренние проблемы. Однако, предполагается, что каждая подсеть может принять пакет информации и доставить его по указанному адресу в этой конкретной подсети. Все же не требуется, чтобы подсеть гарантировала доставку пакетов и имела надежный сквозной протокол (протокол работы сети в качестве посредника при передаче сообщений между двух внешних сетей). Природа такого послабления вам станет ясн´а позже. Таким образом, две машины, поключенные к одной подсети, могут напрямую обмениваться пакетами, а если возникает необходимость передать сообщение машине в другой подсети, то вступают в силу межсетевые соглашения, для чего подсети используют свой межсетевой язык - протокол IP; они передают сообщение по определенной цепочке шлюзов и подсетей, пока оно не достигнет нужной подсети, где оно и будет доставлено непосредственно получателю. Другими словами, пользователя вся эта кухня совершенно не заботит. Как и в примере с телефонной сетью, которая представляется ему единой большой сетью, а не множеством сетей, для него все это пестрое сборище разнородных и иногда несовместимых между собой сетей представляется одной сетью - ``Сетью сетей'' - Internet. Потенциальные пользователи Кому же может быть столь полезна Internet и каким образом? Что так способствует ее развитию? Полезность Internet повышалась вместе с развитием вычислительной техники с запаздыванием примерно в 10 лет. В конце 80-х годов появление персональных компьютеров перенесло информатику из царства знатоков к широкой публике. Internet в ходе своего развития и повсеместного распространения занимается именно таким переносом. Internet, как и вычислительная техника, совершила переход от забавы экспертов к инструменту ежедневного пользования. И сам процесс перехода был совершенно аналогичен. Сеть постепенно становилась проще в использовании, частично потому что оборудование стало лучше, а частично потому, что сама стала скорее и надежнее. И самые смелые из тех, кто 135 сначала не решались связываться с Internet, начали ее использовать. Эти новые пользователи породили огромную потребность в новых ресурсах и лучшем инструментарии. Улучшались старые средства, появлялись новые, предназначенные для доступа к новым ресурсам, что облегчало использование сети. И вот уже другая группа людей стала понимать пользу Internet. Процесс повторялся. Этот круговорот продолжает развиваться и по сей день. В общем, все пользователи Internet ищут одного: общения и информации. И они находят это среди людей и компьютеров. Легко позабыть о людских ресурсах Internet, но они очень важны, так же, как и доступные компьютеры. Internet - миролюбивая и дружелюбная страна. Здесь можно встретить таких же людей, как вы сами. Вы, несомненно, потенциальный пользователь сети, если, например, вы: - Биолог, которому потребовалась карта генома дрозофиллы; - Чань-буддист в стане пан-исламистов, ищущий какое-либо духовное товарищество и понимание; - Эстетствующий ителлектуал, поклонник классики и рока, кому осточертела поп-``музыка'' в эфире; - Психолог или психотерапевт, желающий обсудить тонкие моменты отношений тайны исповеди с законом в очень специфическом случае. И так далее. Всем этим людям Internet предоставляет великолепную возможность найти единомышленников. Можно - на самом деле, даже очень легко - найти электронный дискуссионный клуб почти по любой теме (их сейчас всего около полутора тысяч), или начать новую дискуссию и встать у истоков нового клуба, который никто до сих пор не догадался создать. Internet открывает этим людям также и доступ к компьютерным ресурсам. Лектор общества ``Знание'' может связаться с компьютером NASA, который предоставит ему информацию о прошлом, настоящем и будущем космической науки и программы США. Священник может найти Библию, Коран, Тору, чтобы процитировать нужные отрывки. Юрист может вовремя найти копии докладов на заседаниях Верховного Суда США по делу ``Иранконтрас''. Восьмиклассница может обсудить музыкальную лирику В.Цоя с ровесниками или выступить экспертом среди новичков, ведь только она и понимает лирику по-настоящему. И это только начало. Несомненно, в конечном счете, все придут к пониманию того, что наступает Эра Информации; потребность в ней возрастает и будет возрастать лавинообразно, количество потребителей тоже. Никуда от этого не деться. Без надежной и оперативной информации нельзя идти в ногу со временем, развивать науку и технику на уровне лучших мировых образцов. И все мы, все до единого, - потенциальные пользователи глобальной информационной сети. В этом вы убедитесь сами, прочитав и осознав сей труд. Доступ в Internet 136 Доступ в Internet, обычно, получают через поставщиков услуг (service provider). Поставщики эти продают различные виды услуг, каждый из них имеет свои преимущества и недостатки. Так же как и при покупке садовой тачки (в оригинале - автомобиля) вы решаете, какими качествами должна она обладать, сколько вы за нее можете себе позволить заплатить, и, исходя из этого, выбираете подходящий вариант из предлагаемого множества. Но перед тем, как начать действовать в этом направлении, т.е. добывать список поставщиков Internet, читать и выбирать, связываться с ними, выясните, а не имеете ли вы уж´е доступа в Internet, сами того не ведая. Такое вполне может иметь место - в России не так часто, в США не так уж и редко. Если ваша организация или учреждение (институт, компания) уже имеет доступ в Internet, то вряд ли вы сможете получить персональный доступ в сеть лучший, нежели ваша организация. Другими словами, если вы уже имеете доступ в Internet, вам не надо будет платить денег из своего кармана, не надо будет суетиться вокруг поставщиков услуг и т.д., вам просто надо будет научиться пользоваться тем, что вы уже имеете. Если ваша организация пока не имеет доступа в Internet, или вообще-то имеет, но, вот беда, не ваше подразделение (лаборатория, отдел, факультет), вам просто следует понаблюдать и прикинуть, сколько еще потенциальных пользователей имеется среди ваших сослуживцев, возможно, поговорить с ними и заручиться поддержкой, составить предложение и/или подать требование вышестоящему руководству. Имеются (хотя это встречается, увы, пока очень редко) еще возможности получить доступ в Internet не через ее прямых распространителей, без лишних затрат. Первый - поищите в публичных библиотеках: некоторые (центральные) имеют службу, называемую Freenet - свободная (бесплатная) сеть. Это информационная система, основанная соответствующим сообществом, обычно имеющая модемный доступ к Internet по телефону. Второй путь полезен для молодых людей, проживающих в странах Запада, или в центральных городах у нас. Станьте студентом, поступите в западный или организованный у нас же в России совместно с Западом университет или колледж.И выберите соответствующую специальность или запишитесь на курсы, которые позволят вам добраться до заветного компьютера, имеющего доступ в Internet. Например, научитесь плести лапти - уже потом вам будет чем развлечься, когда у вас от непрерывной работы в сети поедет крыша. И когда вы научитесь, у вас будет еще один довод начальству в пользу предоставления вам доступа в Internet: сети как воздух необходима база данных с инструкциями по плетению лаптей, без них они как без рук. Такой вклад руководство не сможет не оценить по достоинству. Виды доступа в Internet В Internet имеется несколько видов доступа. Чем больше возможностей предоставляет вид доступа и чем более он быстр, тем он более дорог. 137 Рассмотрим их в порядке убывания стоимости. Цены для США. Для России смотрите в разделе. . Непосредственный доступ Корпорациям и большим учреждениям, которым желательно иметь доступ в Internet, следует обратиться к виду доступа, называемому ``непосредственный'' или прямой. Он дает вам полный доступ ко всем возможностям сети. Поставщик услуг арендует выделенную телефонную линию с выбранной вами пропускной способностью (чем быстрее, тем дороже; виды линий связи см. в таблице 1) и размещает узловой компьютер (сетевой сервер) непосредственно у вас. Этот узел ответственен за связь вашего сообщества с другими узлами и пересылку данных в обе стороны. Это очень дорого, от примерно $2000 первоначального взноса и до нескольких тысяч долларов ежемесячно. Но, однажды установив такое соединение, вы сможете подключать к этому узлу столько компьютеров, сколько вам заблагорассудится. Чтобы сделать это, вам надо просто связать их в локальную вычислительную сеть вместе с узлом Internet (например, в Ethernet). Вид услуг Стандартная звуковая линия Выделенная линия Т1 Т2 Т3 Скорость 0-19.2 Kbps 56-64 Kbps 1.544 Mbps 6 Mbps 45 Mbps Примечания Никакой дополнительной оплаты Доступ по SLIP или "по вызову" Небольшое прямое подключение к поставщику Прямое подключение для напряженного использования Обычно в сетях не используется Основная сетевая артерия для большой корпорации или университета Таблица: Виды телефонных связей. Непосредственный доступ предлагает наиболее гибкое подключение. Каждый из компьютеров является полноправным членом Internet и может воспользоваться любой из функций сети. Если у вас появилось какое-либо новое программное обеспечение, и вы хотите его опробовать, то вам нужно лишь установить его и запустить. Однако, так как прямое соединение дорого, оно более подходит для группового использования и совершенно непрактично для ``домашних пользователей''. Непосредственный Internet-доступ обычно требует наличия некоторой базовой структуры вашей локальной сети. Поставщик поможет вам на начальном этапе, но как только все заработает, он станет ответственен только за узел сети и за телефонную линию. Что там случается с локальной сетью, 138 это уже ваши проблемы, вам потребуется соответствующий персонал и документация, что тоже повышает эксплуатационные затраты. Однако, вы в данном случае способны предоставлять платные услуги различным частным лицам, отбирая, в некотором смысле, хлеб у поставщиков услуг, тем самым уменьшая свои общие затраты. SLIP и PPP Существуют также и менее дорогие методики ``почти прямого доступа''. Они называются SLIP и PPP и являются версиями программного обеспечения Internet, которое работает на обычных телефонных линиях, используя стандартные высокоскоростные модемы. Итак, вы находите сетевого поставщика, который предоставляет такой вид услуг, договариваетесь о таком доступе, устанавливаете на своем компьютере программное обеспечение, поддерживающее работу по этому протоколу, и работаете, когда вам нужно. Вам даже не нужно использовать выделенную линию (телефонную, например): ваша работа по SLIP или PPP происходит на обычной линии, которую вы освобождаете по окончании сеанса работы и этой же линией могут воспользоваться другие аналогичные пользователи. Преимущество SLIP и PPP состоит в том, что они позволяют работать в режиме полноправного входа в Internet. Вы именно сами входите в Internet, а не используете чью-нибудь еще систему как точку входа в сеть. Что такое SLIP ? Это Internet-протокол, позволяющий в качестве линий связи использовать последовательные линии, например, вкупе с модемом обычные телефонные линии. Программное обеспечение, реализующее работу с протоколом SLIP, принимает символы, приходящие с устройства последовательной передачи данных (модема, последовательного порта и т.д.). Рассматривает и толкует их как составляющие IP-пакета. Укладывает полученные данные в полнокровный нормальный IP-пакет и передает этот пакет далее - соответствующей программе, которая обрабатывает IP-пакеты, например, модулю TCP. На обратном пути SLIP получает от программы (сетевого уровня), посылающей IP-пакеты, IP-пакет, вычленяет его содержимое, соответствующим образом переформатирует, потом делит на символы и отправляет его через устройство последовательной передачи по последовательной линии в сеть, - соседнему узлу Internet. Для корректности укажем: SLIP и PPP - это протоколы канального уровня (см. раздел). PPP - это более поздний протокол, занимающийся тем же самым, что и SLIP. PPP совершеннее и мощнее своего предшественника, поэтому он быстро вытесняет SLIP. SLIP и PPP очень удобны для подключения домашнего компьютера к локальной сети, которая, в свою очередь, входит в Internet. Например, вы можете воспользоваться SLIP, чтобы подключить ваш домашний компьютер к сети вашей компании или института. И тогда ваш компьютер будет иметь полный доступ в Internet, как любой компьютер вашей компании, подключенный через Ethernet к Internet. Ваш домашний компьютер в такой схеме будет иметь такие же возможности, как и все сетевые подключения 139 вашей фирмы. SLIP и PPP также подходят для подключения домашнего компьютера (или очень маленькой локальной сети) к поставщику услуг, который может предоставить непосредственный доступ в Internet. Эти протоколы совсем не предназначены для подключения к Internet сетей средней величины или больших сетей: они не могут общаться достаточно быстро, чтобы обслуживать одновременно большое количество пользователей. Так что, если вы имеете среднюю или большую сеть (или она у вас скоро станет таковой), вам лучше всего обратить свой взор к действительно непосредственному доступу. SLIP - это выбор ``умеренной цены'': он предоставляет хорошее обслуживание и, вместе с тем, не очень дорог. Поставщики услуг такие, как например, UUNET или PSI, скорее всего запросят что-то около $250 в месяц за неограниченное SLIP или PPP обслуживание; возможно также, что они предложат вам вариант с меньшим ежемесячным взносом, но с дополнительной почасовой оплатой. Вам также следует побеспокоиться о счетах за телефон. С целью уменьшить, насколько это возможно, расходы пользователя на телефонные разговоры многие поставщики содержат множество бесплатных телефонных номеров или же номеров в местных телефонных сетях основных густонаселенных регионов. В США под такие бесплатные телефонные номера отведены номера, начинающиеся с 800, так называемые восемьсотые номера. Обычно, различные фирмы резервируют восемьсотые номера для своих отделов, занимающихся сопровождением товара этой фирмы, например, помогающих пользователям справиться с проблемами, возникающими у них при работе с фирменным программным обеспечением. Звонящий по такому номеру за разговор не платит ни копейки, - за все платит тот, кто этот номер зарезервировал и владеет им. Существует версия протокола SLIP, приспособленная для работы на медленных линиях - CSLIP. Это SLIP со сжатыми заголовками. Этот протокол был создан в Lawrence Berkeley Labs (LBL) Ван Якобсоном, как способ повысить эффективность последовательной передачи и повысить уровень сервиса прикладных программ, использующих TCP/IP на медленных линиях. Протокол CSLIP использует в шесть раз меньше избыточной информации (в виде заголовков), нежели протокол SLIP. На низких скоростях передачи данных эта разница заметна только при работе с пакетами, несущими малые обемы информации, такие пакеты порождаются, например, при работе telnet или rlogin. На больших же скоростях CSLIP дает меньший выигрыш и совсем почти ничего не дает для пакетов с большими объемами данных, например, ftp-пакетов . CSLIP для сжатия-разжатия и проверки правильности пересылки пакета (и заголовка) использует информацию из предыдущего пакета, т.е. передача имеет структуру цепочки. Первый пакет в цепочке - несжатый. Если какойлибо пакет теряется, то цепочка рвется, нельзя этот же пакет запросить в самом конце передачи, его нужно пересылать заново тут же, т.е. прекращать 140 процесс передачи и начинать новую цепочку. Таким образом, эта технология при пропаже или искажении пакетов приводит к б´ольшим потерям времени, чем обычный SLIP. Это происходит из-за задержек на останов и передачу нового несжатого пакета). О протоколах SLIP и PPP подробнее можно прочитать в [2], также в документах RFC 1055, 1134, 1171, 1172. Доступ ``по вызову'' (Dial-up Access) Что же делать, если вы не можете себе позволить непосредственный доступ и не хотите экспериментировать с PPP или SLIP? Есть способ полегче получить доступ к сети: вам нужно стать пользователем какойнибудь большой машины (получить логическое имя, получить доступ к системе и права пользователя на работу), которая имеет прямой доступ в сеть и допускает возможность удаленной работы. Теперь вы просто используете свой домашний компьютер (+модем) для входа в эту машину и уже на ней работаете в сети. Доступ по вызову почти так же хорош, как и ваше собственное подключение, и он существенно проще по установке. Ваш компьютер на самом деле не становится частью сети, он просто имеет доступ к услугам компьютера, который подсоединен к сети постоянно. Многие организации предоставляют этот вид услуг. Так как вы пользуетесь соединением совместно с другими, такая услуга намного дешевле (обычно около $20-40 в месяц + , иногда, почасовая оплата). Наиболее дешево получается, если вы заключаете контракт на доступ только вне часов пик (т.е. в ночное время и выходные). Если же вы сможете найти доступ к местной Freenet, это будет еще дешевле, фактически бесплатно, как подразумевает название сети. Этот вид подключения имеет свои за и против. С одной, приятной, стороны, вы уже, скорее всего, имеете все нужное оборудование и программное обеспечение (т.е. модем и пакет программ эмуляции терминала). Даже если вам их придется докупать, это выйдет не дороже $200. С другой, не очень приятной, стороны, вы можете делать только то, что вам позволит поставщик этой услуги. Возможно, вы не сможете воспользоваться всеми сервисными возможностями Internet. Скорее всего, вы не сможете сразу же загрузить и использовать новейшее программное обеспечение, которое появилось у вас, вам для этого придется связаться с поставщиком. Некоторые поставщики могут ограничивать доступное вам дисковое пространство. И опять же вам надо будет беспокоиться о счетах за телефон, хотя некоторые поставщики (как уже упоминалось) предоставляют широкую сеть номеров, чтобы минимизировать ваши затраты. Кстати, стоит упомянуть еще один новый вид услуг ``по вызову''. Фирма PSI (один из основных поставщиков) распространяет бесплатное программное обеспечение - пакет программ PSIlink. Он позволяет персональному компьютеру с системой MS DOS связываться с их системой и пользоваться электронной почтой Internet - e-mail, доской объявлений и службой пересылки файлов. Им удалось скрыть от пользователя большинство проблем, которые влечет за собой доступ по вызову: например, 141 файлы, которые вы хотите, автоматически пересылаются к вам домой. Цена такой услуги около $30 в месяц. Недостатки такого сервиса: вы ограничены тем, что вам дает поставщик; пакет этот не желает работать с их конкурентами. Доступ UUCP Все системы UNIX поддерживают сервис, называемый UUCP, который позволяет пересылать данные по стандартным телефонным линиям. UUCP это, также как и SLIP и PPP, протокол канального уровня, но он не обладает полным спектром возможностей, которые можно было бы реализовать на этом уровне, как, например, в протоколе SLIP. UUCP позволяет лишь пересылать файлы из одной системы в другую. Если вы найдете поставщика UUNET (непосредственно или же, например в лице своего работодателя или друга), то вы можете воспользоваться UUCP для того чтобы заиметь у себя почту Internet и новости USENET. Ваша система может использовать UUCP, чтобы связываться с удаленной системой, входить в нее и регулярно пересылать новости и почту обратно к вам. Вы не сможете получить чего-то больше, чем просто пользоваться почтой и новостями, т.к. на самом деле, вы к Internet не подсоединены. Просто ваш компьютер названивает другому, который подключен к Internet, и обменивается с ним файлами. UUCP широко распространен (требуется лишь программа поддержки протокола UUCP и модем, даже UNIX необязателен), так что, скорее всего, вам не придется тратиться ни на оборудование, ни на программное обеспечение. Любая система UNIX включает в себя все программы, какие вам для этого могут понадобиться. Существует множество программ эмуляции команды uucp для не-UNIX-систем, например, для MS-DOS - это UUPC. И достаточно легко найти кого-нибудь, кто подарит вам UUCP-подключение или предоставит за разумно низкую плату. Если все, что вы хотите, - это иметь e-mail у себя на дому, это вам поможет. Установка UUCP, конечно, не тривиальна, но и не очень трудна. Можно об этом подробнее справиться в [3] и [4]. Доступ через другие сети Разные сети, подключенные к Internet, в разной степени интегрированы в нее. Большинство сетевых служб, таких как Bitnet или CompuServe, устанавливают сетевые средства (шлюзы), позволяющие обмениваться электронной почтой между этими системами и Internet. Некоторые шлюзы позволяют пользователям подключенных сетей читать доски объявлений Internet (новости USENET). И есть несколько серверов, разбросанных по всему миру, которые позволяют затребовать файлы по электронной почте; такие службы автоматически добывают нужный файл и отсылают его по email обратно к запросившему пользователю. Это, конечно, не так прекрасно, как получение файла непосредственно, но на безрыбье Возможно, это все, что вам нужно. Но это - не подключение к Internet, просто вы имеете доступ к паре услуг. Ваши возможности довольно ограничены, великое множество возможностей остается вне вашей досягаемости. 142 Планы на будущее Стандартные протоколы ISO Когда шел разговор о начале Internet, была упомянута ISO и их комплект стандартов протоколов (см. глоссарий). ISO завершила некий этап этих разработок. Теперь имеется международный стандарт, обычно называемый ``ISO-OSI протоколы'' (OSI- Open System Interconnection - связь открытых систем). О содержании этих стандартов можно прочитать в [1]. Много сетей, входящих в Internet, уже используют протоколы OSI. Но большой потребности в том пока еще нет. Правительство США взяло курс на распространение поддержки этого протокола на компьютерах правительственных учреждений. Многие теперь имеют соответствующее программное обеспечение, но реально используют его очень немногие. Действительно неясно, какова окажется потребность в OSI, несмотря на поддержку его правительством. Множество людей чувствуют, что ныне используемый подход (TCP/IP) еще не исчерпал себя, так зачем же его отбрасывать? Они только-только свыклись с тем, что есть. Так почему же им следует зубрить новую систему команд и терминологию? Только потому, что это есть стандарт? Пока не видно никаких явных преимуществ OSI, которые способствовали бы его продвижению. Он более сложен и менее зрел, нежели IP, и, следовательно, работает не так эффективно. Да, технология OSI подает надежды на некоторые дополнительные возможности, но она тоже страдает от тех же проблем, что и технология internet (TCP/IP). Эти проблемы будут все чаще возникают перед сетями, использующими технологию OSI, по мере того, как они становятся все больше и быстрее. Международные связи Internet является международной сетью уже достаточно долго, но распространялась она в основном на союзников и зарубежные военные базы США. Теперь, в менее напряженной мировой обстановке, Internet распространяется повсеместно. Уже сейчас она доступна примерно в полусотне стран и число это быстро растет. Страны Восточной Европы с большим энтузиазмом принимают участие в этом процессе; их стремление включиться на этом уровне в мировое научное сообщество долгое время сдерживалось правительствами. Включение в Internet рассматривается ими сейчас как один из путей развития образования и технологии, поднятия их на новый качественный уровень. Способность Internet общаться по протоколам OSI должна помочь ей распространиться еще больше. Б´ольшая часть Европы, за исключением стран Скандинавии, которые приняли протоколы Internet уже давно, рассматривает IP как угрозу агрессии со стороны США своей интеллектуальной и культурной самобытности. Их более привлекают сети, основанные на OSI протоколах. И если эти два протокола смогут сосуществовать, все будут просто счастливы. Международная экспансия Internet на слабо развитые страны в настоящее время затруднена отсутствием хорошей базовой инфраструктуры, 143 а именно отсутствием приличной телефонной системы. Как в Восточной Европе, так и в странах третьего мира нет телефонных систем достойного качества. Даже в столичных и крупных промышленных городах линии связи в лучшем случае имеют пропускные способности, доступные на любом домашнем телефоне в США: 9600 bps. Типична ситуация, когда одна из таких стран даже и ``входит в Internet'', но доступны реально лишь немногие ее области, или даже просто точки. Обычно это основные технические ВУЗ-ы и университеты страны, исследовательские институты, имеющие давние международные связи. Однако, можно ожидать,что ситуация изменится, и по мере того, как развивается телефонная система, будет возрастать активность все более мелких членов сети. Они станут появляться в Internet все чаще, одновременно будет расти их плотность. И даже индивидуальные домашние системы постепенно станут в сети обычным явлением Коммерциализация В Internet вот уже много лет пребывают различные крупные корпорации. В большинстве случаев их участие было ограничено их исследовательскими отделениями. Для своих же деловых общений эти компании использовали другие (обычно частные) сети. И все IP-возможности были лишь академической игрушкой. Большие машины IBM, которые работали с их коммерческими данными, использовали протоколы, названные SNA. Сейчас предприниматели начинают понимать, что содержать множество различных сетей дорого и нецелесообразно. Некоторые начинают посматривать на Internet в поисках возможностей заключения торговых сделок по сети . Ранее их отпугивала политика, не одобрявшая или запрещавшая коммерческое использование Internet. Большинство этих взглядов сейчас пересматриваются и меняются. Коммерческое использование Internet будет становиться все более обычным, по мере того, как эти запреты будут исчезать. Это должно быть особенно привлекательно для малого бизнеса. Motorola или Standard OiL могут себе позволить содержать межконтинентальную сеть, связывающую их филиалы, а небольшая фирма пока себе такого позволить не может. Если она имеет филиалы, например, в Уфе и Москве, то все что требуется - это включение в Internet каждого филиала. Практически, - это сеть не только по всей стране, как у воротил бизнеса, но более того, - по всему миру. Приватизация За коммерциализацией сразу приходит и приватизация. Годами сетевое сообщество желало от телефонных компаний и других коммерческих предприятий обеспечения IP-подключения такого же уровня доступности, как обычного телефона, т.е., чтобы можно было заказать и привести Internetлинию домой также легко и просто как телефонную. Вы заказываете, приходит спец, устанавливает, уходит, и вы тут же подключаете к этому разъему свой компьютер, и вот вы в сети! Но телефонные компании всегда на это говорили: «Мы продадим вам телефонные линии, а вы, что хотите, то с 144 ними и делайте». К счастью, федеральные власти не оставляли сетевой бизнес без своей опеки. Структура функционирования сети Современные сети построены по многоуровневому принципу. Чтобы организовать связь двух компьютеров, требуется сначала создать свод правил их взаимодействия, определить язык их общения, т.е. определить, что означают посылаемые ими сигналы и т.д. Эти правила и определения называются протоколом. Для работы сетей необходимо запастись множеством различных протоколов: например, управляющих физической связью, установлением связи по сети, доступом к различным ресурсам и т.д. Многоуровневая структура спроектирована с целью упростить и упорядочить это великое множество протоколов и отношений. Продемонстрируем принципы этой структуры на диаграмме. На рисунке показана общепринятая семиуровневая структура согласно ISO. Эта модель известна как ``эталонная модель ISO OSI''. Она позволяет составлять сетевые системы из продуктов модулей программного обеспечения выпущенных разными производителями. Взаимодействие уровней в этой модели - субординарное. Каждый уровень может реально взаимодействовать только с соседними уровнями (верхним и нижним), виртуально - только с аналогичным уровнем на другом конце линии. Под реальным взаимодействием мы подразумеваем непосредственное взаимодействие, непосредственную передачу информации, например, пересылку данных в оперативной памяти из области, отведенной одной программе, в область другой программы. При непосредственной передаче данные остаются неизменными все время. Под виртуальным взаимодействием мы понимаем опосредованное взаимодействие и передачу данных; здесь данные в процессе передачи могут уже определенным, заранее оговоренным образом видоизменяться. Такое взаимодействие аналогично схеме цепи посылки письма одним директором фирмы другому. Например, директор некоторой фирмы пишет письмо редактору газеты. Директор пишет письмо на своем фирменном бланке и отдает этот листок секретарю. Секретарь запечатывает листок в конверт, надписывает конверт, наклеивает марку и передает почте. Почта доставляет письмо в соответствующее почтовое отделение. Это почтовое отделение связи непосредственно доставляет письмо получателю - секретарю редактора газеты. Секретарь распечатывает конверт и, по мере надобности, подает редактору. Ни одно из звеньев цепи не может быть пропущено, иначе цепь разорвется: если отсутствует, например, секретарь, то листок с письменами директора так и будет пылиться на столе у секретаря. Здесь мы видим, как информация (лист бумаги с текстом) передается с верхнего уровня вниз, проходя множество необходимых ступеней - стадий обработки. Обрастает служебной информацией (пакет, адрес на конверте, почтовый индекс; контейнер с корреспонденцией; почтовый вагон, станция назначения почтового вагона и т.д.), изменяется на каждой стадии обработки 145 и постепенно доходит до самого нижнего уровня - уровня почтового транспорта (гужевого, автомобильного, железнодорожного, воздушного и др.), которым реально перевозится в пункт назначения. В пункте назначения происходит обратный процесс: вскрывается контейнер и извлекается корреспонденция, считывается адрес на конверте и почтальон несет его адресату (секретарю), который восстанавливает информацию в первоначальном виде, - достает письмо из конверта, прочитывает его и определяет его срочность, важность, и в зависимости от этого передает информацию выше. Директор и редактор, таким образом, виртуально имеют прямую связь. Ведь редактор газеты получает в точности ту же информацию, которую отправил директор, а именно - лист бумаги с текстом письма. Начальствующие персоны совершенно не заботятся о проблемах пересылки этой информации. Секретари также имеют виртуально прямую связь: секретарь редактора получит в точности то же, что отправил секретарь директора, а именно - конверт с письмом. Секретарей совершенно не волнуют проблемы почты, пересылающей письма. И так далее. Аналогичные связи и процессы имеют место и в эталонной модели ISO OSI. Физическая связь реально имеет место только на самом нижнем уровне (аналог почтовых поездов, самолетов, автомобилей). Горизонтальные связи между всеми остальными уровнями являются виртуальными, реально они осуществляются передачей информации сначала вниз, последовательно до самого нижнего уровня, где происходит реальная передача, а потом, на другом конце, обратная передача вверх последовательно до соответствующего уровня. На рисунке показан путь информации на уровне 6. Модель ISO OSI предписывает очень сильную стандартизацию вертикальных межуровневых взаимодействий. Такая стандартизация гарантирует совместимость продуктов, работающих по стандарту какоголибо уровня, с продуктами, работающими по стандартам соседних уровней, даже в том случае, если они выпущены разными производителями. Количество уровней может показаться избыточным, однако же, такое разбиение необходимо для достаточно четкого разделения требуемых функций воизбежание излишней сложности и создания структуры, которая может подстраиваться под нужды конкретного пользователя, оставаясь в рамках стандарта. ===================================================================== Комьпьютер А Компьютер В +----------------+ Application protocol +----------------+ | Application | _ _ _ _ _ _ _ _ _ | Application | | layer | | layer | +----------------+ Уровень 7 -прикладной +----------------+ | | | | +----------------+ Presentation protocol +----------------+ | Presentation | _ _ _ _ _ _ _ _ _ | Presentation | | . layer | | layer . | +---.------------+ Уровень 6 -представления +-----------.----+ . | данных | . . | | . 146 . | | . +---.------------+ Session protocol +-----------.----+ | Presentation | _ _ _ _ _ _ _ _ _ | Presentation | | . layer | | layer . | +---.------------+ Уровень 5 -сеансовый +-----------.----+ . | | . . | | . +---.------------+ Transport protocol +-----------.----+ | Transport | _ _ _ _ _ _ _ _ _ | Transport | | . layer | | layer . | +---.------------+ Уровень 4 -транспортный +-----------.----+ . | | . . | | . +---.------------+ Network protocol +-----------.----+ | Network | _ _ _ _ _ _ _ _ _ | Network . | | . layer | | layer . | +---.------------+ Уровень 3 -сетевой +-----------.----+ . | | . . | | . +---.------------+ Data link protocol +-----------.----+ | Data Link | _ _ _ _ _ _ _ _ _ | Data Link | | . layer | | layer . | +---.------------+ Уровень 2 -канальный +-----------.----+ . | | . . | | . +---.------------+ Physical protocol +-----------.----+ | Physical | _ _ _ _ _ _ _ _ _ | Physical . | | . layer | | layer . | +---.------------+ Уровень 1 -физический +-----------.----+ . | | . . | ********************** | . . | * Physical media * | . . | * -физическая среда * | . . . |. . . . . .* . . . . . . . . . .* . . . . . . | . . |___________*____________________*_____________| ********************** _ _ _ _ _ Виртуальные соединения . . . . . Путь данных, соответствующий связи на уровне 6 _________ Физическое реальное соединение | | Интерфейс (иерархическое взаимодействие уровней) ===================================================================== Рисунок: Эталонная модель ISO OSI Дадим краткий обзор уровней. Уровень 0 Связан с физической средой - передатчиком сигнала и на самом деле не включается в эту схему, но весьма полезен для понимания. Этот почетный уровень представляет посредников, соединяющих конечные устройства: кабели, радиолинии и т.д. Кабелей существует великое множество различных видов и типов: экранированные и неэкранированные витые пары, коаксиальные, на основе оптических волокон и т.д. Т.к. этот уровень не включен в схему, он ничего и не описывает, только указывает на среду. Уровень 1 - физический. Включает физические аспекты передачи двоичной информации по линии связи. Детально описывает, например, напряжения, частоты, природу передающей среды. Этому уровню вменяется в обязанность поддержание 147 связи и прием-передача битового потока. Безошибочность желательна, но не требуется. Уровень 2 - канальный. Связь данных. Обеспечивает безошибочную передачу блоков данных (называемых кадрами (frame)) через уровень 1, который при передаче может искажать данные. Этот уровень должен определять начало и конец кадра в битовом потоке, формировать из данных, передаваемых физическим уровнем, кадры или последовательности , включать процедуру проверки наличия ошибок и их исправления. Этот уровень (и только он) оперирует такими элементами, как битовые последовательности, методы кодирования, маркеры. Он несет ответственность за правильную передачу данных (пакетов) на участках между непосредственно связанными элементами сети. Обеспечивает управление доступом к среде передачи. В виду его сложности, канальный уровень подразделяется на два подуровня: MAC (Medium Access Control) - Управление доступом к среде и LLC (Logical Link Control) Управление логической связью (каналом). Уровень MAC управляет доступом к сети (с передачей маркера в сетях Token Ring или распознаванием конфликтов (столкновений передач) в сетях Ethernet) и управлением сетью. Уровень LLC, действующий над уровнем MAC, и есть собственно тот уровень, который посылает и получает сообщения с данными. Уровень 3 - сетевой. Этот уровень пользуется возможностями, предоставляемыми ему уровнем 2, для обеспечения связи двух любых точек в сети. Любых, необязательно смежных. Этот уровень осуществляет проводку сообщений по сети, которая может иметь много линий связи, или по множеству совместно работающих сетей, что требует маршрутизации, т.е. определения пути, по которому следует пересылать данные. Маршрутизация производится на этом же уровне. Выполняет обработку адресов, а также и демультиплексирование. Основной функцией программного обеспечения на этом уровне является выборка информации из источника, преобразование ее в пакеты и правильная передача в точку назначения. Есть два принципиально различных способа работы сетевого уровня. Первый - это метод виртуальных каналов. Он состоит в том, что канал связи устанавливается при вызове (начале сеанса (session) связи), по нему передается информация, и по окончании передачи канал закрывается (уничтожается). Передача пакетов происходит с сохранением исходной последовательности, даже если пакеты пересылаются по различным физическим маршрутам, т.е. виртуальный канал динамически перенаправляется. При этом пакеты данных не включают адрес пункта назначения, т.к. он определяется во время установления связи. Второй - метод дейтаграмм. Дейтаграммы - независимые, они включают всю необходимую для их пересылки информацию. В то время, как первый метод предоставляет следующему уровню (уровню 4) надежный канал передачи данных, свободный от искажений (ошибок) и правильно доставляющий пакеты в пункт назначения, второй метод требует от 148 следующего уровня работы над ошибками и проверки доставки нужному адресату. Уровень 4 - транспортный. Регламентирует пересылку пакетов сообщений между процессами, выполняемыми на компьютерах сети. Завершает организацию передачи данных: контролирует на сквозной основе поток данных, проходящий по маршруту, определенному третьим уровнем: правильность передачи блоков данных, правильность доставки в нужный пункт назначения, их комплектность, сохранность, порядок следования. Собирает информацию из блоков в ее прежний вид. Или же оперирует с дейтаграммами, т.е. ожидает отклика-подтверждения приема из пункта назначения, проверяет правильность доставки и адресации, повторяет посылку дейтаграммы, если не пришел отклик. В рамках транспортного протокола предусмотрено пять классов качества транспортировки и соответствующие процедуры управления. Этот же уровень должен включать развитую и надежную схему адресации для обеспечения связи через множество сетей и шлюзов. Другими словами, задачей данного уровня является довести до ума передачу информации из любой точки в любую во всей сети. Транспортный уровень скрывает от всех высших уровней любые детали и проблемы передачи данных, обеспечивает стандартное взаимодействие лежащего над ним уровня с приемом-передачей информации независимо от конкретной технической реализации этой передачи. Уровень 5 - сеансовый. Координирует взаимодействие связывающихся пользователей: устанавливает их связь, оперирует с ней, восстанавливает аварийно оконченные сеансы. Этот же уровень ответственен за картографию сети - он преобразовывает региональные (доменные) компьютерные имена в числовые адреса , и наоборот. Он координирует не компьютеры и устройства, а процессы в сети, поддерживает их взаимодействие - управляет сеансами связи между процессами прикладного уровня. Уровень 6 - уровень представления данных. Этот уровень имеет дело с синтаксисом и семантикой передаваемой информации, т.е. здесь устанавливается взаимопонимание двух сообщающихся компьютеров относительно того, как они представляют и понимают по получении передаваемую информацию. Здесь решаются, например, такие задачи, как перекодировка текстовой информации и изображений, сжатие и распаковка, поддержка сетевых файловых систем (NFS), абстрактных структур данных и т.д. Уровень 7 - прикладной. Обеспечивает интерфейс между пользователем и сетью, делает доступными для человека всевозможные услуги. На этом уровне реализуется, по крайней мере, пять прикладных служб: передача файлов, удаленный терминальный доступ, электронная передача сообщений, служба справочника и управление сетью. В конкретной реализации определяется пользователем (программистом) согласно его насущным нуждам и 149 возможностям его кошелька, интеллекта и фантазии. Имеет дело, например, с множеством различных протоколов терминального типа, которых существует более ста. Замечание. Следует понимать, что подавляющее большинство современных сетей в силу исторических причин лишь в общих чертах, приближенно, соответствуют эталонной модели ISO OSI. Рассмотрим некоторые из указанных уровней в их проекции на Internet подробнее. Не забывайте, что проекция искажена в силу несоответствия технологии internet стандарту эталонной модели - перемешаны некоторые уровни и функции уровней Уровни работы сети Пересылка битов Пересылка битов происходит на физическом уровне схемы ISO OSI. Увы, здесь всякая попытка краткого и доступного описания обречена на провал. Требуется введение огромного количества специальных терминов, понятий, описаний процессов на физическом уровне и т.д. И потом, существует столь великое разнообразие приемо-передатчиков и передающих сред, - трудно даже и обозреть этот океан технологий. Для понимания работы сетей этого и не требуется. Считайте, что просто имеется труба, по которой из конца в конец перекачиваются биты. Именно биты, безо всякого деления на какие-либо группы (байты, декады и т.п.). Пересылка данных Об организации блочной, символьной передачи, обеспечении надежности пересылки поговорим на других уровнях модели ISO OSI. Т.е. функции канального уровня в Internet распределены по другим уровням, но не выше транспортного. В этом смысле Internet не совсем соответствует стандарту ISO. Здесь канальный уровень занимается только разбиением битового потока на символы и кадры и передачей полученных данных на следующий уровень. Обеспечением надежности передачи он себя не утруждает. Сети коммутации пакетов Настала пора поговорить об Internet именно как о сети, а не паутине линий связи и множестве приемо-передатчиков. Казалось бы, Internet вполне аналогична телефонной сети, и модель телефонной сети достаточно адекватно отражает ее структуру и работу. В самом деле, обе они электронные, обе позволяют вам устанавливать связь и передавать информацию. И Internet тоже состоит, в первую очередь, из выделенных телефонных линий. Но увы! Картина эта неверна и приводит ко многим заблуждениям относительно работы Internet, ко множеству недоразумений. Телефонная сеть - это так называемая сеть с коммутацией линий, т.е. когда вы делаете вызов, устанавливается связь и на все время сеанса связи имеется 150 физическое соединение с абонентом. При этом вам выделяется часть сети, которая для других уже не доступна, даже если вы молча дышите в трубку, а другие абоненты хотели бы поговорить по действительно неотложному делу. Это приводит к нерациональному использованию очень дорогих ресурсов линий сети. Internet же является сетью с коммутацией пакетов, что принципиально отличается от сети с коммутацией каналов. Для Internet более подходит модель, которая поначалу может не внушать доверия: почта, обыкновенная государственная почтовая служба. Почта является сетью пакетной связи. Нет никакой выделенной вам части этой сети. Ваше послание перемешивается с посланиями других пользователей, кидается в контейнер, пересылается в другое почтовое отделение, где снова сортируется. Хотя технологии сильно разнятся, почта является прекрасным и наглядным примером сети с коммутацией пакетов. Модель почты удивительно точно отражает суть работы и структуры Internet. Ею мы и будем пользоваться далее. Протокол Internet (IP) По проводу можно переслать биты только из одного его конца в другой. Internet же умудряется аккуратно передавать данные в различные точки, разбросанные по всему миру. Как она это делает? Забота об этом возложена на сетевой (межсетевой) уровень в эталонной модели ISO OSI. О нем и поговорим. Различные части Internet - составляющие сети - соединяются между собой посредством компьютеров, которые называются ``узлы''; так Сеть связывается воедино. Сети эти могут быть Ethernet, Token Ring, сети на телефонных линиях, пакетные радиосети и т.п. Выделенные линии и локальные сети суть аналоги железных дорог, самолетов почты и почтовых отделений, почтальонов. Посредством их почта движется с места на место. Узлы - аналоги почтовых отделений, где принимается решение, как перемещать данные (``пакеты'') по сети, точно так же, как почтовый узел намечает дальнейший путь почтового конверта. Отделения или узлы не имеют прямых связей со всеми остальными. Если вы отправляете конверт из Долгопрудного (Московская область) в Уфу (Башкирия), конечно же, почта не станет нанимать самолет, который полетит из ближайшего к Долгопрудному аэропорта (Шереметьево) в Уфу, просто местное почтовое отделение отправляет послание на подстанцию в нужном направлении, та в свою очередь, дальше в направлении пункта назначения на следующую подстанцию; таким образом письмо станет последовательно приближаться к пункту назначения, пока не достигнет почтового отделения, в ведении которого находится нужный объект и которое доставит сообщение получателю. Для работы такой системы требуется, чтобы каждая подстанция знала о наличествующих связях и о том, на какую из ближайших подстанций оптимально следует передать адресованный туда-то пакет. Примерно также и в Internet: узлы выясняют, куда следует ваш пакет данных, решают, куда его дальше отправить и отправляют. 151 На каждой почтовой подстанции определяется следующая подстанция, куда будет далее направлена корреспонденция, т.е. намечается дальнейший путь (маршрут) - этот процесс называется маршрутизацией. Для осуществления маршрутизации каждая подстанция имеет таблицу, где адресу пункта назначения (или индексу) соответствует указание почтовой подстанции, куда следует посылать далее этот конверт (бандероль, ). Их сетевые аналоги называются таблицами маршрутизации. Эти таблицы рассылаются почтовым подстанциям централизовано соответствующим почтовым подразделением. Время от времени рассылаются предписания по изменению и дополнению этих таблиц. В Internet, как и любые другие действия, составление и модификация, таблиц маршрутизации (этот процесс тоже является частью маршрутизации и называется так же) определяются соответствующими правилами - протоколами ICMP (Internet Control Message Protocol), RIP (Routing Internet Protocol) и OSPF (Open Shortest Path First). Узлы, занимающиеся маршрутизацией, называются маршрутизаторами. А откуда сеть знает, куда назначен ваш пакет данных? От вас. Если вы хотите отправить письмо и хотите, чтобы ваше письмо достигло места назначения, вы не можете просто кинуть листочек бумаги в ящик. Вам следует уложить его в стандартный конверт и написать на нем не ``на деревню дедушке'', как Ванька Жуков, а адрес получателя в стандартной форме. Только тогда почта сможет правильно обработать ваше письмо и доставить его по назначению. Аналогично в Internet имеется набор правил по обращению с пакетами - протоколы. Протокол Internet (IP) берет на себя заботы по адресации или по подтверждению того, что узлы понимают, что следует делать с вашими данными по пути их дальнейшего следования. Согласно нашей аналогии, протокол Internet работает также как правила обработки почтового конверта. В начало каждого вашего послания помещается заголовок, несущий информацию об адресате, сети. Чтобы определить, куда и как доставить пакет данных, этой информации достаточно. Адрес в Internet состоит из 4 байт. При записи байты отделяются друг от друга точками: 123.45.67.89 или 3.33.33.3 . (Не пугайтесь, запоминать эти цифры вам не придется!) В действительности адрес состоит из нескольких частей. Так как Internet есть сеть сетей, начало адреса говорит узлам Internet, частью какой из сетей вы являетесь. Правый конец адреса говорит этой сети, какой компьютер или хост должен получить пакет (хотя реально не все так просто, но идея такова). Каждый компьютер в Internet имеет в этой схеме уникальный адрес, аналогично обычному почтовому адресу, а еще точнее - индексу. Обработка пакета согласно адресу также аналогична. Почтовая служба знает, где находится указанное в адресе почтовое отделение, а почтовое отделение подробно знает подопечный район. Internet знает, где искать указанную сеть, а эта сеть знает, где в ней находится конкретный компьютер. Для определения, где в локальной сети находится компьютер с данным числовым IP-адресом, локальные сети используют свои собственные протоколы сетевого уровня. Например, Ethernet для отыскания 152 Ethernet-адреса по IP-адресу компьютера, находящегося в данной сети, использует протокол ARP - протокол разрешения(в смысле различения) адресов. (См. документацию по ARP: RFC 826, 917, 925, 1027) Числовой адрес компьютера в Internet аналогичен почтовому индексу отделения связи. Первые цифры индекса говорят о регионе (например, 45 это Башкирия, 141 - подмосковье и т.д.), последние две цифры - номер почтового отделения в городе, области или районе. Промежуточные цифры могут относиться как к региону, так и к отделению, в зависимости от территориального деления и вида населенного пункта. Аналогично существует несколько типов адресов Internet (типы: A, B, C, D, E), которые по-разному делят адрес на поля номера сети и номера узла, от типа такого деления зависит количество возможных различных сетей и машин в таких сетях. По ряду причин (особенно, - практических, из-за ограничений оборудования) информация, пересылаемая по сетям IP, делится на части (по границам байтов), раскладываемые в отдельные пакеты. Длина информации внутри пакета обычно составляет от 1 до 1500 байт. Это защищает сеть от монополизирования каким-либо пользователем и предоставляет всем примерно равные права. Поэтому же, если сеть недостаточно быстра, чем больше пользователей ее одновременно пользует, тем медленнее она будет общаться с каждым. Протокол IP является дейтаграммным протоколом, т.е. IP-пакет является дейтаграммой. Это совершенно не укладывается в модель ISO OSI, в рамках которой уже сетевой уровень способен работать по методу виртуальных каналов. Одно из достоинств Internet состоит в том, что протокола IP самого по себе уже вполне достаточно для работы (в принципе). Это совершенно неудобно, но, при достаточных аскетичности, уме и упорстве удастся проделать немалый объем работы. Как только данные помещаются в оболочку IP, сеть имеет всю необходимую информацию для передачи их с исходного компьютера получателю. Работа вручную с протоколом IP напоминает нам суровые времена доперсональной компьютерной эры, когда пользователь всячески угождал ЭВМ, укрощая свои тело, дух и эстетические чувства. Об удобстве пользователя никто и не собирался думать, потому что машинное время стоило во много раз дороже человеческого. Но сейчас в аскетизме надобности уже нет. Поэтому следует построить на основе услуг, предоставляемых IP, более совершенную и удобную систему. Для этого сначала следует разобраться с некоторыми жизненно важными проблемами, которые имеют место при пересылке информации: Б´ольшая часть пересылаемой информации длиннее 1500 символов. Eсли бы почта пересылала только почтовые карточки и отказывалась бы от пересылки чего-либо большего, мы бы, например, лишились увлекательнейшего литературного жанра - эпистолярного. Не говоря уже о том, что практической пользы от такой почты было бы очень немного; 153 Возможны и неудачи. Почта, нередко бывает, письма теряет; сеть тоже, бывает, теряет пакеты или искажает в пути информацию в них. В отличие от почты, Internet может с честью выходить из таких затруднительных положений; Пакеты могут приходить в последовательности, отличной от начальной. Пара писем, отправленных друг за другом на днях, не всегда приходит к получателю в том же порядке; то же верно и для Internet. Таким образом, следующий уровень Internet должен обеспечить способ пересылки больших массивов информации и позаботиться об ``искажениях'', которые могут возникать по вине сети. Протокол управления передачей (TCP) и протокол пользовательских дейтаграмм (UDP) Transmission Control Protocol - это протокол, тесно связанный с IP, который используется в аналогичных целях, но на более высоком уровне транспортном уровне эталонной модели ISO OSI. Часто эти протоколы, по причине их тесной связи, именуют вместе, как TCP/IP. Термин ``TCP/IP'' обычно означает все, что связано с протоколами TCP и IP. Он охватывает целое семейство протоколов, прикладные программы и даже саму сеть. В состав семейства входят протоколы TCP, UDP, ICMP, telnet, FTP и многие другие. Иерархия протоколов семейства TCP/IP показана на рисунке. TCP/IP - это технология межсетевого взаимодействия, технология internet. Сеть, которая использует технологию internet, называется internet. Сам протокол TCP занимается проблемой пересылки больших объемов информации, основываясь на возможностях протокола IP. Как это делается? Вполне здраво можно рассмотреть следующую ситуацию. Как можно переслать книгу по почте, если та принимает только письма и ничего более? Очень просто: разодрать ее на страницы и отправить страницы отдельными конвертами. Получатель, руководствуясь номерами страниц, легко сможет книгу восстановить. Этим же простым и естественным методом и пользуется TCP. TCP делит информацию, которую надо переслать, на несколько частей. Нумерует каждую часть, чтобы позже восстановить порядок. Чтобы пересылать эту нумерацию вместе с данными, он обкладывает каждый кусочек информации своей обложкой - конвертом, который содержит соответствующую информацию. Это и есть TCP-конверт. Получившийся TCP-пакет помещается в отдельный IP-конверт и получается IP-пакет, с которым сеть уже умеет обращаться. Получатель (TCP-модуль (процесс)) по получении распаковывает IPконверты и видит TCP-конверты, распаковывает и их и помещает данные в последовательность частей в соответствующее место. Если чего-то не достает, он требует переслать этот кусочек снова. В конце концов информация собирается в нужном порядке и полностью восстанавливается. 154 Вот теперь этот массив пересылается выше к пользователю (на диск, на экран, на печать). В действительности, это слегка утрированный взгляд на TCP. В реальности пакеты не только теряются, но и могут искажаться при передаче из-за наличия помех на линиях связи. TCP решает и эту проблему. Для этого он пользуется системой кодов, исправляющих ошибки. Существует целая наука о таких кодировках. Простейшим примером такового служит код с добавлением к каждому пакету контрольной суммы (и к каждому байту бита проверки на четность). При помещении в TCP-конверт вычисляется контрольная сумма, которая записывается в TCP-заголовок. Если при приеме заново вычисленная сумма не совпадает с той, что указана на конверте, значит что-то тут не то, - где-то в пути имели место искажения, так что надо переслать этот пакет по-новой, что и делается. Рисунок: Иерархия протоколов семейства IP Для ясности и полноты картины, необходимо сделать здесь важное замечание: Модуль TCP разбивает поток байтов на пакеты, не сохраняя при этом границ между записями. Т.е., если один прикладной процесс делает 3 записи в -порт, то совсем не обязательно, что другой прикладной процесс на другом конце виртуального канала получит из своего -порта именно 3 записи, причем именно таких (по разбиению), что были переданы с другого конца. Вся информация будет получена исправно и с сохранением порядка передачи, но она может уже быть разбита по другому и на иное количество частей. Не существует зависимости между числом и размером записываемых сообщений с одной стороны и числом и размером считываемых сообщений с другой стороны. TCP требует, чтобы все отправленные данные были подтверждены принявшей их стороной. Он использует ожидания (таймауты) и повторные передачи для обеспечения надежной доставки. Отправителю разрешается передавать некоторое количество данных, не дожидаясь 155 подтверждения приема ранее отправленных данных. Таким образом, между отправленными и подтвержденными данными существует окно уже отправленных, но еще не подтвержденных данных. Количество байт, которое можно передавать без подтверждения, называется размером окна. Как правило, размер окна устанавливается в стартовых файлах сетевого программного обеспечения. Так как TCP-канал является, т.е. данные могут одновременно передаваться в обоих направлениях, то подтверждения для данных, идущих в одном направлении, могут передаваться вместе с данными, идущими в противоположном направлении. Приемники на обеих сторонах виртуального канала выполняют управление потоком передаваемых данных для того, чтобы не допускать переполнения буферов. Таким образом, протокол TCP обеспечивает гарантированную доставку с установлением логического соединения в виде байтовых потоков. Он освобождает прикладные процессы от необходимости использовать ожидания и повторные передачи для обеспечения надежности. Наиболее типичными прикладными процессами, использующими TCP, являются ftp и telnet. Кроме того, TCP использует система X-Windows (стандартный многооконный графический интерфейс с пользователем), ``r-команды''. Большие возможности TCP даются не бесплатно, реализация TCP требует большой производительности процессора и большой пропускной способности сети. Когда прикладной процесс начинает использовать TCP, то начинают общаться модуль TCP на машине пользователя и модуль на машине сервера. Эти два оконечных модуля TCP поддерживают информацию о состоянии соединения - виртуального канала. Этот виртуальный канал потребляет ресурсы обоих оконечных модулей TCP. Канал этот, как уже указывалось, является дуплексным. Один прикладной процесс пишет данные в TCP-порт, откуда они модулями соответствующих уровней по цепочке передаются по сети и выдаются в TCP-порт на другом конце канала, и другой прикладной процесс читает их отсюда - из своего TCP-порта. эмулирует (создает видимость) выделенную линию связи двух пользователей. Гарантирует неизменность передаваемой информации. Что входит на одном конце, выйдет с другого. Хотя в действительности никакая прямая линия отправителю и получателю в безраздельное владение не выделяется (другие пользователи могут пользовать те же узлы и каналы связи в сети в промежутках между пакетами этих), но извне это, практически, именно так и выглядит. Как бы хорошо это не звучало, но это не панацея. Как уже отмечалось, установка TCP-виртуального канала связи требует больших расходов на инициирование и поддержание соединения и приводит к задержкам передачи. Если вся эта суета - излишество, лучше обойтись без нее. Если все данные, предназначенные для пересылки, умещаются в одном пакете, и если вас не особенно заботит надежность доставки (? - читайте дальше, - поймете), то можно обойтись без TCP. 156 Имеется другой стандартный протокол транспортного уровня, который не отягощен такими накладными расходами. Этот протокол называется UDP - User Datagram Protocol - протокол пользовательских дейтаграмм. Он используется вместо TCP. Здесь данные помещаются не в TCP, а в UDPконверт, который также помещается в IP-конверт. Этот протокол реализует дейтаграммный способ передачи данных. Дейтаграмма - это пакет, передаваемый через сеть независимо от других пакетов без установления логического соединения и подтверждения приема. Дейтаграмма - совершенно самостоятельный пакет, поскольку сама содержит всю необходимую для ее передачи информацию. Ее передача происходит безо всякого предварения и подготовки. Дейтаграммы, сами по себе, не содержат средств обнаружения и исправления ошибок передачи, поэтому при передаче данных с их помощью следует принимать меры по обеспечению надежности пересылки информации. Методы организации надежности могут быть самыми разными, обычно же используется метод подтверждения приема посылкой эхо-отклика при получении каждого пакета с дейтаграммой. UDP проще TCP, поскольку он не заботится о возможной пропаже данных, пакетов, о сохранении правильного порядка данных и т.д. UDP используется для клиентов, которые посылают только короткие сообщения и могут просто заново послать сообщение, если отклик подтверждения не придет достаточно быстро. Предположим, что вы пишите программу, которая просматривает базу данных с телефонными номерами где-нибудь в другом месте сети. Совершенно незачем устанавливать TCP связь, чтобы передать 33 или около того символов в каждом направлении. Вы можете просто уложить имя в UDP-пакет, запаковать это в IP-пакет и послать. На другом конце прикладная программа получит пакет, прочитает имя, посмотрит телефонный номер, положит его в другой UDP-пакет и отправит обратно. Что произойдет, если пакет по пути потеряется? Ваша программа тогда должна действовать так: если она ждет ответа слишком долго и становится ясно, что пакет затерялся, она просто повторяет запрос, т.е. посылает еще раз то же послание. Так обеспечивается надежность передачи при использовании протокола UDP. В отличие от TCP, данные, отправляемые прикладным процессом через модуль UDP, достигают места назначения как единое целое. Например, если процесс-отправитель производит 3 записи в UDP-порт, то процессполучатель должен будет сделать 3 чтения. Размер каждого записанного сообщения будет совпадать с размером соответствующего прочитанного. Протокол UDP сохраняет границы сообщений, определяемые прикладным процессом. Он никогда не объединяет несколько сообщений в одно целое и не делит одно сообщение на части. Альтернатива TCP-UDP позволяет программисту гибко и рационально использовать предоставленные ресурсы, исходя из своих возможностей и 157 потребностей. Если нужна надежная доставка, то лучше может быть TCP. Если нужна доставка дейтаграмм, то - UDP. Если нужна эффективная доставка по длинному и ненадежному каналу передачи данных, то лучше использовать TCP. Если нужна эффективность на быстрых сетях с короткими соединениями, лучше всего будет UDP. Если потребности не попадают ни в одну из этих категорий, то выбор транспортного протокола не ясен. Прикладные программы, конечно, могут устранять некоторые недостатки выбранного протокола. Например, если вы выбрали UDP, а вам необходима надежность, то прикладная программа должна обеспечить надежность сама, как описано выше: требовать подтверждения, пересылки утерянных или увечных пакетов и т.д. Если вы выбрали TCP, а вам нужно передавать записи, то прикладная программа должна вставлять метки в поток байтов так, чтобы можно было различить записи. Примечание. Дадим краткие разъяснения к рисунку заинтересовавшимся. На этом рисунке представлены для примера следующие протоколы из великого семейства IP: FTP - протокол пересылки файлов. С помощью этого протокола организовывается пересылка файлов по сети. Технические подробности можно узнать из RFC-документации, а именно: RFC 114, 172, 265, 354, 542, 959; TELNET - протокол эмуляции терминала удаленной машины. С помощью этого протокола организовываются сеансы работы на удаленных машинах сети эмулируется терминал далекого компьютера. NIC просто изобилует информацией в виде RFC-документов по этому протоколу. Вот лишь некоторые из этих документов: RFC 854, 764, 818, 562, 513, 495, 393, 340, 318; SMTP - протокол пересылки простой почты - протокол, обеспечивающий работу e-mail. См. техническую документацию в RFC 788, 821, 822, 1123; TFTP - протокол простейшей (тривиальной) пересылки файлов. Осуществляет дейтаграммную пересылку файлов. Получается медленнее и дороже, чем по FTP. См. RFC 764, 768, 783; DNS - протокол доменной (региональной) системы имен - протокол запросов на преобразование имен из доменной формы в машинную - числовую. См. RFC 1101, 974, 883 и т.д. ; Служба времени - служба синхронизации разнесенных в сети часов. Это протокол сетевого времени - NTP. См. RFC 1129, 1119, 1059, 956-958 и т.д. ; Эхо 158 - протокол для обратной передачи передаваемых по сети символов, служит, например, для подтверждения. См. документы RFC 347, 361, 862; GGP - протокол ``шлюз - шлюз'' - протокол сквозных сетевых проводок. См. RFC 823; HMP - протокол мониторинга хоста - протокол непрерывного слежения (контроля) за хостом (сетевым рабочим компьютером). См. RFC 869; EGP - протокол внешнего шлюза. См. RFC 827, 888, 890, 904; ICMP - протокол межсетевых управляющих сообщений - сетевой протокол, предоставляющий процессам в сети возможность предпочтительного выбора в своем множестве маршрутов пересылки и других подобных вещей. См. документы RFC 777, 792. RFC - это документация представленная в виде файлов. Она включает описание различных стандартов, устройств, протоколов, предложения новых стандартов и т.д. RFC документы распространяются DDN NIC. Многие сетевые машины имеют у себя наборы RFC различной полноты и свежести. Существуют несколько ``официальных'' распространителей этой документации, у которых всегда имеются полные наборы RFC-документации самой последней редакции, получаемыми ими непосредственно от DDN NIC. Полный каталог RFC и сами документы можно получить по e-mail, обратившись по адресу servicenic.ddn.mil. Поле ``Subject:'' (``Тема:'')в вашем запросе должно содержать название желаемого документа или команду этого сервера. Само послание должно быть пустым. Например, для получения дополнительной информации пошлите письмо, указав ``Subject: help''; для получения полного каталога - ``Subject: index''; для получения, например, RFC 822 вы должны указать ``Subject: RFC 822'' . 159 Создание сети с человеческим лицом. Прикладное обеспечение И вот мы имеем возможность передавать информацию между различными точками в сети. Вот теперь мы можем начать работать над созданием дружественного интерфейса Internet, позаботиться об удобстве для пользователя. Для этого мы напишем программное обеспечение, которое будет понимать язык команд, выдавать сообщения об ошибках, подсказки, использовать для адресации сетевых компьютеров при общении с пользователем имена, а не числа и т.д. В модели ISO OSI на это работают уровни выше транспортного, т.е. сеансовый, представления данных и прикладной. Вся эта деятельность направлена на повышение уровня удобства работы в сети, на создание систем, позволяющих пользоваться предоставляемыми возможностями обычному пользователю сети. Ведь большинство пользователей совсем не волнует ни наличие надежного потока битов между машинами, ни пропускная способность этих линий или тонкости и особенности используемой технологии, ни даже экзотичность этой технологии. Они хотят использовать этот битовый поток для дела, как то: переслать файл, добраться до каких-то данных или просто поиграть в игру. Приложения - это части программного обеспечения. Их создают на основе сервиса TCP или UDP. Приложения позволяют пользователю достаточно просто справиться с возникшей задачей, не погружаясь в пучину технической информации о конкретной сети, о протоколах и т.д. Прикладное обеспечение разнится очень сильно. Приложения могут быть от самодельной программы до патентованных продуктов, поставляемых различными фирмами (DEC, Microsoft и т.п.). Существует три стандартных Internet -приложения: удаленный доступ, передача файлов, электронная почта (e-mail); наряду с ними используются другие широко распространенные нестандартные приложения. Предоставление услуг Internet построено по схеме ``клиент - сервер''. Предоставление услуг осуществляется совместной работой двух процессов: на компьютере пользователя и на компьютере-сервере. Процесс на компьютере пользователя называется клиентом, а на компьютере-сервере сервером. Клиент и сервер являются, по сути, частями одной программы, взаимодействующие по виртуальной связи в сети. Сервер по указаниям клиента выполняет соответствующие действия, например, пересылает клиенту файл. Для предоставления услуги совершенно необходимо наличие двух этих модулей - клиента и сервера, и их одновременная согласованная работа. Взаимодействие клиента и сервера описывается соответствующими стандартными протоколами, поэтому клиент и сервер могут быть выпущены совершенно разными производителями и работать на разнородных компьютерах. Поэтому же существует небольшая проблема нестандартности интерфейса клиента непосредственно уже с пользователем. Это взаимодействие может иметь совершенно различную форму: интерактивную, 160 командную и т.д. Системы команд могут различаться. Но от этого сами возможности не изменяются, поскольку клиент и сервер всегда взаимодействуют одинаково - согласно протоколу. Так как прикладным обеспечением снабжают по большей части через локальные сети, в разговоре о приложениях возникает вышеупомянутая проблема: команды, сообщения, справки, подсказки и т.п. в разных локальных сетях могут в той или иной степени отличаться. Об этом не следует забывать при чтении руководств пользователя: сообщения могут отличаться, но смысл их будет такой же, то же касается и команд. Даже если они слегка отличаются, не стоит волноваться, большинство приложений имеет разумную систему подсказок и описание набора команд, где вы детально и конкретно сможете разузнать все, что вам понадобится. 161 Системы сетевых адресов Региональная Система Имен Числовые адреса хороши для связи машин, люди же предпочитают имена. Очень непросто разговаривать, используя машинную адресацию (как бы это звучало: ``192.112.36.5 обещает вскоре...''?), еще труднее запомнить эти адреса. Поэтому компьютерам в Internet для удобства пользователей были присвоены собственные имена. Тогда описанный разговор принимает вид: ``NIC обещает вскоре...''. Все приложения Internet позволяют пользоваться системными именами вместо числовых адресов. Как мы уже упоминали, для понимания полезно использовать почтовую аналогию. Сетевые численные адреса вполне аналогичны почтовой индексации. Машины, сортирующие корреспонденцию на почтовых узлах, ориентируются именно по индексам, и только если с индексами выходит какая-то несуразность, передают почту на рассмотрение людям, которые по адресу могут определить правильный индекс почтового отделения места назначения. Людям же приятнее и удобнее иметь дело с географическими названиями - это аналоги доменных имен. Конечно, такое именование имеет свои собственные проблемы. Прежде всего, следует убедиться, что никакие два компьютера, включенные в сеть, не имеют одинаковых имен. Должно также обеспечить преобразование имен в числовые адреса, для того чтобы машины (и программы) могли понимать нас, пользующихся именами: техника по-прежнему общается на языке цифр. В начале Internet размерами напоминала курилку, и иметь дело с именами было довольно просто. NIC создал регистратуру. Можно было послать запрос и в ответ высылали список имен и адресов. Этот файл, называется ``host file'' (файл рабочих ЭВМ), регулярно распространялся по всей сети - рассылался всем машинам. Имена были простыми словами, все были единственными. Если вы использовали имя, ваш компьютер просматривал этот файл и подставлял вместо имени реальный числовой адрес. Так же, как работает телефонный аппарат со встроенным списком абонентов. Все было легко, просто и замечательно. Всем хватало простых имен, в курилке был один Джон, один Пит, один Патермуфий. Но по мере развития и расширения Internet возрастало количество пользователей, хостов, а потому увеличивался и упомянутый файл. Возникали значительные задержки при регистрации и получении имени новым компьютером, стало затруднительно изыскивать имена, которые еще никто не использовал, слишком много сетевого времени затрачивалось на рассылку этого огромного файла всем машинам, в нем упомянутым. Стало очевидно, - чтобы справиться с такими темпами изменений и роста сети, нужна распределенная оперативная система, опирающаяся на новый принцип. Таковая была создана, ее назвали ``доменной системой имен'' DNS, а способ адресации - способом адресации по доменному принципу. DNS иногда еще называют региональной системой наименований. 162 Структура региональной системы имен Доменная система имен - это метод назначения имен путем передачи сетевым группам ответственности за их подмножество имен. Каждый уровень этой системы называется доменом. Домены в именах отделяются друг от друга точками: inr.msk.su, nusun.jinr.dubna.su, arty.bashkiria.su, vxcern.cern.ch, nic.ddn.mil. В имени может быть различное количество доменов, но практически их не больше пяти. По мере движения по доменам слева направо в имени, количество имен, входящих в соответствующую группу возрастает. Первым в имени стоит название рабочей машины - реального компьютера с IP адресом. Это имя создано и поддерживается группой (например, компьютер nusun (это SUN sparc) в группе jinr (ОИЯИ)), к которой он относится. Группа входит в более крупное подразделение (например, городское объединение - сеть города Дубны), которое в свою очередь, является частью национальной сети (например, сети стран бывшего СССР, домен su). Для США наименование страны по традиции опускается, там самыми крупными объединениями являются сети образовательных (edu), коммерческих (com), государственных (gov), военных (mil) учреждений, а также сети других организаций (org) и сетевых ресурсов (net). Группа может создавать или изменять любые ей подлежащие имена. Если jinr решит поставить другой компьютер, например, VAX 11/780, и назвать его mainx, он ни у кого не должен спрашивать разрешения, все, что от него требуется, - это добавить новое имя в соответствующую часть соответствующей всемирной базы данных, и, рано или поздно, каждый, кому потребуется, узнает об этом имени. Аналогично, если в Дубне решат создать новую группу, например, schools, они (домен dubna) могут это сделать также, ни у кого на то не спрашивая никакого соизволения. И тогда, если каждая группа придерживается таких простых правил и всегда убеждается, что имена, которые она присваивает, единственны во множестве ее непосредственных подчиненных, то никакие две системы, где бы те ни были в сети Internet, не смогут заиметь одинаковых имен. Эта ситуация совершенно аналогична ситуации с присвоением географических названий - организацией почтовых адресов. Названия всех стран различаются. Различаются названия всех областей, республик в Федерации, и эти названия утверждаются в государственном масштабе из центра (конечно, обычно сами регионы заботятся об уникальности своих названий, поэтому здесь царит полная демократия: как республика хочет, так она и называется). В республиках - субъектах федерации - решают вопросы о названиях районов и округов, в пределах одной республики они различаются. Аналогично далее с городами и улицами городов. В разных городах могут быть улицы с одинаковыми названиями: почему бы не быть во всех городах Cоюза по улице Ленина или Мира? Это улицы разных городов, и их не перепутать (помня о городах! Не напоминайте ''С легким паром!''). В пределах же одного населенного пункта улицы всенепременно имеют разные названия, причем именование этих улиц целиком и полностью под 163 ответственностью и началом соответствующего центрального органа данного населенного пункта (мэрии, сельсовета, горсовета). Таким образом, почтовый адрес на основе географических и административных названий однозначно определяет точку назначения. Поскольку Internet - сеть мировая, требовался также способ передачи ответственности за имена внутри стран им самим. Сейчас принята двухбуквенная кодировка государств. Это оговорено в RFC 822. Так, например, домен Канада называется ca, бывший СССР - su, США - us и т.д. США также включили в эту систему структурирования для всеобщности и порядка. Всего же кодов стран почти 300, из которых около 100 имеет компьютерную сеть того или иного рода. Единый каталог Internet находится у SRI International (Менло-Парк, Калифорния, США) - государственной организации. Поиск адреса по доменному имени Теперь вы знаете, как соотносятся домены и создаются имена. Возможно, вы теперь озадачены: а как использовать эту замечательную систему? Автоматически. Вам надо лишь употребить имя на компьютере, который понимает, как обращаться с DNS. Вам никогда не придется самим разыскивать адрес, соответствующий этому имени, или подавать специальную команду для его поиска (в UNIX - команда nslookup). Вы, конечно, можете это проделать - для собственного удовольствия, но зачем, ведь этого совсем не требуется. Все компьютеры Internet способны пользоваться доменной системой. И работающий в сети компьютер всегда знает свой собственный сетевой адрес. Когда вы пользуетесь именем, например, mx.ihep.su, компьютер должен преобразовать его в адрес. Для этого он начинает запрашивать помощь у DNS-серверов. Это узлы, рабочие машины, обладающие соответствующей базой данных, в число обязанностей которых входит обслуживание такого рода запросов. DNS-сервер начинает обработку имени с правого его конца и двигается по нему влево, т.е. сначала производится поиск адреса в самой большой группе (домене), потом постепенно сужает поиск. Но для начала опрашивается на предмет наличия у него нужной информации местный узел. Здесь возможны три случая: - Местный сервер знает адрес, потому, что этот адрес содержится в его части всемирной базы данных. Например, если вы подсоединены к сети Института Физики Высоких Энергий (IHEP), то ваш местный сервер должен обладать информацией о всех компьютерах локальной сети этого института (mx, desert, ixwin и т.д.); - Местный сервер знает адрес, потому, что кто-то недавно уже запрашивал тот же адрес. Когда запрашивается адрес, сервер DNS придерживает его у себя в памяти некоторое время, как раз на случай, если кто-нибудь еще захочет попозже того же адреса - это повышает эффективность системы; - Местный сервер адрес не знает, но знает как его выяснить. 164 Как местный сервер может разузнать запрошенный адрес? В его прикладном или системном программном обеспечении имеется информация о том, как связаться с корневым сервером. Это сервер, который знает адреса серверов имен высшего уровня (самых правых в имени), здесь это уровень государств (ранга домена su). У него запрашивается адрес компьютера, ответственного за зону su. Местный DNS-сервер связывается с этим более общим сервером и запрашивает у него адрес сервера, ответственного за домен ihep.su. Теперь уже запрашивается этот сервер и у него запрашивается адрес рабочей машины mx. На самом деле, для повышения эффективности, поиск начинается не с самого верха, а с наименьшего домена, в который входите и вы, и компьютер, имя которого вы запросили. Например, если ваш компьютер имеет имя nonlin.mipt.su, то опрос начнется (если имя не выяснится сразу) не со всемирного сервера, чтобы узнать адрес сервера группы su, а сразу с группы su, что сразу сокращает поиск и по объему, и по времени. Этот поиск адреса совершенно аналогичен поиску пути письма без надписанного почтового индекса. Как определяется этот индекс? Все регионы пронумерованы - это первые цифры индекса. Письмо пересылается на центральный почтамт этого региона, где имеется справочник с нумерацией районов этого региона - это следующие цифры индекса. Теперь письмо идет на центральный почтамт соответствующего района, где уже знают все почтовые отделения в подопечном районе. Таким образом по географическому адресу определяется почтовый индекс, ему соответствующий. Также определяется и адрес компьютера в Internet, но путешествует не послание, а запрос вашего компьютера об этом адресе. И в отличие от случая с почтой, информация об адресе доходит до вас, как если бы районный почтамт места назначения отправлял вам письмо, любезно уведомляя вас на будущее об индексе, которого вы не изволили знать. Некоторые компьютеры (есть еще такие динозавры) все еще работают по старинке, т.е. используя host-файлы. Если вы вдруг очутитесь на одном из них, вам надо будет просить администратора, либо самому вручную разыскать нужный вам адрес, а администратор должен будет потом включить соответствующую запись в местный host-файл. Подскажите администратору, что уж давно пора бы установить программы для поддержки DNS, так чтобы более вам этим поиском заниматься не пришлось. Замечания по региональной системе имен Распространено несколько заблуждений, с которыми вы можете столкнуться, имея дело с именами. Приведем несколько верных утверждений в качестве опорных, чтобы вывести вас из заблуждений, или предостеречь от них: - Части доменного имени говорят о том, кто ответственен за поддержку этого имени, то есть в чьем подчинении-ведении оно находится. Они могут вообще ничего не сообщать о владельце компьютера, соответствующего этому IP-адресу, или даже (несмотря на коды стран), где же эта машина 165 находится. Вполне можно иметь в Антарктиде машину с именем inr.msk.su (ИЯИ РАН, г.Троицк под Москвой). Это совершенно ненормально, но никаким законам не противоречит. Вот реально существующий пример: в Институте Химической Физики (пос. Черноголовка Московской области) стоит машина с именем lle.icp.chg.free.net, относящимся к домену net, расположенному, по идее, в США. Примечание: Когда уже была готова WWW-версия этой книги, один из авторов (В.У.) сообщил мне: "В Черноголовке перетрясли имена, теперь такого имени уже нет. У них теперь домен ac.ru ." М.В. - Части доменного имени даже не всегда указывают локальную сеть, в которой расположен компьютер. Часто доменные имена и сети перекрываются, и жестких связей между ними нет: две машины одного домена могут не принадлежать одной сети. Например, системы mx.decnet.ihep.su и ms.decnet.ihep.su могут находиться в совершенно разных сетях. И еще раз: доменные имена указывают на ответственного за домен. - У машины может быть много имен. В частности, это верно для машин, предоставляющих какие-либо услуги, которые в будущем могут быть перемещены под опеку другой машины. Когда эти службы будут перемещены, то имя, под которым эта машина выступала в качестве такого сервера, будет передано новой машине-серверу вместе с услугами, - для внешних пользователей ничего не изменится. Т.е. они будут продолжать пользоваться этой службой, запрашивая ее по тому же имени, независимо от того, какой компьютер на самом деле занимается обслуживанием. Имена, по смыслу относящиеся к службе, называются ``каноническими именами'' или ``кименами'' (cnames). В Internet они встречаются довольно часто. - Для связи имена необязательны. Как-нибудь вам придет сообщение: ``адресат неизвестен'', что означает, что Internet не может преобразовать использованное вами имя в число, - имя более недееспособно в том виде, в котором его знает ваш компьютер. Однажды заполучив числовой эквивалент имени, ваша система перестает использовать для связи на машинном уровне доменную форму адреса. - Запоминать лучше имена, а не числовые адреса. Некоторым кажется, что система имен это ``еще одно звено в цепи, которое может выйти из строя''. Но адреса привязаны к конкретным точкам сети. Если компьютер, предоставляющий некие услуги, переносится из одного здания в другое, его сетевое расположение, а значит и адрес, скорее всего изменятся. Имя же менять не надо и не следует. Когда администратор присваивает новый адрес, ему нужно только обновить запись имени в базе данных так, чтобы имя указывало на новый адрес. Так как имя работает по-прежнему, вас совершенно не должно заботить то, что компьютер расположен уже в другом месте. 166 Региональная система имен, возможно, и выглядит сложно, но это одна из тех составляющих, делающих общение с сетью более простым и удобным. Несомненное преимущество доменной системы состоит в том, что она разбивает громадье Internet на набор вполне обозримых и управляемых частей. Хотя сеть включает миллионы компьютеров, все они поименованы, и именование это организовано в удобной рациональной форме, что упрощает работу. Система адресов X.400 X.400 - общий стандарт, разработанный ISO и CCITT, для управления сообщениями. Этот стандарт планируют принять многие сети. Некоторые уже используют его. Дополнительно к обычному тексту, сообщения X.400 могут содержать и другие форматы (факсы, записи звуков речи, музыки, различные изображения и т.д.). Адресация в пользовании также очень проста, слегка напоминает своей идеей DNS. Только здесь используются не названия групп, сетей, но более привычные в обиходе понятия: Код страны -тот же, что в RFC822; ADMD - Administration Management = домен административного управления . Определяет общественный носитель X.400.Владельцем ADMD обычно является компания по предоставлению услуг дальней связи или государственное учреждение связи. Для соединения ADMD друг с другом их владельцы заключают двусторонние соглашения, и, естественно, не все ADMD соединены между собой. Самые крупные владельцы ADMD: AT&T, MCI, Sprint PRMD -Private Management Domain = домен частного управления. Определяет используемый частный носитель X.400. Это может быть EUnet, BITN и т.д. или же частная организация; Организация - Указывает организацию получателя. Ею может быть, например, компания или учебное заведение ПГАТА, МФТИ Oxford, Cambridge, MIT и т.д.; Орг.единица - Определяет подразделение. Их может быть несколько. Например не просто physics, но lab_1 или lab_2; Фамилия - Никульников; Имя - Николай. Требуется, если фамилия достаточно распространЈнная. Можно преобразовать старый адрес в X.400 формат, но не всегда это будет просто. Тем не менее, вполне может статься, что вас осчастливят письмом в формате X.400 . Чтобы послать ответ отправителю, просто возьмите его адрес из поля ``From:''полученного письма. Соответствующий шлюз с этим разберется. К счастью имеется инструкция (RFC 987) по переводу адресов и текстовых сообщений X.400 в формат RFC 822, имеется соответствующее программное обеспечение. Но, увы, единой системы картографирования таких адресов не существует; разные почтовые станции работают с ними немножко по-разному, что может приводить к недоразумениям. Также не существует единого стандарта для записи X.400 адреса, поэтому пока 167 невозможно единообразно и ясно надписать таковой, например, на бизнескарте. 168 Лекция 9 “Тенденции и перспективы развития распределенных операционных сред. Программные средства человекомашинного интерфейса: мультимедиа и гипермедиа; аудио и сенсорное сопровождение”. Системы реального времени. Системы жесткого и мягкого реального времени. Понятия "реальное время", "работа в реальном масштабе времени", "операционные системы реального времени" известны всем, но толкуются они часто по-разному и спектр этих толкований очень широк. Количество иллюзий и мифов в мире реального времени велико. Например, часто путают такие понятие, как "реальное время" и "скорость". Иногда полагают, что применение операционной системы реального времени автоматически разрешит все проблемы создания надежной предсказуемой системы. Иногда, наоборот, считают, что системы реального времени - занятие для теоретиков, а любую задачу реального времени можно решить, используя популярные операционные системы общего назначения - достаточно быть просто хорошим программистом и знать архитектуру компьютера. Так ли это? Чем принципиально отличаются операционные системы реального времени от операционных систем общего назначения? ОС общего назначения, особенно многопользовательские, такие как UNIX, ориентированы на оптимальное распределение ресурсов компьютера между пользователями и задачами (системы разделения времени), В операционных системах реального времени подобная задача отходит на второй план - все отступает перед главной задачей - успеть среагировать на события, происходящие на объекте. Другое отличие - применение операционной системы реального времени всегда связано с аппаратурой, с объектом, с событиями, происходящими на объекте. Система реального времени, как аппаратно-программный комплекс, включает в себя датчики, регистрирующие события на объекте, модули ввода-вывода, преобразующие показния датчиков в цифровой вид, пригодный для обработки этих показаний на компьютере, и, наконец, компьютер с программой, реагирующей на события, происходящие на объекте. Операционная система реального времени ориентирована на обрабоку внешних событий. Именно это приводит к коренным отличиям (по сравению с ОС общего назначения) в структуре системы, в функциях ядра, в построении системы ввода-вывода. Операционная система реального времени может быть похожа по пользовательскому интерфейсу на ОС общего назначения (к этому, кстати, стремятся почти все производители операционных системах реального времени), однако устроена она совершенно иначе - об этом речь впереди. 169 Кроме того, применение операционных системах реального времени всегда конкретно. Если ОС общего назначения обычно воспринимается пользователями (не разработчиками) как уже готовый набор приложений, то операционная система реального времени служит только иструментом для создания конкретного аппаратно-программного комплекса реального времени. И поэтому наиболее широкий класс пользователей операционных системах реального времени - разработчики комплексов реального времени, люди проектирующие системы управления и сбора данных. Проектируя и разрабатывая конкретную систему реального времени, программист всегда знает, точно, какие события могут произойти на объекте, знает критические сроки обслуживания каждого из этих событий. Назовем системой реального времени (в дальнейшем СРВ) аппаратнопрограммный комплекс, реагирующий в предсказуемые времена на непредсказуемый поток внешних событий. Это определение означает, что: Система должна успеть отреагировать на событиe, произошедшее на объекте, в течение времени, критического для этого события (meet deadline). Величина критического времени для каждого события определяется объектом и самим событием, и, естественно, может быть разной, но время реакции системы должно быть предсказано (вычислено) при создании системы. Отсутствие реакции в предсказанное время считается ошибкой для систем реального времени. Система должна успевать реагировать на одновременно происходящие события. Даже если два или больше внешних событий происходят одновременно, система должна успеть среагировать на каждое из них в течение интервалов времени, критического для этих событий. Различают системы реального времени двух типов - системы жесткого реального времени и системы мягкого реального времени. Системы жесткого реального времении не допускают никаких задержек реакции системы ни при каких условиях, так как: результаты могут оказаться, бесполезны в случае опоздания, может произойти катастрофа в случае задержки реакции, стоимость опоздания может оказаться бесконечно велика. Примеры систем жесткого реального времени - бортовые системы управления, системы аварийной защиты, регистраторы аварийных событий. Системы мягкого реального времени характеризуются тем, что задержка реакции не критична, хотя и может привести к увеличинию стоимости результатов и снижению производительности системы в целом. Пример - работа сети. Если система не успела обработать очередной принятый пакет, это приведет к таймауту на передающей стороне и 170 повторной посылке (в зависимости от протокола, конечно). Данные при этом не теряются, но производительость сети снижается. Основное отличие между системами жесткого и мягкого реального времени можно выразить так: система жесткого реального времени никогда не опоздает с реакцией на событие, система мягкого реального времени - не должна опаздывать с реакцией на событие. Назовем операционной системой реального времени такую систему, которая может быть использована для построения систем жесткого реального времени. Это определение выражает отношение к операционным системам реального времени как к объекту, содержащему необходимые инструменты, но также означает, что этими инструментами еще необходимо правильно воспользоваться. Свойства операционных систем реального времени Параметры операционных системах реального времени. Выбирая ОС общего назначения, вы обращаете внимание на ее распространенность, на удобство и комфортабельность систем разработки, на инструментарий системы: сети, базы данных, офисные пакеты и пр. А вот что важно для операционных систем реального времени? Какова структура этих продуктов? Системы исполнения и системы разработки операционных системах реального времени Одно из коренных внешних отличий систем реального времени от систем общего назначения - четкое разграничение систем разработки и систем исполнения (РИС. 1). Система исполнения операционных системах реального времени - набор инструментов (ядро, драйверы, исполняемые модули), обеспечивающих функционирование приложения реального времени. Большинство современных ведущих операционных систем реального времени поддерживают целый спектр аппаратных архитектур, на которых работают системы исполнения (Intel, Motorola, RISC,MIPS, PowerPC, и другие). Это объясняется тем, что набор аппаратных средств - часть комплекса реального времени и аппаратура должна быть также адекватна решаемой задаче, поэтому ведущие операционные системы реального времени перекрывают целый ряд наиболее популярных архитектур, чтобы удовлетворить самым разным требованиям по части аппаратуры. Система исполнения операционных системах реального времени и компьютер, на котором она исполняется, называют "целевой" (target) системой. Система разработки - набор средств, обеспечивающих создание и отладку приложения реального времени. Системы разработки (компиляторы, отладчики и всевозможные tools) работают, как правило, в популярных и распространенных ОС, таких, как UNIX и Windows. Кроме того, многие операционные системы реального времени имеют и так называемые резидентные средства разработки, исполняющиеся в среде самой операционной системы реального времени 171 особенно это относится к операционным системам реального времени класса "ядра" (см. ниже). Заметим, что функционально средства разработки операционных систем реального времени отличаются от привычных систем разработки, таких, например, как Developers Studio, TaskBuilder, так как часто они содержат средства удаленной отладки, средства профилирования (измерение времен выполнения отдельных участков кода), средства эмуляции целевого процессора, специальные средства отладки взаимодействующих задач, а иногда и средства моделирования. Время реакции системы Почти все производители систем реального времени приводят такой параметр, как время реакции системы на прерывание (interrupt latency). В самом деле, если главным для системы реального времени является ее способнось вовремя отреагировать на внешние события, то такой параметр, как время реакции системы является ключевым. Однако, что это за время и как к нему относиться? Предостерегу сразу читателя - увидев в рекламном проспекте на какуюнибудь операционную систему реального времени этот параметр без дополнительных пояснений - просто не обращайте на него внимания. В настоящий момент нет, к сожалению, общепринятых методологий измерения этого параметра, поэтому он является полем битвы маркетинговых служб производителей систем реального времени. Есть надежда, что в скором времени положение изменится, так как уже стартовал проект сравнения операционных системах реального времени, который включает в себя в том числе и разработку методологии тестирования. Как быть в этой ситуации? Поймем, какие времена мы должны знать для того, чтобы предсказать время реакции системы. События, происходящие на объекте, регистрируются датчиками, данные с датчиков передаются в модули ввода-вывода (интерфейсы) системы. Модули ввода-вывода, получив информацию от датчиков и преобразовав ее, генерируют запрос на прерывание в управляющем компьютере, подавая ему тем самым сигнал о том, что на объекте произошло событие. Получив сигнал от модуля ввода-вывода, система должна запустить программу обработки этого события. Интервал времени - от события на объекте и до выполнения первой инструкции в программе обработки этого события и является временем реакции системы на события, и, проектируя систему реального времени, разработчики должны уметь вычислять этот интервал. Из чего это складывается? Время выполнения цепочки действий - от события на объекте до генерации прерывания - никак не зависит от операционных систем реального времени и целиком определяется аппаратурой, а вот интервал времени - от 172 возникновения запроса на прерывание и до выполнения первой инструкции обработчика определяется целиком свойствами операционной системы и архитектурой компьютера. Причем это время нужно уметь оценивать в худшей для системы ситуации, то есть в предположении, что процессор загружен, что в это время могут происходить другие прерывания, что система может выполнять какие-то действия, блокирующие прерывания. Неплохим основанием для оценки времен реакции системы могут служить результаты тестирования с подробным описанием архитектуры целевой системы, в которой проводились измерения, средств измерения и точным указанием, какие промежутки времени измерялись. Некоторые производители операционных систем реального времени результаты такого тестирования предоставляют. Их не увидишь в рекламных проспектах, но можно отыскать на WEB-страницах, в документах технической поддержки, в публикациях фирм, проводящих независимое тестирование. Время реакции на прерывание, характерное для некоторых операционных систем реального времени, представлено на рис. 1 Время переключения контекста В операционные системы реального времени заложен параллелизм, возможность одновременной обработки нескольких событий, поэтому все операционные системы реального времени являются многозадачными (многопроцессными, многонитиевыми). Для того, чтобы уметь оценивать накладные расходы системы при обработке параллельных событий, необходимо знать время, которое система затрачивает на передачу управления от процесса к процессу (от задачи к задаче, от нити к нити), то есть время переключения контекста (Рис.2). 173 Размеры системы Для систем реального времени важным параметром является размер системы исполнения, а именно суммарный размер минимально необходимого для работы приложения системного набора (ядро, системные модули, драйверы и т. д.). Хотя, надо признать, что с течением времени значение этого параметра уменьшается, тем не менее, он остается важным и производители систем реального времени стремятся к тому, чтобы размеры ядра и обслуживающих модулей системы были невелики. Примеры: размер ядра операционной системы реального времени OS-9 на микропроцессорах МС68xxx - 22 KB, VxWorks - 16 KB. Возможность исполнения системы из ПЗУ (ROM) Это свойство операционных систем реального времени - одно из базовых. Оно позволяет создавать компактные встроенные СРВ повышенной надёжности, с ограниченным энергопотреблением, без внешних накопителей. 174 Важным параметром при оценке операционных систем реального времени является набор инструментов, механизмов реального времени, предоставяемых системой. Об этом - следующая глава. Механизмы реального времени Процесс проектирования конкретной системы реального времени начинается с тщательного изучения объекта. Разработчики проекта исследуют объект, изучают возможные события на нем, определяют критические сроки реакции системы на каждое событие и разрабатывают алгоритмы обработки этих событий. Затем следует процесс проектирования и разработки программных приложений. Мечтой каждого разработчика является идеальная операционная система реального времени, в которой приложения реального времени разрабатываются на языке событий объекта. Такая система имеет свое название, хотя и существует только в теории. Называется она: "система, управляемая критическими сроками". Разработка приложений реального времени в этой системе сводится к описанию возможных событий на объекте. В каждом описателе события указыватся два параметра: временной интервал - критическое время обслуживания данного события и адрес подпрограммы его обработки. Всю дальнейшую заботу о том, чтобы подпрограмма обработки события стартовала до истечения критического интервала времени берет на себя операционная система. Но это - мечта. В реальности же разработчик должен перевести язык событий объекта в сценарий многозадачной работы приложений операционных систем реального времени, стараясь оптимательно использовать предоставленные ему специальные механизмы и оценить времена реакций системы на внешние события при этом сценарии. Какие же механизмы в операционных системах реального времени делают систему реального времени (СРВ) предсказуемой? Система приоритетов и алгоритмы диспетчеризации Базовыми инструментами разработки сценария работы системы являются система приоритетов процессов (задач) и алгоритмы планирования (диспетчеризации) операционных системах реального времени. В многозадачных ОС общего назначения используются, как правило, различные модификции алгоритма круговой диспетчеризации, основанные на понятии непрерывного кванта времени ("time slice"), предоставляемого процессу для работы. Планировщик по истечении каждого кванта времени просматривает очередь активных процессов и принимает решение, кому передать управление, основываясь на приоритетах процессов (численных значениях, им присвоенных). Приоритеты могут быть фиксированными или меняться со временем - это зависит от алгоритмов планирования в данной ОС, но рано или поздно процессорное время получат все процессы в системе. Алгоритмы круговой диспетчеризации неприменимы в чистом виде в операционных системах реального времени. Основной недостаток непрерывный квант времени, в течение которого процессором владеет только 175 один процесс. Планировщики же операционных систем реального времени имеют возможность сменить процесс до истечения "time slice", если в этом возникла необходимость. Один из возможных алгоритмов планирования при этом "приоритетный с вытеснением". Мир операционных систем реального времени отличается богатством различных алгоритмов планирования: динамические, приоритетные, монотонные, адаптивные и пр., цель же всегда преследуется одна - предоставить инструмент, позволяющий в нужный момент времени исполнять именно тот процесс, который необходим. Механизмы межзадачного взаимодействия Другой набор механизмов реального времени относится к средствам синхронизации процессов и передачи данных между ними. Для операционных систем реального времени характерна развитость этих механизмов. К таким механизмам относятся: семафоры, мьютексы, события, сигналы, средства для работы с разделяемой памятью, каналы данных (pipes), очереди сообщений. Многие из подобных механизмов используются и в ОС общего назначения, но их реализация в операционных системах реального времени имеет свои особенности - время исполнения системных вызовов почти не зависит от состояния системы, и в каждой операционной системе реального времени есть, по крайней мере, один быстрый механизм передачи данных от процесса к процессу. Средства для работы с таймерами Такие инструменты, как средства работы с таймерами, необходимы для систем с жестким временным регламентом, поэтому развитость средств работы с таймерами - необходимый атрибут операционных систем реального времени. Эти средства, как правило, позволяют: измерять и задавать различные промежутки времени (от 1 мкс и выше), генерировать прерывания по истечении временных интервалов, создавать разовые и циклические будильники Здесь описаны только базовые, обязательные механизмы, использующиеся в ОСРВ. Кроме того, почти в каждой операционной системе реального времени вы найдете целый набор дополнительных, специфических только для нее механизмов, касающийся системы ввода-вывода, управления прерываниями, работы с памятью. Каждая система содержит также ряд средств, обеспечивающих ее надежность: встроенные механизмы контроля целостности кодов, инструменты для работы с Watch-Dog таймерами. Классы систем реального времени Количество операционных систем реального времени, несмотря на их специфику, очень велико. В последнем обзоре "Real-Time Magazine" (NN 23,97) было упомянуто около шестидесяти систем. Наверное, этих систем еще больше, если иметь в виду некоммерческие операционные системы реального времени. Однако сама специфика применения операционных систем реального времени требует гарантий надежности, причем гарантий в том числе и юридических - этим, видимо, можно объяснить тот факт, что 176 среди некоммерческих систем реального времени нет сколько-нибудь популярных. Среди коммерческих систем реального времени можно выделить группу ведущих систем - по объемам продаж и по популярности. Эти системы: VxWorks, OS9, pSOS, LynxOS, QNX, VRTX. Исполнительные системы реального времени Признаки систем этого типа - различные платформы для систем разработки и исполнения. Приложение реального времени разрабатывается на host- компьютере (компьютере системы разработки), затем компонуется с ядром и загружается в целевую систему для исполнения. Как правило, приложение реального времени - это одна задача и параллелизм здесь достигается с помощью нитей (threads). Системы этого типа обладают рядом достоинств, среди которых главное - скорость и реактивность системы. Главная причина высокой реактивности систем этого типа - наличие только нитей (потоков) и, следовательно, маленькое время переключения контекста между ними ( в отличие от процессов). С этим главным достоинством связан и ряд недостатков: зависание всей системы при зависании нити, проблемы с динамической подгрузкой новых приложений. Кроме того, системы разработки для продуктов этого класса традиционно дороги (порядка $20000). Хотя, надо отметить, что качество и функциональность систем разработки в этом классе традиционно хороши, так как они были изначально кроссовыми. Наиболее ярким представителем систем этого класса является операционная система VxWorks. Область применения - компактные системы реального времени с хорошими временами реакций. Ядра реального времени В этот класс входят системы с монолитным ядром, где и содержится реализация всех механизмов реального времени этих операционных систем. Исторически системы этого типа были хорошо спроектированы. В отличие от систем других классов, которые появлялись как временные компромиссы и затем "наращивали мускулы" благодаря первым удачным реализациям (исполнительные системы реального времени и UNIX'ы реального времени), разработчики систем этого класса имели время для разработки систем именно реального времени и не были изначально ограничены в выборе средств (например, фирма "Microware" имела в своем распоряжениии три года для разработки первого варианта OS-9). Системы этого класса, как правило, модульны, хорошо структурированы, имеют наиболее развитый набор специфических механизмов реального времени, компактны и предсказуемы. Наиболее популярные системы этого класса: OS9, QNX. 177 Одна из особенностей систем этого класса - высокая степень масштабируемости. На базе этих ОС можно построить как компкактные системы реального времени, так и большие системы серверного класса. Как правило, ядра реального времени имеют два типа систем разработки - кроссовую и резидентную. UNIX'ы реального времени Исторически системы реального времени создавались в эпоху расцвета и бума UNIX'а и поэтому многие из них содержат те или иные заимствования из этой красивой концепции операционный системы (пользовательский интерфейс, концепция процессов и т.д.). Часть разработчиков операционных систем реального времени попыталась просто переписать ядро UNIX, сохранив при этом интерфейс пользовательских процессов с системой, насколько это было возможно. Реализация этой идеи не была слишком сложной, поскольку не было препятствия в доступе к исходным текстам ядра, а результат оказался замечательным. Получили и реальное время, и сразу весь набор пользовательских приложений - компиляторы, пакеты, различные инструментальные системы. В этом смысле создателям систем первых двух классов пришлось потрудиться не только при создании ядра реального времени, но и продвинутых систем разработки. Однако Unix'ы реального времени не избавлены от следующих недостатков: системы реального времени получаются достаточно большими и реактивность их ниже, чем реактивность систем первых двух классов. Наиболее популярным представителем систем этого класса является операционная система реального времени Lynx OS. Расширения реального времени для WindowsNT В последние два года сразу несколько фирм объявили о создании расширений реального времени для Windows NT. Этот означает, что подобные продукты были востребованы, что и подтверждает динамика их рыночного развития. В самом деле, появление в свое время UNIX'ов реального времени означало ни что иное, как попытку применить господствующую программную технологию для создания приложений реального времени. Появление расширений реального времени для Windows NT имеет те же корни, ту же мотивацию. Огромный набор прикладных программ под Windows, мощный программный интерфейс WIN32, большое количество специалистов, знающих эту систему. Конечно, соблазнительно получить в системе реального времени все эти возможности. Так как эти продукты - новые и вызывают много вопросов, остановимся на них чуть подробнее. Подробнее о расширениях реального времени для Windows NT Несмотря на то, что Windows NT создавалась как сетевая операционная система, и сочетание слов "Windows NT" и "реальное время" многими воспринимается как нонсенс, в нее при создании были заложены элементы 178 реального времени, а именно - двухуровневая система обработки прерываний (ISR и DPC), классы реального времени (процессы с приоритетами 16-32 планируются в соответствии с правилами реального времени). Может быть причина появления этих элементов кроется в том, что у разработчиков Windows NT за плечами есть опыт создания классической для своего времени операционной системы реального времени RSX11М (для компьютеров фирмы DEC). Конечно, даже поверхностный анализ Windows NT показывает, что эта система не годится для построения систем жесткого рального времени (система непредсказуема - время выполнения системных вызовов и время реакции на прерывания сильно зависит от загрузки системы; система велика; нет механизмов защиты от зависаний и пр. и пр.). Поэтому даже в системах мягкого реального времени Windows NT может быть использована только при выполнении целого ряда рекомендаций и ограничений. Разработчики расширений пошли двумя путями: Использовали ядра классических операционных систем реального времени в качестве дополнения к ядру Windows NT ("два в одном флаконе"). Таковы решения фирм "LP Eleknroniks" и "Radisys". В первом случае параллельно с Windows NT (на одном компьютере!) работает операционная система VxWorks, во-втором случае - InTime. Кроме того, предоставляется набор функций для связи приложений реального времени и приложений Windows NT. Вот как, например это выглядит у LP Elektroniks: вначале стандартным образом загружается Windows NT, затем с помощью специального загрузчика загружается операционная система VxWorks, распределяя под себя необходимую память Windows (что в дальнейшем позволяет избежать конфликтов памяти между двумя ОС). После этого полной "хозяйкой" на компьютере уже становится VxWorks, отдавая процессор ядру Windows NT только в случаях, когда в нем нет надобности для приложений VxWorks. В качестве канала для синхронизации и обмена данными между Windows NT и VxWorks служат псевдодрайверы TCP/IP в обоих системах. Технология использования двух систем на одном компьютере понятна - работу с объектом выполняет приложение реального времени, передавая затем результаты приложениям Windows NT для обработки, передачи в сеть, архивирования и пр. Вариант расширений реального времени фирмы VenturCom выглядит иначе: здесь сделана попытка "интегрировать" реальное время в Windows NT путем исследования причин задержек и зависаний и устранения этих причин с помощью подсистемы реального времени. Решения фирмы "VenturCom" (RTX 4.2) базируются на модификациях уровня аппаратных абстракций Windows NT (HAL - Hardware Abstraction Layer) - программного слоя, через который драйверы взаимодействуют с аппаратурой. Модифицированый HAL и дополнтельные функции (RTAPI) отвечают также за стабильность и надежность системы, обеспечивая отслеживание краха Windows NT, зависания приложений или блокировку прерываний. В состав RTX входит 179 также подсистема реального времени RTSS, с помощью которой Windows NT расширяется дополнительным набором объектов (аналогичным стандартным, но с атрибутами реального времени). Среди новых объектов - нити (потоки,процессы) реального времени, которые управляются специальным планировщиком реального времени (256 фиксированных приоритетов, алгоритм - приоритетный с вытеснением). Побочным результатом RTX является возможность простого создания програм управления устройствами, т.к. среди функций RTAPI есть и функции работы с портами ввода-вывода и физической памятью. Предложения VenturCom характерны еще и тем, что они предоставляют совершенно экзотическую для NT возможность, а именно - возможность конфигурирования Windows NT и создания встроенных конфигураций (без дисков, клавиатурны и монитора) (Интегратор Компонентов - CI). Несмотря на всю неоднозначность (а точнее - однозначность!) отношения традиционных пользователей систем реального времени ко всему, что связано с "Microsoft", необходимо констатировать факт: появился новый класс операционных систем реального времени - а именно расширения реального времени для Windows NT. Результаты независимых тестирований этих продуктов показывают, что они могут быть использованы для построения систем жесткого реального времени. Область применения расширений реального времени - большие системы реального времени, где требуется визуализация, работа с базами данных, доступ в интернет и пр. Тенденции развития операционных систем реального времени После того, как мы попытались навести порядок в мире операционных систем реального времени, предложив классификацию систем, придется этот порядок разрушить, рассказывая о том, как развивается мир систем реального времени. Один из видимых процессов - сближение операционных систем реального времени различных классов. Так во многих операционных систем реального времени класса "ядра реального времени" и "UNIX'ы реального времени появились в последнее время кроссовые системы разработки высокого качества, что раньше было характерно для операционных систем реального времени класса "Исполнительные системы реального времени". И это - общая тенденция. Резидентные средства разработки для операционных систем реального времени, поддерживающих многие целевые архитектуры, уже выглядят архаизмом. Так, например, мощные кроссовые системы разработки появились в таких операционных системах реального времени, как OS9 ("ядра реального времени" ) и "Lynx OS"(UNIX'ы реального времени). Что касается систем исполнения операционных систем реального времени, здесь наблюдается такая же картина: в системах класса "UNIX РВ" и "ядра РВ" появляются новые компактные варианты систем исполнения с маленьким временем переключения контекста (качество систем класса 180 "исполнительные операционные системы реального времени"). Примеры: OS9, QNX, LynxOS. Еще одна тенденция, которую нельзя не заметить - это появление таких продуктов как Real-Time JAVA и Embedded JAVA во многих ОСРВ. Сейчас JAVA - один из обязательных атрибутов систем реального времени. Отмечу также интересную тенденцию, возникшую в последнее время, и связанную с тем, что в ряде операционных систем реального времени (QNX, LynxOS) появились дополнительные библиотеки, реализующие подмножества программного интерфейса WIN32. Аналогичные процессы происходили в недавнее время со стандартом POSIX 1003.1 (базовый программный интерфейс UNIX'а). В итоге многие операционных систем реального времени стали POSIX-совместимыми. Видимо в недалеком будущем многие операционные системы реального времени станут еще и WIN32-совместимыми. Говоря о тенденциях развития операционных систем реального времени, нельзя обойти вниманием вопрос, о котором сейчас много говорят и пишут а именно вопрос об операционной системе Windows MOBILE, о позиционировании этой системы по отношению к операционным системам реального времени. Версии Windows CE, MOBILE появившиеся к настоящему моменту, никак не назовешь системами реального времени. Эти продукты говорят скорее о поисках, в которых находятся специалисты "Microsoft", чем о какойто магистральной линии развития. Несомненно одно: "Microsoft" открыл проект "CE" c целью выйти на рынок встроенных применений и, наверное, достигнет многого на этом рынке. Однако, встроенные системы и системы реального времени - не одно и то же. Различные интеллектуальные калькуляторы, электронные записные книжки, переводчики, органайзеры, и пр. и пр. представляют из себя огромный рынок сбыта - именно там лежит область интересов "Microsoft" и требования именно этого рынка будут определять технические решения в области СЕ, а никак не требования жесткого реального времени. Создать же универсальную систему, удовлетворяющую противоречивым требованиям невозможно. Маловероятно поэтому, что Windows CE, MOBILE составит серьезную конкуренцию системам, о которых говорилось в этой статье. Мобильные операционные системы. Мы являемся свидетелями технологической гонки среди мобильных устройств. Для того, чтобы убедить пользователя сменить свою модель на более новую, производители аппаратов оснащают последние модели всё более и более продвинутыми средствами (например: фотокамерой, mp3плеером, Bluetooth, Wi-Fi и.т.д) и такие телефоны уже вполне по функциональности могут конкурировать с карманными компьютерами. При таком большом разнообразии возможностей, сразу возникает вопрос о том, как это всё будет функционировать, а если быть точнее, с помощью какого программного обеспечения. Ведь всем известно, что 181 обычный мобильный телефон имеет прошивку и добавить в неё, что- либо, практически невозможно (исключение составляют лишь телефоны с поддержкой JAVA). Здесь то, как раз и проявляется надобность в операционной системе для мобильного телефона. Причём система эта должна быть абсолютно надёжной, так как переустанавливать её при сбое просто не будет возможности. А если есть спрос, то соответственно появляется и предложение, и в качестве такого предложения на рынке присутствуют такие операционные системы как Symbian OS, Palm OS Cobalt, Windows Mobile 2003 и другие. Что же представляет собой операционная система Symbian OS? Она как раз и является той самой многофункциональной «осью» и при этом достаточна, стабильна в работе. Не зря именно на Symbian основана целая линейка смартфонов Nokia серий 60 и 90. Что же в этой Symbian такого? Можно сказать что Symbian по сути является аналогом Windows для мобильных телефонов. Конечно, на рынке уже присутствуют устройства, использующие собственно Windows Mobile 2003, но по размерам они явно превосходят обычные мобильные телефоны, да к тому же имеют крайне высокую стоимость. Из достоинств Symbian стоит отметить и то, что данная операционная система практически не «кушает» память телефона, а значит, позволяет поставить больше программ на тот же объём памяти. На данный момент широко используется Symbian OS 6, хотя на рынке уже присутствуют аппараты, имеющие более новую версию, это Nokia 6600 и SonyEricsson P900 (но последний это уже скорее коммуникатор, так как имеет перьевой ввод). Спецификации Symbian OS 6: полная интеграция информационных ресурсов — персональных данных, обработки сообщений, средств просмотра и обслуживания беспроводной связи; обмен сообщениями электронной почты с использованием POP3, IMAP4, SMTP, MHTML; стандартные вложения, включая текстовые документы Word; факс; текстовый обмен сообщениями; коммуникационные протоколы TCP/IP, WAP, GSM, Bluetooth, IrDA (инфракрасный порт), последовательный порт; средства защиты — шифрование с ключом повышенной криптозащиты и средства проверки сертификата, использование протоколов безопасных соединений, выполнение инсталляций программ с подтверждением сертификата; богатый ассортимент прикладных программ, в том числе адресная книга, календарь, средства обработки сообщений, браузер, голосовая почта, офисные программы, утилиты и системные средства; объектный обмен — использование OBEX для работы с бизнескартами; мультимедийный сервер с поддержкой нескольких типов аудио и видеоконтента; 182 поддержка региональных настроек: использование Unicode, гибкие средства для текстового ввода, распознавание рукописного ввода; дополнительные функции настройки шрифтов и форматирования текста; поддержка четырех типов платформ для разработки программных средств и контента (C++, Java, WAP и Web); синхронизация данных с РС. Вообще различия между старой и новой версией Symbian не велики, тем более что если использовать стороннее программное обеспечение, то и старую версию можно сделать функциональнее и удобнее новой. К слову, все программы написанные под Symbian обратно совместимы со всеми версиями. Поэтому не будет проблем с поиском нужных программ для телефона. Можно найти абсолютно всё, начиная от простейшего блокнота и заканчивая браузером OPERA. Архитектура Symbian OS 6 позволяет обрабатывать пользовательские данные даже при отсутствии надежной связи и нехватке ресурсов (память и мощность), обеспечивает мгновенный доступ к данным, поддерживает промышленные стандарты и может быть легко адаптирована производителями мобильных телефонов к специфическим моделям. Она является открытой, имеет интегрированные беспроводные протоколы и обеспечивает поддержку дополнительного оборудования — фотокамер, FMприемников и пр. Всё программное обеспечение для Symbian поставляется в виде установочных пакетов с расширением *.sis. Чтобы установить какую либо программу в телефон достаточно всего лишь воспользоваться утилитой Symbian Connect, которая устанавливается на персональный компьютер и посредством протокола Bluetooth или инфракрасного порта обеспечивает связь с телефоном и даёт возможность устанавливать всевозможное программное обеспечение для вашего телефона. Но, естественно, не у всех пользователей есть возможность регулярно обновлять программы на своём телефоне, поэтому Symbian OS имеет набор изначально установленного софта, который намертво «вшит» в память телефона. Меню: Меню в Symbian построено по принципу папок, причем конкретное представление элементов можно выбрать как в виде иконок, так и в виде списка. В основном меню таких папок несколько, но их вид и название зависит от версии установленной операционной системы. Каждая папка имеет своё название и в ней содержаться программы соответствующие этому названию. Стандартными для всех версий операционной системы являются папки Сообщения (Messaging), Контакты (Contacts), Журнал (Log), Средства (Tools), Галерея (Рисунки), Мультимедиа (может называться по183 разному), Камера (Camera), Настройки (Settings), Календарь (Органайзер) и Дополнительные функции (Extras). 1. Сообщения. Помимо стандартных коротких сообщений (SMS), можно создать MMS, а также отправить/принять почту (POP3/IMAP4/SMTP/ MIME2). Для любых сообщений можно создать шаблоны. В версии 7.0 10 шаблонов для SMS уже предусмотрено. В стандартное короткое сообщение можно добавить графический рисунок. 2. Контакты. Телефонная книга позволяет заносить практически любое количество записей, единственным ограничителем является общий объем памяти. Для одного имени можно записать Имя и Фамилию (две строки), Название компании, Должность, Номер телефона, Мобильный, Факс и Адрес электронной почты, идентификатор IM-клиента — всего 9 полей. При недостатке стандартных полей из меню можно добавить неограниченное число дополнительных полей (в том числе поля адреса, электронного адреса страницы и т.п.). Для каждого имени можно написать большую текстовую заметку, а также установить фотографию, которая будет отображаться на экране при входящем звонке. Любое из полей можно переименовать. Для 20 имен в телефонной книге можно назначить голосовые метки. Поиск имени в телефонной книге не ограничен одной буквой. В общем списке при выборе записи показывается иконка соотнесенной с ней фотографии. 3. Журнал. Эта папка открывает доступ к спискам пропущенных, отправленных и принятых вызовов. Присутствует возможность самостоятельно устанавливать временной промежуток, в течение которого записи будут сохраняться (по умолчанию это месяц). Для каждого вызова указывается тип звонка (голос, данные), продолжительность, дата, время и номер, если он был определен. Предусмотрена удобная функция фильтрации звонков по типам (данные, GPRS, голос, входящие, исходящие, сообщения). В этом меню также ведется подсчет продолжительности и стоимости звонков. Во время разговора на экране отображается его длительность. 4. Средства. В этой папке содержатся утилиты для управления и настройки самого телефона: "настройка", "переадресация", "быстрый набор", "автоответчик" и "телефонная книга на SIM". Помимо этих стандартных для любого телефона приложений, в данной папке можно найти "диспетчер" — он нужен для установки и удаления программных пакетов с расширением *.sis. Здесь же расположен пункт "память", с помощью которого осуществляется полное управление установленной в телефон картой памяти. И, наконец, пункт Bluetooth — он отвечает за конфигурирование беспроводной связи по протоколу Bluetooth. В последней версии операционной системы этот пункт вынесен в отдельную папку Связь. 5. Галерея 184 В этой папке собраны все пользовательские файлы, которые разбиты по соответствующим группам: Картинки, Клипы, Звуковые файлы. Навигация возможна как в памяти телефона, так и на карте памяти. 6. Мультимедиа. Здесь расположен стандартный проигрыватель для мультимедиафайлов (RealPlayer). В последней версии ОС в плеере появилась поддержка плейлистов (MP3- или MP4-файлы). Формат файла плейлиста M3U. Multimedia Framework поддерживает два новых кодека: MP3 и AAC. В этот же пункт меню разработчики часто помещают FM-приемник. Если в телефоне отдельной папки Мультимедиа нет, то наверняка присутствует RealPlayer или любой другой аналогичный пункт меню. Как вариант в этот пункт меню может быть помещен и диктофон. 7. Камера. Операционная система Symbian изначально обеспечивала поддержку встроенных фотокамер, причем с одновременной поддержкой как обычного фото, так и видеозаписей. В версии 7.0 добавлена поддержка мегапиксельной камеры, во всем остальном этот пункт меню не претерпел существенных изменений. 8. Настройки. Выбор языка интерфейса, установка предпочтительного языка для набора текста. Настройка быстрого доступа по отклонениям джойстика и софт-клавиш. Для дисплея присутствует настройка яркости, возможность выбрать время подсветки. Настройки соединений GPRS, безопасности, времени и д ты, автоблокировки. 9. Календарь. Существует несколько вариантов просмотра: за месяц (числа, для которых установлены события, отмечены уголком), за неделю (по дням с разбивкой по часам) и за день (тоже по часам). Поддерживаются всего три типа событий: Встреча, Памятка и Годовщина. Для каждого из них можно настроить предупредительный сигнал. 10. Дополнительные функции. Из этого пункта меню открывает доступ сразу к нескольким приложениям. Здесь создаются заметки, простые текстовые файлы, присутствует калькулятор, конвертер и часы. Калькулятор ничем не выделяется, так как обладает стандартными функциями, а конвертор напротив крайне многофункционален и позволяет переводить не только курс валют, но и мощность, площадь, объём и т.д. В последний пункт включены настройки будильника. Теперь рассмотрим те специфические особенности и возможности новой версии операционной системы, которые отсутствовали в предыдущих. 1. Наиболее существенные изменения претерпел браузер. Теперь он поддерживает HTML 4.01, XML и WML. Его научили предиктивно вводить URL, открывать HTML-страницы с фоновыми рисунками, работать в полноэкранном режиме, отображать шкалу, показывающую степень загрузки 185 файла. В смартфон предустановлен браузер Оpera. Появилась поддержка WAP 2.0 с поддержкой CSS (Cascading Style Sheets), протоколы wTCP/IP (wireless TCP/IP) и (HTTP 1.1). 2. Добавлено программное обеспечение для мегапиксельной (1152х864 точек) камеры с четырехкратным цифровым увеличением. Сами "камерные" приложения отныне не делятся на фото- и видеокатегории. Все функции доступны из пункта меню "Камера". Появилась возможность простейшего редактирования видеоклипов. 3. В RealPlayer добавлена возможность воспроизведения MP3 и ААС. 4. Добавлены функции Бумажника с поддержкой карт электронной оплаты. 5. Определение местоположения (Location Application), Чата (OMA Instant Messaging), Сервисов присутствия (Presence Services вместе с Presence API). Все эти услуги возможны лишь при наличии поддержки операторов мобильных сетей, так что ждать их внедрения придется еще достаточно долго (некоторые операторы все еще никак не могут внедрить полноценный GPRS). 6. Осуществлена поддержка работы в сетях EDGE в качестве USBклиента, что позволяет использовать смартфон как обычный переносимый накопитель. Появление следующих обновлений (Feature Pack 2 и Feature Pack 3) с предполагаемым названием этой ОС Symbian 8.0a. будет включать поддержку GSM-, WCDMA-GSM- и CDMA-стандартов в одном телефоне. Это позволит создать телефоны, работающие почти в любых сетях. Взаимодействие с сетями третьего поколения даст возможность использовать услуги видеотелефонии. Электронная почта будет отправляться через IMAPIDLE8-протокол. Появится поддержка соединений IPsec-VPN9 (по этому протоколу выполняется защищенное подключение к корпоративной сети) и OMA MMS 1.210 (глубокая интеграция MMS-сервиса с другими приложениями). Будут добавлены Javascript в web-браузере и Offline Mode — в этом режиме телефон работает с выключенным радиотрактом и обходится без SIM-карты. Данный режим очень полезен при использовании телефона в самолете, где на данный момент запретили использование сотовых телефонов и других портативных устройств. В Feature Pack 3 предполагается поддержка QWERTY-клавиатур и экранов разрешением не только 176х208, но и 208х208, 240х320 (QVGA). Теперь немного об операционной системе Palm OS Cobalt. На первый взгляд интерфейс Palm OS Cobalt ничем особенно не отличается от предыдущей версии. Разработчики уделили основное внимание "начинке" системы, но скоро займутся и оформлением. С первого взгляда заметна разница в приложениях органайзера - «Адресная книга», «Контакты» и прочих. PalmSource добавил новые поля в эти приложения для лучшей совместимости с Microsoft Outlook. Кроме того, теперь поля сгруппированы в 186 отдельные окна и вместо привычного меню в правом верхнем углу появились закладки вверху страницы. Лари Слотник, старший менеджер по продукции PalmSource, подтвердил раннее, что компания имеет планы по обновлению интерфейса и можно надеяться, что внешний вид системы в целом будет похож на обновленный интерфейс приложений органайзера. Одно из изменений, которое будет реализовано в Palm OS Cobalt - это панель задач, на которую выведут пиктограммы запущенных задач и информацию о времени, ресурсе батареи, статусе беспроводной связи и т. д. Пользователям карманных компьютеров Sony и Palm TT3 эта идея уже знакома. К сожалению, PalmSource не включила в новое ядро поддержку автоматического переключения из портретного режима в горизонтальный. Разработчики устройств по-прежнему будут обеспечивать эту функцию своими силами. Кроме того, как уже упоминалось, Cobalt обеспечивает поддержку больших экранов с высоким разрешением. Но опять же только на уровне ядра, а сама операционная система не работает с экранами VGA. Эту возможность разработчики устройств могут добавить сами. Из тех возможностей, что обеспечит Cobalt стопроцентно, можно выделить лишь поддержку разрешения 320x480 и виртуальной области граффити. Предположения, что новая ОС будет медленной и нестабильной, похоже, не оправдались. Тесты показали практически мгновенное открытие окон приложений органайзера и очень быстрое обновление экрана. Визуально все работает быстрее, чем на Palm OS 5.x, что и неудивительно, поскольку новая версия разработана и оптимизирована специально под ARM-процессоры. Все знают, что в текущей версии Palm OS есть «ограниченная многозадачность» - одновременно могут исполняться 2 задачи. Cobalt же содержит полноценную поддержку многозадачности – теперь, к примеру, используя смартфон под управлением новой ОС можно одновременно смотреть кино, разговаривать по телефону и просматривать адресную книгу. Совместимость. PalmSource прилагает все усилия, чтобы подвигнуть разработчиков приложений адаптировать программное обеспечение под новую ОС. Несмотря на то, что многие из них уже сейчас ведут такие работы, все-таки следует ожидать, что будут выпускаться специальные версии-апдейты прикладных программ по мере появления реальных устройств, работающих под Cobalt. И, последнее, операционная система Windows Mobile 2003 Second Edition. В марте 2004 года компания Microsoft выпустила обновленную версию своей мобильной операционной системы WM2003, то есть меньше чем через 187 год после выпуска оригинала. Новая операционная система получила название WM2003 Second Edition, а не WM2004, т.к. изменений, по мнению компании Microsoft, набралось не так много. Новая операционная система построена на старом ядре (Windows Compact Edition .NET или просто WinCE .NET), основные улучшения состоят в поддержке высокого разрешения и встроенной функции разворота экрана без перезагрузки. Начнем, конечно, с разрешения экрана. Никто не будет спорить, что основное улучшение в Second Edition – это поддержка экранов высокого разрешения (640х480 точек). Это сразу выводит платформу Pocket PC на новый уровень, до этого разрешение QVGA (320x240 точек) являлось узким горлышком развития платформы. Помимо этого новая ОС поддерживает «квадратные» экраны – это сделано для того, чтобы устройства со встроенными QWERTY-клавиатурами не получались слишком длинными. Возможность разворота экрана – это второе по значимости изменение в новой операционной системе, и первое, если считать для КПК с QVGA экранами. Все встроенные приложения можно развернуть на 90 градусов как влево, так и вправо. При помощи сторонних программ можно этого избежать, например, с помощью программы SPB Pocket Plus 2. Можно просто назначить разворот экрана на одну из аппаратных клавиш. Есть две разные версии Windows Mobile 2003. Версия Premium требует 32 Мб постоянной памяти и включает в себя все стандартные программы, о которых говорилось выше. В версии Professional отсутствуют следующие программы: Microsoft Reader, Terminal Services Client и Pictures. Она требует вдвое меньше постоянной памяти. 188