Вы находитесь на странице: 1из 87

КОМПЬЮТЕРНЫЕ СЕТИ ................................................................................................................................................................................

2
1. Базовая эталонная модель взаимодействия открытых систем (OSI). Физический, сетевой, сеансовый, прикладной уровни....2
2. Топологии сети. Звезда. Строение, принцип работы, достоинства, недостатки. ...........................................................................4
3. Типы кабелей, применяемые для построения компьютерных сетей. Витая пара. Виды, достоинства, недостатки. ...................5
4. Метод доступа с передачей маркера. ................................................................................................................................................7
5. Коммуникационное оборудование сети. Сетевой адаптер, его функции. ......................................................................................7
6. Коммуникационное оборудование сети. Концентратор: виды, назначение. ..................................................................................8
7. Понятие маршрутизатора. Протокол маршрутизации RIP. Построение таблиц маршрутизации .................................................8
8. Базовые технологии локальных сетей. Стандарты Ethernet на 10 Мбит/с. .....................................................................................9
9. Базовые технологии локальных сетей. Стандарты Arcnet. ..............................................................................................................9
10. Базовые технологии локальных сетей. Сети стандарта FDDI. ..................................................................................................10
11. Беспроводные сети. Стандарт IEEE 802.11. ...............................................................................................................................11
12. Протокол IP. Классовая модель адресации сети. .......................................................................................................................12
13. Протоколы TCP. ...........................................................................................................................................................................13
14. Система доменных имен. Назначение, применение. Организация пространства имен ..........................................................15
15. Системные утилиты сетевой диагностики: Telnet, Tracert ........................................................................................................16
16. Коммутация в глобальных сетях. Аналоговые выделенные линии. .........................................................................................18
17. Коммутация в глобальных сетях. Цифровые выделенные линии. ...........................................................................................20
18. Защита информации в компьютерных сетях. Средства и способы защиты информации. .....................................................25
19. Защита информации в компьютерных сетях. Метод подстановки. ..........................................................................................27
20. Понятие маршрутизатора. Виды, функции, характеристики ....................................................................................................28
Операционные Системы ...................................................................................................................................................................................33
1. Работа системы прерываний в реальном режиме.....................................................................................................................................33
2. Режимы управления вводом-выводом ......................................................................................................................................................34
3. Файловые системы .....................................................................................................................................................................................35
4. Функции операционной системы: .............................................................................................................................................................36
5. Мультипрограммный (многопрограммном) режим работы вычислительной системы (ВС) ...............................................................37
6. Порядок использования ресурса в ЭВМ ...................................................................................................................................................37
7. Классификация ОС по способам построения ...........................................................................................................................................38
8. Требования к ОС ПК ..................................................................................................................................................................................38
9. Управление файлами и внешними устройствами в ОС ПК.....................................................................................................................38
10. Принцип модульности...........................................................................................................................................................................39
11. Принцип совместимости .......................................................................................................................................................................39
12. Микроядерные ОС .................................................................................................................................................................................39
13. Приоритеты задач ..................................................................................................................................................................................41
14. Интерфейс ОС ........................................................................................................................................................................................41
15. Интерфейс POSIX ..................................................................................................................................................................................42
16. Виды процессов в ЭВМ .........................................................................................................................................................................43
17. Описатель задач в ОС............................................................................................................................................................................43
18. Многопоточный режим в ОС ................................................................................................................................................................44
19. Дисциплины диспетчеризации .............................................................................................................................................................44
20. Общие принципы управления памятью в однопрограммных ОС ......................................................................................................48
Программное обеспечение компьютерных сетей .........................................................................................................................................50
1. Условные конструкции в PHP. .............................................................................................................................................................50
2. PHP: функции работы с датой и временем. .........................................................................................................................................50
3. PHP: работа с графикой. ........................................................................................................................................................................54
4. Взаимодействие PHP и MySQL. ...........................................................................................................................................................55
5. Java Script: синтаксис языка. Встраивание в HTML. ...........................................................................................................................56
6. Java Script: свойства, методы и события. .............................................................................................................................................57
7. JavaScript: Работа со слоями .................................................................................................................................................................58
8. Web-сервер Apaсhe. ...............................................................................................................................................................................60
9. Понятие о стандартном обобщенном языке разметки SGML. Консорциум W3C. ...........................................................................61
10. Основные элементы HTML страницы .............................................................................................................................................64
11. Работа с графическими изображениями в HTML. ..........................................................................................................................65
12. Язык гипертекстовой разметки HTML. META-данные. ................................................................................................................68
13. CSS: способы определения стилей. .................................................................................................................................................71
14. Инструментальные средства создания клиентской части: их характеристика и назначение. .....................................................72
15. Модели web-систем, их характеристика и назначение. .................................................................................................................75
16. Данные в PHP: переменные и константы. Приведение типов. ......................................................................................................75
17. Циклические конструкции в PHP. ...................................................................................................................................................78
18. PHP: Строки и функции для работы со строками...........................................................................................................................81
19. Протокол HTTP: способы передачи данных на сервер. .................................................................................................................83
20. Взаимодействие PHP и СУБД, совместимой с ODBC....................................................................................................................84

1
КОМПЬЮТЕРНЫЕ СЕТИ
1. Базовая эталонная модель взаимодействия открытых систем (OSI). Физический, сетевой,
сеансовый, прикладной уровни.
Сетевая модель OSI (базовая эталонная модель взаимодействия открытых систем, англ. Open Systems Interconnection
Basic Reference Model) — абстрактная сетевая модель для коммуникаций и разработки сетевых протоколов. Представляет
уровневый подход к сети. Каждый уровень обслуживает свою часть процесса взаимодействия. Благодаря такой структуре
совместная работа сетевого оборудования и программного обеспечения становится гораздо проще и прозрачнее.
В настоящее время основным используемым семейством протоколов является TCP/IP, разработка которого не была
связана с моделью OSI.
Прикладной (Приложений) уровень (англ. Application layer)
Верхний (7-й) уровень модели, обеспечивает взаимодействие сети и
пользователя. Уровень разрешает приложениям пользователя иметь доступ
к сетевым службам, таким как обработчик запросов к базам данных, доступ
к файлам, пересылке электронной почты. Также отвечает за передачу
служебной информации, предоставляет приложениям информацию об
ошибках и формирует запросы к уровню представления. Пример: HTTP,
POP3, SMTP, FTP.
Представительский (Уровень представления) (англ. Presentation
layer)
Этот уровень отвечает за преобразование протоколов и
кодирование/декодирование данных. Запросы приложений, полученные с
уровня приложений, он преобразует в формат для передачи по сети, а
полученные из сети данные преобразует в формат, понятный приложениям.
На этом уровне может осуществляться сжатие/распаковка или
кодирование/декодирование данных, а также перенаправление запросов
другому сетевому ресурсу, если они не могут быть обработаны локально.
Уровень 6 (представлений) эталонной модели OSI обычно представляет
собой промежуточный протокол для преобразования информации из
соседних уровней. Это позволяет осуществлять обмен между
приложениями на разнородных компьютерных системах прозрачным для
приложений образом. Уровень представлений обеспечивает форматирование и преобразование кода. Форматирование
кода используется для того, чтобы гарантировать приложению поступление информации для обработки, которая имела
бы для него смысл. При необходимости этот уровень может выполнять перевод из одного формата данных в другой.
Уровень представлений имеет дело не только с форматами и представлением данных, он также занимается структурами
данных, которые используются программами. Таким образом, уровень 6 обеспечивает организацию данных при их
пересылке.
Чтобы понять, как это работает, представим, что имеются две системы. Одна использует для представления данных
расширенный двоичный код обмена информацией EBCDIC, например, это может быть мэйнфрейм компании IBM, а
другая — американский стандартный код обмена информацией ASCII (его используют большинство других
производителей компьютеров). Если этим двум системам необходимо обменяться информацией, то нужен уровень
представлений, который выполнит преобразование и осуществит перевод между двумя различными форматами.
Другой функцией, выполняемой на уровне представлений, является шифрование данных, которое применяется в тех
случаях, когда необходимо защитить передаваемую информацию от приема несанкционированными получателями.
Чтобы решить эту задачу, процессы и коды, находящиеся на уровне представлений, должны выполнить преобразование
данных. На этом уровне существуют и другие подпрограммы, которые сжимают тексты и преобразовывают графические
изображения в битовые потоки, так что они могут передаваться по сети.
Стандарты уровня представлений также определяют способы представления графических изображений. Для этих целей
может использоваться формат PICT — формат изображений, применяемый для передачи графики QuickDraw между
программами для компьютеров Macintosh и PowerPC. Другим форматом представлений является тэгированный формат
файлов изображений TIFF, который обычно используется для растровых изображений с высоким разрешением.
Следующим стандартом уровня представлений, который может использоваться для графических изображений, является
стандарт, разработанный Объединенной экспертной группой по фотографии (Joint Photographic Expert Group); в
повседневном пользовании этот стандарт называют просто JPEG.
Существует другая группа стандартов уровня представлений, которая определяет представление звука и
кинофрагментов. Сюда входят интерфейс электронных музыкальных инструментов MIDI (Musical Instrument Digital
Interface) для цифрового представления музыки, разработанный Экспертной группой по кинематографии стандарт
MPEG, используемый для сжатия и кодирования видеороликов на компакт-дисках, хранения в оцифрованном виде и
передачи со скоростями до 1,5 Мбит/с, и QuickTime — стандарт, описывающий звуковые и видео элементы для
программ, выполняемых на компьютерах Macintosh и PowerPC.
Сеансовый уровень (англ. Session layer)

2
5-й уровень модели отвечает за поддержание сеанса связи, позволяя приложениям взаимодействовать между собой
длительное время. Уровень управляет созданием/завершением сеанса, обменом информацией, синхронизацией задач,
определением права на передачу данных и поддержанием сеанса в периоды неактивности приложений. Синхронизация
передачи обеспечивается помещением в поток данных контрольных точек, начиная с которых возобновляется процесс
при нарушении взаимодействия.
Транспортный уровень (англ. Transport layer)
4-й уровень модели предназначен для доставки данных без ошибок, потерь и дублирования в той последовательности,
как они были переданы. При этом не важно, какие данные передаются, откуда и куда, то есть он предоставляет сам
механизм передачи. Блоки данных он разделяет на фрагменты, размер которых зависит от протокола, короткие
объединяет в один, а длинные разбивает. Протоколы этого уровня предназначены для взаимодействия типа точка-точка.
Пример: TCP, UDP.
Существует множество классов протоколов транспортного уровня, начиная от протоколов, предоставляющих только
основные транспортные функции (например, функции передачи данных без подтверждения приема), и заканчивая
протоколами, которые гарантируют доставку в пункт назначения нескольких пакетов данных в надлежащей
последовательности, мультиплексируют несколько потоков данных, обеспечивают механизм управления потоками
данных и гарантируют достоверность принятых данных.
Некоторые протоколы сетевого уровня, называемые протоколами без установки соединения, не гарантируют, что
данные доставляются по назначению в том порядке, в котором они были посланы устройством-источником. Некоторые
транспортные уровни справляются с этим, собирая данные в нужной последовательности до передачи их на сеансовый
уровень. Мультиплексирование (multiplexing) данных означает, что транспортный уровень способен одновременно
обрабатывать несколько потоков данных (потоки могут поступать и от различных приложений) между двумя системами.
Механизм управления потоком данных — это механизм, позволяющий регулировать количество данных, передаваемых
от одной системы к другой. Протоколы транспортного уровня часто имеют функцию контроля доставки данных,
заставляя принимающую данные систему отправлять подтверждения передающей стороне о приеме данных.
Сетевой уровень (англ. Network layer)
3-й уровень сетевой модели OSI предназначен для определения пути передачи данных. Отвечает за трансляцию
логических адресов и имѐн в физические, определение кратчайших маршрутов, коммутацию и маршрутизацию,
отслеживание неполадок и заторов в сети. На этом уровне работает такое сетевое устройство, как маршрутизатор.
Протоколы сетевого уровня маршрутизируют данные от источника к получателю и могут быть разделены на два
класса: протоколы с установкой соединения и без него.
Описать работу протоколов с установкой соединения можно на примере работы обычного телефона. Протоколы этого
класса начинают передачу данных с вызова или установки маршрута следования пакетов от источника к получателю.
После чего начинают последовательную передачу данных и затем по окончании передачи разрывают связь.
Протоколы без установки соединения, которые посылают данные, содержащие полную адресную информацию в
каждом пакете, работают аналогично почтовой системе. Каждое письмо или пакет содержит адрес отправителя и
получателя. Далее каждый промежуточный почтамт или сетевое устройство считывает адресную информацию и
принимает решение о маршрутизации данных. Письмо или пакет данных передается от одного промежуточного
устройства к другому до тех пор, пока не будет доставлено получателю. Протоколы без установки соединения не
гарантируют поступление информации получателю в том порядке, в котором она была отправлена. За установку данных
в соответствующем порядке при использовании сетевых протоколов без установки соединения отвечают транспортные
протоколы.
Канальный уровень (англ. Data Link layer)
Этот уровень предназначен для обеспечения взаимодействия сетей на физическом уровне и контроля за ошибками,
которые могут возникнуть. Полученные с физического уровня данные он упаковывает во фреймы, проверяет на
целостность, если нужно исправляет ошибки (посылает повторный запрос поврежденного кадра) и отправляет на сетевой
уровень. Канальный уровень может взаимодействовать с одним или несколькими физическими уровнями, контролируя и
управляя этим взаимодействием. Спецификация IEEE 802 разделяет этот уровень на 2 подуровня — MAC (Media Access
Control) регулирует доступ к разделяемой физической среде, LLC (Logical Link Control) обеспечивает обслуживание
сетевого уровня.
На этом уровне работают коммутаторы, мосты.
В программировании этот уровень представляет драйвер сетевой платы, в операционных системах имеется
программный интерфейс взаимодействия канального и сетевого уровней между собой, это не новый уровень, а просто
реализация модели для конкретной ОС. Примеры таких интерфейсов: ODI, NDIS
Физический уровень (англ. Physical layer)
Самый нижний уровень модели предназначен непосредственно для передачи потока данных. Осуществляет передачу
электрических или оптических сигналов в кабель или в радиоэфир и, соответственно, их приѐм и преобразование в биты
данных в соответствии с методами кодирования цифровых сигналов. Другими словами, осуществляет интерфейс между
сетевым носителем и сетевым устройством.
На этом уровне работают концентраторы (хабы), повторители (ретрансляторы) сигнала и медиаконверторы.
Функции физического уровня реализуются на всех устройствах, подключенных к сети. Со стороны компьютера
функции физического уровня выполняются сетевым адаптером или последовательным портом. К физическому уровню
относятся физические, электрические и механические интерфейсы между двумя системами. Физический уровень
определяет такие свойства среды сети передачи данных как оптоволокно, витая пара, коаксиальный кабель, спутниковый

3
канал передач данных и т. п. Стандартными типами сетевых интерфейсов, относящимися к физическому уровню,
являются: V.35, RS-232C, RS-485, RJ-11, RJ-45, разъемы AUI и BNC.
Модель OSI и реальные протоколы
Семиуровневая модель OSI является теоретической, и содержит ряд недоработок. Были попытки строить сети в точном
соответствии с моделью OSI, но созданные таким образом сети были дорогими, ненадѐжными и неудобными в
эксплуатации. Реальные сетевые протоколы, используемые в существующих сетях, вынуждены отклоняться от неѐ,
обеспечивая непредусмотренные возможности, поэтому привязка некоторых из них к уровням OSI является несколько
условной: некоторые протоколы занимают несколько уровней модели OSI, функции обеспечения надѐжности
реализованы на нескольких уровнях модели OSI.
Основная недоработка OSI — непродуманный транспортный уровень. На нѐм OSI позволяет обмен данными между
приложениями (вводя понятие порта — идентификатора приложения), однако, возможность обмена простыми
датаграммами (по типу UDP) в OSI не предусмотрена — транспортный уровень должен образовывать соединения,
обеспечивать доставку, управлять потоком и т. п. (по типу TCP). Реальные же протоколы реализуют такую возможность.
Семейство TCP/IP
Семейство TCP/IP имеет три транспортных протокола: TCP, полностью соответствующий OSI, обеспечивающий
проверку получения данных, UDP, отвечающий транспортному уровню только наличием порта, обеспечивающий обмен
датаграммами между приложениями, не гарантирующий получения данных и SCTP, разработанный для устранения
некоторых недостатков TCP и в который добавлены некоторые новшества. (В семействе TCP/IP есть ещѐ около двухсот
протоколов, самым известным из которых является служебный протокол ICMP, используемый для внутренних нужд
обеспечения работы; остальные также не являются транспортными протоколами.)
Семейство IPX/SPX
В семействе IPX/SPX порты (называемые «сокеты» или «гнѐзда») появляются в протоколе сетевого уровня IPX,
обеспечивая обмен датаграммами между приложениями (операционная система резервирует часть сокетов для себя).
Протокол SPX, в свою очередь, дополняет IPX всеми остальными возможностями транспортного уровня в полном
соответствии с OSI.
В качестве адреса хоста IPX использует идентификатор, образованный из четырѐхбайтного номера сети (назначаемого
маршрутизаторами) и MAC-адреса сетевого адаптера.
Модель DOD
Стек протоколов TCP/IP, использующий упрощѐнную четырѐхуровневую модель OSI.
2. Топологии сети. Звезда. Строение, принцип работы, достоинства, недостатки.
Характеризует физическое расположение компьютеров, сетевых сред передачи данных и других компонентов сети.
Топология сети обуславливает ее технические характеристики. В частности, выбор той или иной топологии влияет на:
 состав необходимого сетевого оборудования и его характеристики;
 возможность расширения сети и ее надежность;
 способ управления сетью.
Любая топология сети может диктовать не только тип кабеля, но и способ его прокладки, а также определять метод
доступа компьютеров в сеть. Все сети строятся на основе трех базовых топологий: шина (bus); звезда (star); кольцо (ring).
Если компьютеры подключены вдоль одного кабеля (сегмента), топология называется "шина". В том случае, когда
компьютеры подключены к сегментам кабеля, исходящим из одной точки (или концентратора), топология называется
"звезда". Если кабель, к которому подключены компьютеры, замкнут, то такая топология носит название "кольцо".
Звезда́ — базовая топология компьютерной сети, в которой все компьютеры сети присоединены к центральному узлу
(обычно сетевой концентратор), образуя физический сегмент сети. Подобный сегмент сети может функционировать как
отдельно, так и в составе сложной сетевой топологии (как правило "дерево").
Рабочая станция, которой нужно послать данные, отсылает их на концентратор, а тот определяет адресата и отдаѐт ему
информацию. В определѐнный момент времени только одна машина в сети может пересылать данные, если на
концентратор одновременно приходят два пакета, обе посылки оказываются не принятыми и отправителям нужно будет
подождать случайный промежуток времени, чтобы возобновить передачу данных. Этот недостаток отсутствует на
сетевом устройстве более высокого уровня - коммутаторе, который, в отличие от концентратора, подающего пакет на все
порты, подает лишь на определенный порт - получателю. Одновременно может быть передано несколько пакетов.
Сколько - зависит от коммутатора.
Достоинства
 выход из строя одной рабочей станции не отражается на работе всей сети в целом;
 хорошая масштабируемость сети;
 лѐгкий поиск неисправностей и обрывов в сети;
 высокая производительность сети (при условии правильного проектирования);
 гибкие возможности администрирования.
Недостатки
 выход из строя центрального концентратора обернѐтся неработоспособностью сети (или сегмента сети) в целом;
 для прокладки сети зачастую требуется больше кабеля, чем для большинства других топологий;
 конечное число рабочих станций в сети (или сегменте сети) ограничено количеством портов в центральном
концентраторе.
При топологии «звезда» все компьютеры с помощью сегментов кабеля подключаются к центральному компоненту –
концентратору (Hub).
4
Пакеты данных от каждого компьютера направляются к центральному концентратору. Он, в свою очередь,
перенаправляет пакеты к месту назначения. Основное достоинство этой топологии в том, что если повреждена какая-
либо РС или отдельное соединение между РС и концентратором, вся сеть остается работоспособной. Положительным
является и то, что подключение кабеля и управление конфигурацией сети централизовано, а также просто
конфигурировать сеть при добавлении новых РС. Как недостатки организации такой топологии следует отметить
следующее:
 Так как все РС
подключены к центральной Топология Преимущества Недостатки
точке, то для больших ЛВС  при значительных объемах
значительно увеличивается  экономный расход кабеля; трафика уменьшается пропускная
расход кабеля.  недорогая и несложная в способность;
 Если поврежденным Шина использовании среда передачи;  трудная локализация
оказался сам концентратор, то  простота и надежность; проблем;
нарушится и работа всей сети,  легкая расширяемость.  выход из строя кабеля
хотя РС останутся остановит работу пользователей.
работоспособными.  выход из строя одной РС
Концентраторы являются  все РС имеют равный доступ; выводит из строя всю сеть;
центральным узлом в  количество пользователей не  трудно локализовать
топологии «звезда». Однако в Кольцо
сказывается на проблемы;
настоящее время они производительности.  изменение конфигурации сети
становятся одним из требует остановки всей сети.
стандартных компонентов
 легко модифицировать сеть,
большинства ЛВС.
добавляя новые РС;
Среди концентраторов  Выход из стоя центрального
выделяют активные и  централизованный контроль и
Звезда концентратора выводит из стоя
пассивные. Активные управление;
всю сеть.
концентраторы регенерируют и  выход из строя РС не влияет
передают сигналы, также как на работу сети.
это делают репитеры. Иногда их называют еще многопортовыми репитерами. Они имеют от 8 до 12 портов для
подключения компьютеров.
Пассивные концентраторы – это монтажные панели или коммутирующие блоки. Они просто пропускают через себя
сигнал, не усиливая и не восстанавливая его. Пассивные, в отличие от активных, не надо подключать к источнику
питания. Гибридными называют конденсаторы, к которым можно подключить кабели различных типов.
Концентраторы можно соединить между собой. При такой топологии разрыв кабеля, подключенного к концентратору,
нарушит работу только одного конкретного сегмента сети

3. Типы кабелей, применяемые для построения компьютерных сетей. Витая пара. Виды,
достоинства, недостатки.
Коаксиальный кабель
До недавнего времени самой распространенной средой передачи данных был коаксиальный кабель: относительно
недорогой, легкий и гибкий, безопасный и простой в установке. Электрические сигналы, кодирующие данные,
передаются по жиле. Она изоляцией отделяется от металлической оплетки, которая играет роль заземления и защищает
передаваемые по жиле сигналы от:
 внешних электромагнитных шумов (атмосферных, промышленных);
 перекрестных помех – электрических наводок, вызванных сигналами в соседних проводах.
Используют толстый (диам:1см,длина сегмента:500м,скорость:10мбит\с,стандарт:10base5) и тонкий
(0,5см,185м,10мбит\с,10base2) коаксиальный кабель Различают обычные и пленумные коаксиальные кабели. Последние
обладают повышенными механическими и противопожарными характеристиками и допускают прокладку под полом,
между фальшпотолком и перекрытием. При выборе для ЛВС данного типа кабеля следует принимать во внимание:
1. это среда для передачи речи, видео и двоичных данных;
2. позволяет передавать данные на большие расстояния;
3. это хорошо знакомая технология, предлагающая достаточный уровень защиты данных.
Витая пара
вид кабеля связи, представляет собой одну или несколько пар изолированных проводников, скрученных между собой (с
небольшим числом витков на единицу длины), покрытых пластиковой оболочкой. Свивание проводников производится с
целью повышения связи проводников одной пары (электромагнитная помеха одинаково влияет на оба провода пары) и
последующего уменьшения электромагнитных помех от внешних источников, а также взаимных наводок при передаче
дифференциальных сигналов. Для снижения связи отдельных пар кабеля (периодического сближения проводников
различных пар) в кабелях UTP категории 5 и выше провода пары свиваются с различным шагом. Витая пара — один из
компонентов современных структурированных кабельных систем. Используется в телекоммуникациях и в
компьютерных сетях в качестве сетевого носителя во многих технологиях, таких как Ethernet, Arcnet и Token ring. В
настоящее время, благодаря своей дешевизне и лѐгкости в монтаже, является самым распространѐнным решением для
построения локальных сетей.

5
Кабель подключается к сетевым устройствам при помощи соединителя 8P8C (зачастую ошибочно называемого RJ45
или RJ-45. Термин «RJ45» ошибочно употребляется для именования разъѐма 8P8C, используемого в компьютерных
сетях. На самом деле настоящий RJ45 физически несовместим с 8P8C, так как использует схему 8P2C с ключом.
Ошибочное употребление термина «RJ45» вызвано, скорее всего, тем, что настоящий RJ45 не получил широкого
применения, а также их внешним сходством. В свою очередь 8P8C (8 Position 8 Contact) — это унифицированный разъем,
который используется в телекоммуникациях и имеет 8 контактов и защѐлку ), немного бо́льшим , чем телефонный
соединитель RJ11.
В зависимости от наличия защиты — электрически заземлѐнной медной оплетки или алюминиевой фольги вокруг
скрученных пар, определяют разновидности данной технологии:
 незащищенная витая пара (UTP — Unshielded twisted pair) — отсутствует защитный экран вокруг отдельной пары;
 фольгированная витая пара (FTP — Foiled twisted pair) — также известна как F/UTP (см.: en:Screened fully-shielded
twisted pair#Screened Shielded Twisted Pair (S/STP)), присутствует один общий внешний экран в виде фольги;
 защищенная витая пара (STP — Shielded twisted pair) — присутствует защита в виде экрана для каждой пары;
 фольгированная экранированная витая пара (S/FTP — Screened Foiled twisted pair) — внешний экран из медной
оплетки и каждая пара в фольгированной оплетке;
 незащищенная экранированная витая пара (SF/UTP — Screened Foiled Unshielded twisted pair) — двойной внешний
экран из медной оплетки и фольги, каждая витая пара без защиты.

Экранирование обеспечивает лучшую защиту от электромагнитных наводок как внешних, так и внутренних, и т.д.
Экран по всей длине соединен с неизолированным дренажным проводом, который объединяет экран в случае разделения
на секции при излишнем изгибе или растяжении кабеля.
В зависимости от структуры проводников — кабель применяется одно- и многожильный. В первом случае каждый
провод состоит из одной медной жилы, а во втором — из нескольких.
Одножильный кабель не предполагает прямых контактов с подключаемой периферией. То есть, как правило, его
применяют для прокладки в коробах, стенах и т.д. с последующим оконечиванием розетками. Связано это с тем, что
медные жилы довольно толсты и при частых изгибах быстро ломаются. Однако для «врезания» в разъемы панелей
розеток такие жилы подходят как нельзя лучше.
В свою очередь многожильный кабель плохо переносит «врезание» в разъѐмы панелей розеток (тонкие жилы
разрезаются), но замечательно ведет себя при изгибах и скручивании . Кроме того , многожильный провод обладает
бо́льшим затуханием сигнала . Поэтому многожильный кабель используют в основном для изготовления патчкордов
(англ. patchcord), соединяющих периферию с розетками.
Конструкция кабеля
Кабель обычно состоит из четырѐх пар. Проводники в парах изготовлены из монолитной медной проволоки толщиной
0,40—0,51 мм. Кроме метрической, применяется система AWG, в которой эти величины составляют 26 или 24
соответственно. Толщина изоляции — около 0,2 мм, материал обычно поливинилхлорид (английское сокращение PVC),
для более качественных образцов 5 категории — полипропилен (PP), полиэтилен (PE). Особенно высококачественные
кабели имеют изоляцию из вспененного (ячеистого) полиэтилена, который обеспечивает низкие диэлектрические потери,
или тефлона, обеспечивающего высокий рабочий диапазон температур.
Также внутри кабеля встречается так называемая «разрывная нить» (обычно капрон), которая используется для
облегчения разделки внешней оболочки — при вытягивании она делает на оболочке продольный разрез, который
открывает доступ к кабельному сердечнику, гарантированно не повреждая изоляцию проводников. Также разрывная
нить, ввиду своей высокой прочности на разрыв, выполняет защитную функцию.
Внешняя оболочка имеет толщину 0,5—0,6 мм и обычно изготавливается из привычного поливинилхлорида с
добавлением мела, который повышает хрупкость. Это необходимо для точного облома по месту надреза лезвием
отрезного инструмента. Кроме этого, начинают применяться так называемые «молодые полимеры», которые не
поддерживают горения и не выделяют при нагреве галогенов (такие кабели маркируются как LSZH — Low Smoke Zero
Halogen и обычно имеют яркую окраску внешней оболочки).
Самый распространенный цвет оболочки — серый. Оранжевая окраска, как правило, указывает на негорючий материал
оболочки, который позволяет прокладывать линии в закрытых областях. В общем случае, цвета не обозначают особых
свойств, но их применение позволяет легко отличать коммуникации c разным функциональным назначением, как при
монтаже, так и обслуживании.
Отдельно нужно отметить маркировку. Кроме данных о производителе и типе кабеля, она обязательно включает в себя
метровые или футовые метки.
Форма внешней оболочки также может быть различна. Чаще других применяется самая простая — круглая. Только для
прокладки под половым покрытием, по очевидной причине, используется плоский кабель.
Кабели для наружной прокладки обязательно имеют влагостойкую оболочку из полиэтилена, которая наносится (как
правило) вторым слоем поверх обычной, поливинилхлоридной. Кроме этого, возможно заполнение пустот в кабеле
водоотталкивающим гелем и бронирование с помощью гофрированной ленты или стальной проволоки.
Оптоволоконный кабель
В оптоволоконном кабеле цифровые данные распространяются по оптическим волокнам в виде модулированных
световых импульсов, а не электрических сигналов. Следовательно, его нельзя вскрыть и перехватить данные. Передача
по оптоволоконному кабелю не подвержена электрическим помехам и ведется на чрезвычайно высокой скорости (до 100
Мбит/с, а теоретически возможно до 200 Мбит/с). Основа кабеля – оптическое волокно – тонкий стеклянный цилиндр

6
(жила), покрытая слоем стекла, называемого оболочкой и имеющей отличный от жилы коэффициент преломления
Оптоволоконный кабель рекомендуется использовать:
 при передаче данных на большие расстояния с высокой скоростью по надежной среде передачи.
 Не рекомендуется использовать:
 при ограниченности денежных средств;
 при отсутствии навыков установки и корректного подключения оптоволоконных сетевых устройств.
Узкополосная и широкополосная передачи сигналов
В современных компьютерных сетях для передачи кодированных сигналов по сетевому кабелю наибольшее
применение находят две наиболее распространенные технологии:
 узкополосная передача сигналов;
 широкополосная передача сигналов.
Узкополосные (baseband) системы передают данные в виде цифрового сигнала одной частоты.
Широкополосные (broadband) системы передают данные в виде аналогового сигнала, который использует некоторый
интервал частот. Сигналы представляют собой непрерывные (а не дискретные) электронные или оптические волны. При
таком способе сигналы передаются по физической среде в одном направлении. В широкополосной системе сигнал
передается только в одном направлении. Для возможности приема и передачи каждым из устройств необходимо
обеспечить два пути прохождения сигнала. Для этого можно:
 использовать два кабеля;
 разбить полосу пропускания кабеля на два канала, которые работают с разными частотами: один канал на передачу,
другой – на прием.

4. Метод доступа с передачей маркера.


Суть маркерного доступа заключается в том, что пакет особого типа (маркер) перемещается по замкнутому кругу,
минуя по очереди все РС, до тех пор, пока его не получит тот, который хочет передать данные (рис. 3.9). Алгоритм
взаимодействия рабочих станций ЛВС при использовании маркерного метода заключается в следующем:
1. Передающая рабочая станция изменяет состояние маркера на занятое и добавляет к нему пакет данных.
2. Занятый маркер с пакетом данных проходят через все РС сети, пока не достигнет адресата.
3. После этого, принимающая РС посылает передающей сообщение, где подтверждается факт приема.
4. После получения подтверждения, передающая РС создает новый свободный маркер и возвращает его в сеть.
На первый взгляд кажется, что передача маркера занимает много времени, однако на самом деле он перемещается с
очень большой скоростью. В кольце диаметром 200 м маркер может циркулировать с частотой 10000 оборотов в секунду.
Рассмотренный выше методы доступа широко используются в современных сетевых технологиях. Они реализуются на
аппаратном уровне в платах сетевых адаптеров того или иного сетевого стандарта. Первый из рассмотренных метод
используется в сетевой технологии Ethernet, второй – в Token Ring и ArcNet.

5. Коммуникационное оборудование сети. Сетевой адаптер, его функции.


Сетевые адаптеры - это коммуникационное оборудование
Сетевой адаптер (сетевая карта) - это устройство двунаправленного обмена данными между ПК и средой передачи
данных вычислительной сети. Кроме организации обмена данными между ПК и вычислительной сетью, сетевой адаптер
выполняет буферизацию (временное хранение данных) и функцию сопряжения компьютера с сетевым кабелем.
Сетевыми адаптерами реализуются функции физического уровня, а функции канального уровня семиуровневой модели
ISO реализуются сетевыми адаптерами и их драйверами.
Адаптеры снабжены собственным процессором и памятью. Карты классифицируются по типу порта, через который они
соединяются с компьютером: ISA, PCI, USB. Наиболее распространенные из них - это сетевые карты PCI. Карта, как
правило, устанавливается в слот расширения PCI, расположенный на материнской плате ПК, и подключается к сетевому
кабелю разъемами типа: RJ-45 или BNC.
Сетевые карты можно разделить на два типа:
 адаптеры для клиентских компьютеров;
 адаптеры для серверов.
В зависимости от применяемой технологии вычислительных сетей Ethernet, Fast Ethernet или Gigabit Ethernet, сетевые
карты обеспечивают скорость передачи данных: 10, 100 или 1000 Мбит/с.
Сетевые кабели вычислительных сетей
В качестве кабелей соединяющих отдельные ПК и коммуникационное оборудование в вычислительных сетях
применяются: витая пара, коаксиальный кабель, оптический кабель, свойства которых изложены в разделе "Линии связи
и каналы передачи данных"
Промежуточное коммуникационное оборудование вычислительных сетей
В качестве промежуточного коммуникационного оборудования применяются: трансиверы (transceivers), повторители
(repeaters), концентраторы (hubs), коммутаторы (switches), мосты (bridges), маршрутизаторы (routers) и шлюзы (gateways).
Промежуточное коммуникационное оборудования вычислительных сетей используется для усиления и преобразования
сигналов, для объединения ПК в физические сегменты, для разделения вычислительных сетей на подсети (логические
сегменты) с целью увеличения производительности сети, а также для объединения подсетей (сегментов) и сетей в
единую вычислительную сеть.

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

6. Коммуникационное оборудование сети. Концентратор: виды, назначение.


Cетевой концентратор или Хаб (жарг. от англ. hub — центр деятельности) — сетевое устройство, предназначенное для
объединения нескольких устройств Ethernet в общий сегмент сети. Устройства подключаются при помощи витой пары,
коаксиального кабеля или оптоволокна.
В настоящее время почти не выпускаются — им на смену пришли сетевые коммутаторы (свитчи), выделяющие каждое
подключенное устройство в отдельный сегмент. Сетевые коммутаторы ошибочно называют «интеллектуальными
концентраторами».
Принцип работы
Концентратор работает на физическом уровне сетевой модели OSI, повторяет приходящий на один порт сигнал на все
активные порты. В случае поступления сигнала на два и более порта одновременно возникает коллизия, и передаваемые
кадры данных теряются. Таким образом, все подключенные к концентратору устройства находятся в одном домене
коллизий. Концентраторы всегда работают в режиме полудуплекса, все подключенные устройства Ethernet разделяют
между собой предоставляемую полосу доступа.
Многие модели концентраторов имеют простейшую защиту от излишнего количества коллизий, возникающих по
причине одного из подключенных устройств. В этом случае они могут изолировать порт от общей среды передачи. По
этой причине, сетевые сегменты, основанные на витой паре гораздо стабильнее в работе сегментов на коаксиальном
кабеле, поскольку в первом случае каждое устройство может быть изолировано концентратором от общей среды, а во
втором случае несколько устройств подключаются при помощи одного сегмента кабеля, и, в случае большого количества
коллизий, концентратор может изолировать лишь весь сегмент.
В последнее время концентраторы используются достаточно редко, вместо них получили распространение
коммутаторы — устройства, работающие на канальном уровне модели OSI и повышающие производительность сети
путѐм логического выделения каждого подключенного устройства в отдельный сегмент, домен коллизии.
Характеристики сетевых концентраторов
Количество портов — разъѐмов для подключения сетевых линий, обычно выпускаются концентраторы с 4, 5, 6, 8, 16,
24 и 48 портами (наиболее популярны с 4, 8 и 16). Концентраторы с большим количеством портов значительно дороже.
Однако концентраторы можно соединять каскадно друг к другу, наращивая количество портов сегмента сети. В
некоторых для этого предусмотрены специальные порты.
Скорость передачи данных — измеряется в Мбит/с, выпускаются концентраторы со скоростью 10, 100 и 1000. Кроме
того, в основном распространены концентраторы с возможностью изменения скорости, обозначаются как 10/100/1000
Мбит/с. Скорость может переключаться как автоматически, так и с помощью перемычек или переключателей. Обычно,
если хотя бы одно устройство присоединено к концентратору на скорости нижнего диапазона, он будет передавать
данные на все порты с этой скоростью.
Тип сетевого носителя — обычно это витая пара или оптоволокно, но существуют концентраторы и для других
носителей, а также смешанные, например для витой пары и коаксиального кабеля.

7. Понятие маршрутизатора. Протокол маршрутизации RIP. Построение таблиц


маршрутизации
Маршрутизация ( routing ) — процесс выбора пути для передачи пакетов. Маршрутизация осуществляется на узле
TCP/IP в момент отправки IP-пакетов, а затем — на IP-маршрутизаторе. Маршрутизатор (router) — это устройство,
которое перенаправляет пакеты из одной физической сети в другую. Маршрутизаторы также называют шлюзами
(gateways).
Классификация М. по области применения:
Магистральные маршрутизаторы – предназначены для построения центральной сети корпорации. это мощные
устройства, способные обрабатывать несколько сотен тысяч или даже несколько миллионов пакетов в секунду, имеющие
большое количество интерфейсов локальных и глобальных сетей. Маршрутизаторы региональных отделений соединяют
региональные отделения между собой и с центральной сетью. Поддерживаемые интерфейсы локальных и глобальных
сетей менее скоростные. Маршрутизаторы удаленных офисов соединяют, как правило, единственную локальную сеть
удаленного офиса с центральной сетью или сетью региональной: отделения по глобальной связи. В максимальном
варианте такие маршрутизаторы могут поддерживать и два интерфейса локальных сетей. Как правило, интерфейс
локальной сети — это Ethernet 10 Мбит/с, а интерфейс глобальной сети — выделенная линия со скоростью 64 Кбит/с,
1,544 или 2 Мбит/с.
Маршрутизаторы локальных сетей (коммутаторы 3-го уровня)

8
предназначен» для разделения крупных локальных сетей на подсети. Основное требование, предъявляемое к ним, —
высокая скорость маршрутизации, Все порты имеют скорость по крайней мере 10 Мбит/с, а многие работают на скорости
100 Мбит/с.
Протокол RIP
Протокол RIP является дистанционно-векторным протоколом внутренней маршрутизации. Процесс работы протокола
состоит в рассылке, получении и обработке векторов расстояний до IP- сетей, находящихся в области действия
протокола, то есть в данной RIP-системе. Результатом работы протокола на 1 конкретном маршрутизаторе является
таблица, где для каждой сети данной RIP-системы указано расстояние до этой сети (в хопах) и адрес следующего
маршрутизатора. Информация о номере сети и адресе следующего маршрутизатора из этой таблицы вносится в таблицу
маршрутов, информация о расстоянии до сети используется при обработке векторов расстояний.
Недостатки RIP
1. RIP хорошо работает только в малых объединенных IP-сетях с небольшим числом маршрутизаторов.
2. При использовании RIP таблица каждого маршрутизатора содержит полный список всех сетевых идентификаторов и
возможных путей к ним. Поскольку максимальный размер одного RIP-пакета — 512 байт, для отправки больших таблиц
маршрутизации требуется множество RIP-пакетов.
3. Маршрутизация, основанная на RIP, не подходит для больших объединенных сетей или глобальных сетей (WAN), где
существенные части полосы пропускания будут задействованы для трафика протокола RIP.
4. Если маршрутизатор выходит из строя, распространение изменений по объединенной сети может занять несколько
минут. Это называется проблемой медленной конвергенции.

8. Базовые технологии локальных сетей. Стандарты Ethernet на 10 Мбит/с.

Архитектуры или технологии локальных сетей можно разделить на два поколения. К первому поколению относятся
архитектуры, обеспечивающие низкую и среднюю скорость передачи информации: Ethernet 10 Мбит/с), Token Ring (16
Мбит/с) и ARC net (2,5 Мбит/с).
Для передачи данных эти технологии используют кабели с медной жилой. Ко второму поколению технологий
относятся современные высокоскоростные архитектуры: FDDI (100 Мбит/с), АТМ (155 Мбит/с) и модернизированные
версии архитектур первого поколения (Ethernet): Fast Ethernet (100 Мбит/с) и Gigabit Ethernet (1000 Мбит/с).
Стандарты Ethernet, Fast Ethernet и Gigabit Ethernet
Это самая популярная в настоящее время сетевая архитектура. Она использует:
 физические топологии «шина», «звезда» или «звезда-шина»;
 логическую топологию «шина»;
 узкополосную передачу данных со скоростями 10 и 100 Мбит/с;
 метод доступа – CSMA/CD.
Среда передачи является пассивной, т. е. получает питаниеm от РС. Сеть прекратит работу из-за физического
повреждения или неправильного подключения терминатора. Передает информацию кадрами,
Различают несколько стандартов сетевых архитектур Ethernet:
 10BaseT – на основе витой пары;
 10Base2 – на тонком коаксиале;
 10Base5 – на толстом коаксиале;
 10BaseFL – на оптоволокне;
 10BaseX – со скоростью передачи 100 Мбит/с, который включает в себя ряд спецификаций в зависимости от
среды передачи.

9. Базовые технологии локальных сетей. Стандарты Arcnet.


RCNET (или ARCnet, от англ. Attached Resource Computer NETwork) — технология ЛВС, назначение которой
аналогично назначению Ethernet или Token ring. ARCNET являлась первой технологией для создания сетей
микрокомпьютеров и стала очень популярной в 1980-х при автоматизации учрежденческой деятельности. Предназначена
для организации ЛВС в сетевой топологии «звезда».
Основу коммуникационного оборудования составляет:
 коммутатор (switch)
 пассивный/активный концентратор
Преимущество имеет коммутаторное оборудование, так как позволяет формировать сетевые домены. Активные хабы
применяются при большом удалении рабочей станции (они восстанавливают форму сигнала и усиливают его).
Пассивные — при маленьком. В сети применяется назначаемый принцип доступа рабочих станций, то есть право на
передачу имеет станция, получившая от сервера так называемый программный маркер. Т.е. реализуется
детерминированный сетевой трафик.
Преимущества подхода:
 Можно рассчитать точное время доставки пакета данных.
 Можно точно рассчитать пропускную способность сети.
Замечания: сообщения, передаваемые рабочими станциями образуют очередь на сервере. Если время обслуживания
очереди значительно (более, чем в 2 раза) превышает максимальное время доставки пакета между двумя самыми

9
удалѐнными станциями, то считается, что пропускная способность сети достигла максимального предела. В этом случае
дальнейшее наращивание сети невозможно и требуется установка второго сервера.
Предельные технические характеристики:
 Минимальное расстояние между рабочими станциями, поключенными к одному кабелю — 0,9 м.
 Максимальная длина сети по самому длинному маршруту — 6 км.
Ограничения связаны с аппаратной задержкой передачи информации при большом количестве коммутирующих
элементов.
Максимальное расстояние между пассивным концентратором и рабочей станцией — 30 м.
Максимальное расстояние между активным и пассивным хабом — 30 м.
Между активным хабом и активным хабом — 600 м.
Достоинства:
 Низкая стоимость сетевого оборудования и возможность создания протяжѐнных сетей.
Недостатки:
 Невысокая скорость передачи данных.
После распространения Ethernet в качестве технологии для создания ЛВС, ARCNET нашла применение во
встраиваемых системах.
Поддержкой технологии ARCNET (в частности распространением спецификаций) занимается некоммерческая
организация ARCNET Trade Association (ATA).
В настоящее время разработан стандарт arcnet plus, рассчитанный на скорость обмена до 20 Мбит/с, совместимый с
прежней версией. Новый стандарт позволяет строить сети с числом станций в 8 раз больше, чем старый. Если в сети
присутствуют узлы, рассчитанные на разную скорость обмена, выбор полосы пропускания осуществляется при
установлении связи. Соединение с другими сетями (например, Ethernet, Token Ring или Интернет) возможно через
специальные шлюзы, мосты или маршрутизаторы.

10. Базовые технологии локальных сетей. Сети стандарта FDDI.


FDDI (англ. Fiber Distributed Data Interface — распределѐнный волоконный интерфейс данных) — стандарт передачи
данных в локальной сети, протянутой на расстоянии до 200 километров. Стандарт основан на протоколе Token Ring.
Кроме большой территории, сеть FDDI способна поддерживать несколько тысяч пользователей.
В качестве среды передачи данных в FDDI рекомендуется использовать оптоволоконный кабель, однако можно
использовать и медный кабель, в таком случае используется сокращение CDDI (Copper Distributed Data Interface). В
качестве топологии используется схема двойного кольца, при этом данные в кольцах циркулируют в разных
направлениях. Одно кольцо считается основным, по нему передаѐтся информация в обычном состоянии; второе —
вспомогательным, по нему данные передаются в случае обрыва на первом кольце. Для контроля за состоянием кольца
используется сетевой маркер, как и в технологии Token Ring.
Поскольку такое дублирование повышает надѐжность системы, данный стандарт с успехом применяется в
магистральных каналах связи.
Стандарт был разработан в середине 80-х годов Национальным Американским Институтом Стандартов (ANSI) и
получил номер ANSI X3T9.5.
Функциональные компоненты
FDDI состоит из четырех отдельных функциональных компонентов, каждый из которых определяется собственным
набором спецификаций. Это следующие компоненты:
 Уровень управления доступом к среде (Media Access Control — MAC)
 Протокол физического уровня (Physical Layer Protocol — PHY)
 Среда физического уровня (Physical Layer Medium — PMD)
 Уровень управления станциями (Station Management — SMT)

Управление доступом к среде


Верхним уровнем FDD1 является уровень управления доступом к среде (MAC), соответствующий канальному уровню
эталонной модели OSI. Подуровень MAC отвечает за определение методологии доступа к среде и множества форматов
кадров. Кроме того, подуровень MAC также отвечает за генерирование и администрирование маркера и кадров, МАС-
адресацию и даже обнаружение и коррекцию ошибок в течение приема кадров данных.
Протокол физического уровня
Протокол физического уровня (PHY) технологии FDDI коррелирован с функциями верхнего подуровня физического
уровня эталонной модели OSI. Он отвечает за прием потока битов данных и преобразование его в подходящий для
передачи формат. Эта процедура называется "кодированием". Используется схема кодирования 4-бит/5-бит, в
соответствии с которой из уровня MAC принимаются 4- битовые полубайты и преобразовываются в 5-битовые символы.
Именно эти 5-битовые символы и передаются по среде. Следует отметить, что поскольку уровень MAC отвечает за
генерирование кадров и преобразование данных в кадры, все части кадра представляются 5-и битовыми символами.
Кроме того, PHY отвечает за синхронизацию локальной сети. Архитектура FDD1 функционирует на тактовой частоте,
равной 125 МГц. Именно PHY отвечает за генерирование тактовых импульсов и синхронизацию всех станций сети.
Среда физического уровня
Среда физического уровня (Physical Layer Medium — PMD) определяет все атрибуты среды передачи, а именно:
 Тип среды
10
 Амплитуду сигнала передачи
 Допустимую частоту появления ошибок
 Типы физических разъемов
Выводы
Технология FDDI первой использовала волоконно-оптический кабель в локальных сетях, а также работу на скорости
100 Мбит/с.
Существует значительная преемственность между технологиями Token Ring и FDDI: для обеих характерны кольцевая
топология и маркерный метод доступа.
Технология FDDI является наиболее отказоустойчивой технологией локальных сетей. При однократных отказах
кабельной системы или станции сеть, за счет «сворачивания» двойного кольца в одинарное, остается вполне
работоспособной.
Маркерный метод доступа FDDI работает по-разному для синхронных (Синхронная передача данных - передача
данных, базирующаяся на согласовании таймеров передающего и принимающего устройств. При этом биты передаются
кадрами. Для начала синхронизации и периодической проверки ее точности используются специальные символы.
Передача прекращается по окончании блока и начинается при поступлении нового блока.) и асинхронных (Асинхронная
передача данных - передача данных, при которой интервалы времени между направляемыми блоками данных не
являются постоянными. Для выделения в потоке данных блоков в начале и конце каждого из них записываются
старт/стопные биты. При асинхронной передаче передатчик и приемник данных работают не зависимо друг от друга.)
кадров (тип кадра определяет станция). Для передачи синхронного кадра станция всегда может захватить пришедший
маркер на фиксированное время. Для передачи асинхронного кадра станция может захватить маркер только в том случае,
когда маркер выполнил оборот по кольцу достаточно быстро, что говорит об отсутствии перегрузок кольца. Такой метод
доступа, во-первых, отдает предпочтение синхронным кадрам, а во-вторых, регулирует загрузку кольца, притормаживая
передачу несрочных асинхронных кадров.
В качестве физической среды технология FDDI использует волоконно-оптические кабели и UTP(витая пара)
категории 5 (этот вариант физического уровня называется TP-PMD).
Максимальное количество станций двойного подключения в кольце — 500, максимальный диаметр двойного кольца
— 100 км. Максимальные расстояния между соседними узлами для многомодового кабеля равны 2 км, для витой пары
UPT категории 5 — 100 м, а для одномодового оптоволокна зависят от его качества.

11. Беспроводные сети. Стандарт IEEE 802.11.


IEEE 802.11 — набор стандартов связи, для коммуникации в беспроводной локальной сетевой зоне частотных
диапазонов 2.4, 3.6 и 5 Ггц.
Пользователям более известен по названию Wi-Fi, фактически являющийся брендом, предложенным и продвигаемым
организацией Wi-Fi Alliance. Получил широкое распространение благодаря развитию в мобильных электронно-
вычислительных устройствах: КПК и ноутбуков.
Изначально стандарт IEEE 802.11 предполагал возможность передачи данных по радиоканалу на скорости не более 1
Мбит/с и опционально на скорости 2 Мбит/с. Один из первых высокоскоростных стандартов беспроводных сетей —
IEEE 802.11a - определяет скорость передачи уже до 54 Мбит/с. Рабочий диапазон стандарта 5ГГц.
Вопреки своему названию, принятый в 1999 году стандарт IEEE 802.11b не является продолжением стандарта 802.11a,
поскольку в них используются различные технологии: DSSS (точнее, его улучшенная версия HR-DSSS) в 802.11b против
OFDM в 802.11a. Стандарт предусматривает использование нелицензируемого диапазона частот 2,4 ГГц.
Продукты стандарта IEEE 802.11b, поставляемые разными изготовителями, тестируются на совместимость и
сертифицируются организацией Wireless Ethernet Compatibility Alliance (WECA), которая в настоящее время больше
известна под названием Wi-Fi Alliance. Совместимые беспроводные продукты, прошедшие испытания по программе
«Альянса Wi-Fi», могут быть маркированы знаком Wi-Fi.
В настоящее время IEEE 802.11b — самый распространѐнный стандарт, на базе которого построено большинство
беспроводных локальных сетей.
Проект стандарта IEEE 802.11g был утверждѐн в октябре 2002 г. Этот стандарт предусматривает использование
диапазона частот 2,4 ГГц, обеспечивая скорость передачи 54 Мбит/с и превосходя, таким образом, ныне действующий
стандарт IEEE 802.11b, который обеспечивает скорость передачи 11 Мбит/с. Кроме того, он гарантирует обратную
совместимость со стандартом 802.11b. Обратная совместимость стандарта IEEE 802.11g может быть реализована в
режиме модуляции DSSS, и тогда скорость передачи будет ограничена одиннадцатью мегабитами в секунду либо в
режиме модуляции OFDM, при котором скорость составляет 54 Мбит/с. Таким образом, данный стандарт является
наиболее приемлемым при построении беспроводных сетей.
Список возможных стандартов
Вообще их очень много, но…
 IEEE 802.11 — Изначальный 1 Мбит/с и 2 Мбит/c, 2,4 ГГц и ИК стандарт (1997)
 IEEE 802.11a — 54 Мбит/c, 5 ГГц стандарт (1999, выход продуктов в 2001)
 IEEE 802.11b — Улучшения к 802.11 для поддержки 11 Mbit/s и 5.5 MB/s (1999)
 IEEE 802.11c — Процедуры операций с мостами; включен в стандарт IEEE 802.1D (2001)
 IEEE 802.11g — 54 Мбит/c, 2,4 ГГц стандарт (обратная совместимость с b) (2003)
 IEEE 802.11n — Увеличение скорости передачи данных (300 Мбит/c). 2,4-2,5 или 5 ГГц. Обратная совместимость
с 802.11a/b/g . Особенно распространѐн на рынке в США в устройствах Cisco и Apple.
11
12. Протокол IP. Классовая модель адресации сети.
IP (англ. Internet Protocol — межсетевой протокол) — маршрутизируемый сетевой протокол, основа стека протоколов
TCP/IP. Существует несколько версий протокола IP, отражающих изменение требований к функциям с развитием сети
Интернет. В настоящее время в качестве стандарта используется версия 4, хотя постепенно внедряется версия 6. В
данном разделе рассматриваются технологические решения стандартной версии 4.
Для выполнения своих функций протокол определяет свой собственный формат пакета.
Основными информационными полями заголовка пакета являются:
1. IP-адреса отправителя и получателя – предназначены для идентификации отправителя и получателя (см. IP-
адресация);
2. Время жизни пакета (Time To Live, TTL) - определяет время, которое IP-пакет может находиться в сети, и
предназначено для предотвращения "захламления" сети "заблудившимися пакетами";
3. поля, предназначенные для фрагментации пакетов
4. поля, предназначенные для управления обработкой пакета (длина пакета и заголовка, контрольная сумма заголовка,
тип обслуживания и т.д.).
С точки зрения протокола IP, сеть рассматривается как логическая совокупность взаимосвязанных объектов, каждый
из которых представлен уникальным IP-адресом, называемых узлами (IP-узлами) или хостами (host). Ключевым здесь
является слово "логическая", поскольку одно и тоже физическое устройство (компьютер, маршрутизатор и др.) может
иметь несколько IP-адресов, т.е. соответствовать нескольким узлам логической сети. Обычно такая ситуация возникает,
если физическое устройство имеет несколько устройств передачи данных (сетевых адаптеров или модемов), поскольку
для каждого из них должен быть настроен как минимум один уникальный IP-адрес. Хотя нередко компьютеру (или
другому устройству), имеющему один сетевой адаптер или модем, может быть присвоено несколько IP-адресов.
Если физическое устройство имеет несколько IP-адресов, то говорят, что оно имеет несколько интерфейсов, т.е.
несколько "логических подключений" к сети.
Протокол IP (RFC 791) используется для негарантированной доставки данных (разделяемых на так называемые
пакеты) от одного узла сети к другому. Это означает, что на уровне этого протокола (третий уровень сетевой модели OSI)
не даѐтся гарантий надѐжной доставки пакета до адресата. В частности, пакеты могут прийти не в том порядке, в котором
были отправлены, продублироваться (когда приходят две копии одного пакета; в реальности это бывает крайне редко),
оказаться повреждѐнными (обычно повреждѐнные пакеты уничтожаются) или не прибыть вовсе. Гарантии безошибочной
доставки пакетов дают протоколы более высокого (транспортного) уровня сетевой модели OSI — например, TCP —
которые IP используют в качестве транспорта.
Протокол IP (Internet Protocol) входит в состав стека протоколов TCP/IP и является основным протоколом сетевого
уровня, использующимся в Интернет и обеспечивающим единую схему логической адресации устройств в сети и
маршрутизацию данных
IP-адрес – это уникальный числовой адрес, однозначно идентифицирующий узел, группу узлов или сеть. IP-адрес
имеет длину 4 байта и обычно записывается в виде четырех чисел (так называемых «октетов»), разделенных точками –
W.X.Y.Z , каждое из которых может принимать значения в диапазоне от 0 до 255, например, 213.128.193.154.
Существует 5 классов IP-адресов – A, B, C, D, E. Принадлежность IP-адреса к тому или иному классу определяется
значением первого октета (W). Ниже показано соответствие значений первого октета и классов адресов.
Класс IP-
Диапазон первого октета
адреса
A 1-126
B 128-191
C 192-223
D 224-239
E 240-247

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

Преимущества двухуровневой схемы очевидны: она позволяет, во-первых, адресовать целиком отдельные сети внутри
составной сети, что необходимо для обеспечения маршрутизации, а во-вторых – присваивать узлам номера внутри одной
сети независимо от других сетей. Естественно, что компьютеры, входящие в одну и ту же сеть должны иметь IP-адреса с
одинаковым номером сети.
В случае если два компьютера имеют IP-адреса с разными номерами сетей (даже если они принадлежат одной
физической сети), то они не смогут общаться друг с другом напрямую: для их взаимодействия необходим маршрутизатор
IP-адреса разных классов отличаются разрядностью номеров сети и узла, что определяет их возможный диапазон
значений. Следующая таблица отображает основные характеристики IP-адресов классов A,B и C.

Характеристика
Клас Возможное Возможное
Номер сети Номер узла
с количество сетей количество узлов

12
A W X.Y.Z 126 16 777 214
B W.X Y.Z 16 384 65 534
C W.X.Y Z 2 097 151 254

Особые адреса
Запись адреса сети в целом Широковещательный адрес в сети
W.0.0.0 W.255.255.255
W.X.0.0 W.X.255.255
W.X.Y.0 W.X.Y.255

Например, IP-адрес 213.128.193.154 является адресом класса C, и принадлежит узлу с номером 154, расположенному в
сети 213.128.193.0.
Схема адресации, определяемая классами A, B, и C, позволяет пересылать данные либо отдельному узлу, либо всем
компьютерам отдельной сети (широковещательная рассылка). Однако существует сетевое программное обеспечение,
которому требуется рассылать данные определенной группе узлов, необязательно входящих в одну сеть. Для того чтобы
программы такого рода могли успешно функционировать, система адресации должна предусматривать так называемые
групповые адреса. Для этих целей используются IP-адреса класса D.
Для более гибкого определения границ между разрядами номеров сети и узла внутри IP-адреса используются так
называемые маски подсети. Маска подсети – это 4-байтовое число специального вида, которое используется совместно с
IP-адресом. "Специальный вид" маски подсети заключается в следующем: двоичные разряды маски, соответствующие
разрядам IP-адреса, отведенным под номер сети, содержат единицы, а в разрядах, соответствующих разрядам номера
узла – нули.
Маска подсети обязательно указывается при настройке программного модуля протокола IP на каждом компьютере
вместе с IP-адресом
IP-Маршрутизация – процесс выбора пути для передачи пакета в сети. Под путем (маршрутом) понимается
последовательность маршрутизаторов, через которые проходит пакет по пути к узлу-назначению. IP-маршрутизатор –
это специальное устройство, предназначенное для объединения сетей и обеспечивающее определение пути прохождения
пакетов в составной сети. Маршрутизатор должен иметь несколько IP-адресов с номерами сетей, соответствующими
номерам объединяемых сетей.
В качестве IP-маршрутизатора может быть использован компьютер, системное программное обеспечение которого
позволяет осуществлять IP-маршрутизацию.
13. Протоколы TCP.
TCP ориентирован на соединение и обеспечивает приложениям надежный сервис с гарантированной доставкой
данных, подтверждением приема пакетов, управлением потоком данных, обнаружением и коррекцией ошибок. TCP
предназначен для передачи с побитовой точностью больших объемов данных, например, программных файлов.
Протокол TCP
Все интернет-приложения, например, браузеры, FTP-клиенты, программы для работы с электронной почтой,
используют протокол TCP для чтения больших объемов данных с серверов.
Часто протоколы прикладного уровня передают TCP больше данных, чем вмещает отдельный пакет, поэтому TCP
разбивает данные на несколько сегментов (segments).
К каждому сегменту добавляется собственный заголовок TCP, после чего он передается на сетевой уровень для
передачи в отдельной дейтаграмме. Когда все сегменты достигают целевого компьютера, он восстанавливает из них
исходную последовательность.
Функции полей сообщения TCP таковы.
 Source Port (2 байта) — идентификатор процесса в передающей системе, который сгенерировал информацию в
поле данных.
 Destination Port (2 байта) — идентификатор процесса в принимающей системе, которому предназначается
информация в поле данных.
 Sequence Number (4 байта) — задает положение данных в сегменте относительно всей последовательности.
Acknowledgment Number (4 байта ) — в сообщениях с подтверждением приема это поле задает номер в
последовательности следующего сегмента, ожидаемого принимающей системой.
 Data Offset (4 бита) — количество 4-байтовых слов в заголовке TCP.
 Reserved (6 бит ) — не используется.
 Contro l Bits (6 бит ) — 6 однобитовых флагов, определяющих функцию сообщения. Window (2 байта) —
максимальное число байтов, которое компьютер способен принять от подключенной к нему системы. Checksum (2
байта ) — код CRC (контрольной суммы), вычисленный передающей системой. Целевая система использует его для
обнаружения ошибок в заголовке TCP, данных и частях заголовка IP.
 Urgent Pointer (2 байта) — если задан управляющий бит срочности (URG), в этом поле указано, какие данные в
сегменте получатель должен считать срочными. Options (переменной длины ) — может содержать информацию,
связанную с необязательными параметрами конфигурации TCP. Data (переменной длины ) — может содержать один
сегмент из последовательности, сгенерированной протоколом прикладного уровня.
Порты и сокеты

13
Одна из важнейших функций протокола транспортного уровня в идентификации протокола или процесса,
сгенерировавшего переносимые им данные. В TCP и UDP идентификация осуществляется по номеру порта (port),
который назначен данному процессу организацией IANA (Internet Assigned Numbers Authority). Когда пакет TCP/IP
достигает цели, протокол транспортного уровня, принявший дейтаграмму, считывает номер порта из поля Destination
Port и передает информацию из поля данных программе или протоколу, ассоциированному с этим портом. Всем
основным приложениям Интернета присвоены номера портов. Номера портов (вставить) Адресуя трафик другой системе,
TCP/IP-система использует комбинацию IP-адреса и номера порта, которая называется сокетом (socket). На время связи
с конкретным сервером клиентская программа обычно случайным образом выбирает временный номер порта (ephemeral
port number). IANA контролирует только номера портов в пределах от 1 до 1023, поэтому временные номера портов
принимают значения от 1024 и выше.
Управляющие биты 2
 URG — указывает, что сегмент содержит важные данные. Если этот флаг установлен, принимающая система по
содержимому поляUrgent Pointer определяет, где в поле данных содержится важная информация.
 АСК — указывает, что сообщение является подтверждением приема переданного перед этим сегмента. Если этот
флаг установлен, система, получившая подтверждение, по содержимому поля Acknowledgment Number определяет,
какую часть последовательности она должна передать дальше.
 PSH — указывает, что данные из текущей последовательности принимающая система должна немедленно
переправить процессу, порт которого записан в поле Destination Port, не дожидаясь доставки оставшейся части
последовательности.
 RST — приказывает принимающей системе сбросить соединение TCP и игнорировать все сегменты
последовательности, принятые к этому моменту.
 SYN —- используется для синхронизации значений Sequence Number обеих систем при установке соединения
TCP.
 FIN — указывает на необходимость разорвать соединение TCP.
Установка соединения
Протокол TCP ориентирован на соединение. Это означает, что до начала обмена данными прикладного уровня две
системы должны установить связь между собой — это гарантирует, что оба компьютера существуют, работают без сбоев
и готовы к приему данных. Соединение TCP сохраняется на протяжении всего обмена данными, а затем закрывается
установленным образом. В большинстве случаев соединение TCP устанавливается на время передачи единственного
файла. Процесс установления TCP-соединения называется трехшаговым рукопожатием (three-way handshake) и состоит
из обмена тремя сообщениями, ни одно из которых не содержит данных прикладного уровня. Помимо проверки
существования другого компьютера и его готовности к приему данных, цель этих сообщений состоит в согласовании
нумерации передаваемых сообщений. В начале соединения каждый компьютер выбирает для первого сообщения TCP
начальный номер последовательности (initial sequence number, ISN). Затем с каждым последующим сообщением системы
увеличивают этот номер на 1.
Для установки TCP-соединения используется трехшаговое рукопожатие 3
В сообщении с номером ISN для каждой системы установлен флаг синхронизации (SYN). В начале типичной TCP-
транзакции сообщение SYN с номером ISN в поле Sequence Number посылает клиентская система. Получив это
сообщение, сервер генерирует ответ, который выполняет сразу две функции. Во-первых, за счет установки флага АСК
ответное сообщение подтверждает получение первого клиентского сообщения SYN. Во-вторых, в отклике сервера также
установлен флаг SYN, а в поле Sequence Number указан его номер ISN. Получив это сообщение, клиентская система
генерирует свой собственный отклик с установленным флагом АСК. Как только сервер получил от клиента это
подтверждение, соединение считается установленным и системы готовы обмениваться сообщениями с данными
приложений. Таким образом, соединение TCP на самом деле представляет собой два отдельных соединения, работающих
в противоположных направлениях. TCP является полнодуплексным протоколом: оба соединения устанавливаются и
разрываются независимо друг от друга.
Примечание между двумя TCP-системами устанавливается только логическое соединение. Индивидуальные
сообщения TCP переносятся в IP-дейтаграммах, с использованием служб IP, не ориентированных на соединение.
TCPConnection
В ходе трехшагового рукопожатия с помощью сообщений SYN компьютеры также информируют друг друга о
максимальном размере сегмента (maximum segment size, MSS). По значению MSS для другой системы передающий
компьютер определяет количество данных, которое можно включать в последующие сообщения.
Значение MSS зависит от того, какой протокол канального уровня используется в сети, где находится
соответствующая система. Величина MSS передается в виде 4 байтов, записанных в полях Options заголовков TCP двух
пакетов SYN. Значение этих байтов таково.
• Kind (1 байт) — тип дополнительного параметра. В случае передачи MSS значение равно 2.
• Length (1 байт) — длина дополнительного параметра в байтах. В случае передачи MSS значение равно 4.
• Maximum Segment Size (2 байта) — максимальный размер сегмента для данной системы в байтах.
Передача данных 4
После установки соединения у каждого компьютера есть вся необходимая для передачи прикладных данных
информация. Вот из чего она складывается.
• Номер порта. Клиенту уже известен номер порта сервера, который относится к хорошо известным портам и
необходим для инициализации соединения. В поле Source Port сообщений клиента, адресованных серверу, передается
временный номер порта, который будет подставляться в ответы сервера.
14
• Номер в последовательности. В поле Acknowledgment Number своих сообщений каждая система подставляет номера
в последовательности, предоставленные другой системой.
• MSS. По значению дополнительного параметра MSS системы знают, насколько большими могут быть сегменты
каждой последовательности. Очередность передачи данных зависит от типа приложения. Транзакция между браузером и
Web-сервером обычно начинается с того, что клиент отправляет серверу URL запрашиваемой Web-страницы. В других
случаях начинать транзакцию может и сервер.
Обнаружение ошибок
Ошибки TCP-транзакций можно разделить на две группы: сообщение совсем не достигает адресата или поступает к
нему в испорченном виде. В первом случае отсутствие подтверждения заставляет отправителя повторить передачу. Если
из-за серьезных проблем в сети обмен сообщениями Когда сообщение прибывает по месту назначения, принимающая
система проверяет его целостность, вычисляя контрольную сумму и сравнивая результат со значением в поле Checksum,
которое было рассчитано и подставлено туда отправителем. Если два значения не совпадают, сообщение отбрасывается.
Это очень важный момент.
Управление потоком
Управление потоком (flow control) заключается в том, что целевая си стема TCP-соединения передает системе-
источнику сведения, кото рые позволяют регулировать скорость передачи данных. В каждой системе предусмотрено
некое ограниченное буферное пространство для хранения принимаемой информации. Данные остаются в буфе ре, пока
система не отправит сообщение с подтверждением их при ема. Если система-источник передает данные слишком быстро,
буферы приемника переполняются, и 5 информация начинает теряться. Во избежание этого принимающая система с
помощью поля Window сообщений АСК информирует отправителя о том, сколько буферного пространства доступно в
данный момент времени. Передающая система с помощью величин из полей Window и Acknowledgment Number
определяет, какие данные последовательности ей можно передавать.
Для управления потоком в TCP используется метод скользящего окна
Разрыв соединения
Закончив обмен данными, системы, участвующие в ТСР соединении, разрывают его с помощью управляющих
сообщений, подобных тем, что использовались в трехшаговом рукопожатии. Соединение работает в обоих направлениях,
и потому разорвать соединение должны обе системы. Комбинировать флаги АСК и FIN в одном и том же сообщении
нельзя. Иногда соединение разрывается только в одном направлении. Такое соединение называется полузакрытым (half
close).

14. Система доменных имен. Назначение, применение. Организация пространства имен

CИСТЕМА ДОМЕННЫХ ИМЕН IP-адреса, уникальным образом идентифицирующие узлы сети, не удобны для
запоминания пользователем. Для решения этой проблемы была разработана система доменных имен (Domain Name
System, DNS), позволяющая присваивать узлам сети мнемонические имена, по которым можно определить
принадлежность или функциональное назначение узла. DNS предполагает, что узлы по какому-либо признаку могут
объединяться в логические группы называемые доменами. Домены имеют имена и могут входить в более крупные
домены. Таким образом, формируется иерархическая структура доменов и, соответственно, доменных имен, требующая
определенной организации. Принципы организации такого иерархического пространства имен определены стандартом
DNS.
Следует отметить, что домен - это логическая группа компьютеров, которая может включать в себя узлы независимо
от того, принадлежат ли они одной физической сети или нет, относятся ли их IP адреса к одному классу и т.п.
Таким образом, DNS выполняет две основных функции:
1. организацию иерархического пространства имен;
2. обеспечение разрешения (т.е. поиска соответствия) доменных имен в IP-адреса.
DNS относится к средствам прикладного уровня модели OSI и строится по принципу "клиент-сервер".
В структуре сервиса DNS выделяют следующие компоненты:
1. Информационный ресурс - иерархически организованное пространство доменных имен. Соответствия доменных
имен и IP-адресов описывается в распределенной по специальным узлам сети, называемым серверами имен, базе данных.
Часть иерархического пространства имен, обслуживаемая одним сервером имен и представленная в его локальной базе
данных, называется зоной ответственности (zone of authority).
2. DNS-клиент (resolver) - программный модуль, который обеспечивает выполнение запросов к серверу имен с
целью разрешения доменного имени. Как правило, DNS-клиент входит в состав операционной системы.
3. Сервер имен (name server), или DNS-сервер, - программа, обеспечивающая хранение части распределенной базы
данных соответствий IP-адресов и доменных имен, а также осуществляющая по запросу клиента поиск IP-адреса на
основе предложенного доменного имени.
4. Протокол DNS - протокол взаимодействия DNS-клиентов и DNS-серверов (подробнее см. раздел "Разрешение
доменных имен").
Организация пространства имен
Пространство доменных имен имеет иерархическую структуру. На самом верхнем уровне иерархии располагается
корневой домен, который обычно обозначается точкой ("."). Следующий уровень иерархии составляют домены верхнего,
или первого, уровня (Top Level Domains, TLDs). Каждый домен верхнего уровня включает в себя домены второго уровня
и т.д.

15
Теоретически домен любого уровня может содержать в себе как отдельные узлы, представленные своими именами,
так и домены более низкого уровня (субдомены). Однако, на практике домены, уровень которых ниже третьего,
встречаются крайне редко.
Домены первого уровня
Домены первого уровня делятся на три группы:
 домены общего назначения;
 национальные домены;
 обратный домен.
Первую группу составляют домены общего назначения (Generic TLDs, gTLDs). К этим доменам относятся:

"com" COMmercial, коммерческие организации


"gov" GOVernment, правительственные учреждения США
"int" INTernational Organizations, международные организации
"mil" MILitary, военные организации США
"edu" EDUcational, образовательные проекты и учреждения
"org" ORGanisations, некоммерческие организации или организации, не попадающие в другие
категории
"net" NETwork, сети общего назначения
"info" INFOrmation, домен свободного использования для предоставления информации в Интернет
"biz" Business Organizations, различные организации
"name" домен предназначен для использования частными лицами
"museum" Музеи

Во вторую группу включены национальные домены (Country Code TLDs, ccTLDs). Имя каждого такого домена
состоит из двух символов и представляет собой сокращение названия государства (так называемый "код страны"),
которому принадлежит домен, например, "ru" означает Россия. Список национальных доменов разработан и утвержден
Национальным Институтом Стандартов США (ISO 3166-1).

Третья группа состоит из одного домена с четырехсимвольным именем "arpa", предназначенного для поиска доменного
имени по IP-адресу (обратного разрешения). Часто этот домен называют обратным доменом (reverse domain)
1. Домены общего пользования ("домены типа GENERIC"):
"ac.ru" домен Академии Наук России;
"com.ru" коммерческие организации;
"edu.ru" образовательные проекты и организации;
"net.ru" сети, принадлежащие различным организациям;
"org.ru" некоммерческие организации;
"int.ru" домен для общего использования;
"mil.ru" военные организации и учреждения;
"pp.ru" домен для использования частными лицами.
2. Домены субъектов Российской Федерации ("домены типа GEOGRAPHICAL").
3. Другие домены, имена которых выбираются произвольным образом, например, по имени владельца (имени
человека, названию организации), обобщенной тематике, которой соответствует информация, представленная на узлах
домена и т.п. Например, существует домен второго уровня "fio.ru", закрепленный за Федерацией Интернет Образования.
Аналогично доменам второго уровня структуру доменов более низких уровней определяет администрация
родительского домена. Поэтому не существует какой-либо единой для всех схемы структуризации таких доменов
Правила построения доменных имен
Общие правила построения имен доменов и узлов следующие: во-первых, имя может состоять только из букв
латинского алфавита, цифр и символа "-"(дефис), а, во-вторых, длина имени не может превышать 63 символов.
Кроме того, доменные имена являются нечувствительными к регистру символов, входящих в его состав. Это означает,
что последовательности символов "Com", "COM", "cOm", "com" и т.п. обозначают одно и тоже.

15. Системные утилиты сетевой диагностики: Telnet, Tracert


Tracert.
Утилита tracert позволяет выявлять последовательность шлюзов, через которые проходит IP-пакет на пути к пункту
своего назначения. У этой команды есть опции, в большинстве которые применяются системными администраторами
крайне редко.
Формат команды: tracert имя_машины
Как обычно, имя_машины может быть задано в символической или числовой форме. Выходная информация
представляет собой список машин, начиная с первого шлюза и кончая пунктом назначения. Кроме того, показано полное
время прохождения каждого шлюза.
Пример:
16
tracert peak.mountin.net
Трассировка маршрута к peak.mountin.net [207.227.119.2] с максимальным числом прыжков 30:
№ Пакет 1 Пакет 2 Пакет 3 DNS-имя узла и (или) его IP-адрес
1 <10 мс <10 мс <10 мс SLAVE [192.168.0.1]
2 <10 мс <10 мс <10 мс gw.b10.tpu.edu.ru [195.208.164.2]
3 <10 мс <10 мс <10 мс 195.208.177.62
4 <10 мс <10 мс <10 мс News.runnet.tomsk.ru [195.208.160.4]
5 <10 мс <10 мс 16 ms ra.cctpu.tomsk.su [195.208.161.34]
6 781 ms 563 ms 562 ms spb-2-gw.runnet.ru [194.85.33.9]
7 547 ms 594 ms 578 ms spb-gw.runnet.ru [194.85.36.30]
8 937 ms 563 ms 562 ms 20.201.atm0-201.ru-gw.run.net [193.232.80.105]
9 1125 ms 563 ms 547 ms fi-gw.nordu.net [193.10.252.41]
10 906 ms 1016 ms 578 ms s-gw.nordu.net [193.10.68.41]
11 844 ms 828 ms 610 ms dk-gw2.nordu.net [193.10.68.38]
12 578 ms 610 ms 578 ms sl-gw10-cop-9-0.sprintlink.net [80.77.65.25]
13 610 ms 968 ms 594 ms sl-bb20-cop-8-0.sprintlink.net [80.77.64.37]
14 641 ms 672 ms 656 ms sl-bb21-msq-10-0.sprintlink.net [144.232.19.29]
15 671 ms 704 ms 687 ms sl-bb21-nyc-10-3.sprintlink.net [144.232.9.106]
16 985 ms 703 ms 765 ms sl-bb22-nyc-14-0.sprintlink.net [144.232.7.102]
17 719 ms 734 ms 688 ms 144.232.18.206
18 891 ms 703 ms 734 ms p1-0.nycmny1-nbr1.bbnplanet.net [4.24.8.161]
19 719 ms 985 ms 703 ms so-6-0-0.chcgil2-br2.bbnplanet.net [4.24.4.17]
20 688 ms 687 ms 703 ms so-7-0-0.chcgil2-br1.bbnplanet.net [4.24.5.217]
21 719 ms 703 ms 672 ms p1-0.chcgil2-cr9.bbnplanet.net [4.24.8.110]
22 687 ms 719 ms 687 ms p2-0.nchicago2-cr2.bbnplanet.net [4.0.5.242]
23 781 ms 703 ms 672 ms p8-0-0.nchicago2-core0.bbnplanet.net [4.0.6.2]
24 672 ms 703 ms 687 ms fa0.wcnet.bbnplanet.net [207.112.240.102]
25 734 ms 687 ms 688 ms core0-s1.rac.cyberlynk.net [209.100.155.22]
26 1188 ms * 890 ms Peak.mountin.net [207.227.119.2]
Трассировка завершена.
Символ * означает потерю посланного пакета. Пакеты посылаются по три на каждый узел. Если узел не отвечает, то
при превышении интервала ожидания ответа выдается сообщение «Превышен интервал ожидания для запроса».
Интервал ожидания ответа может быть изменен с помощью опции –w команды tracert.
Команда tracert работает путем установки поля времени жизни (числа переходов) исходящего пакета таким образом,
чтобы это время истекало до достижения пакетом пункта назначения. Когда время жизни истечет, текущий шлюз
отправит сообщение об ошибке на машину-источник. Каждое приращение поля времени жизни позволяет пакету пройти
на один шлюз дальше.
Команда tracert посылает для каждого значения поля времени жизни три пакета. Если промежуточный шлюз
распределяет трафик по нескольким маршрутам, то эти пакеты могут возвращаться разными машинами. В этом случае на
печать выводятся они все. Некоторые системы не посылают уведомлений о пакетах, время жизни которых истекло, а
некоторые посылают уведомления, которые поступают обратно на машину-источник только после того, как истекло
время их ожидания командой tracert. Эти шлюзы обозначаются рядом звездочек. Даже если конкретный шлюз
определить нельзя, tracert чаще всего сможет увидеть следующие за ним узлы маршрута.
Примечание:
Для вывода информации в файл используйте символ перенаправления потока вывода «>». Данный символ справедлив и
для утилит ping и tracert.
Пример:
tracert 195.208.164.1 > tracert.txt
Отчет о трассировке маршрута до указанного узла будет помещен в файл tracert.txt.
Telnet
Говоря коротко, клиент-серверная программа Telnet (Telecommunications Network Protocol), запускаемая из командной
строки, обеспечивает возможность удаленного управления компьютерами в сети. Пользователь запускает на локальном
компьютере клиент Telnet и подключается с его помощью к Telnet-серверу на другом компьютере. Подключившись,
пользователь может выполнять на удаленном компьютере команды и просматривать результаты их выполнения. Важно
отличать такой способ доступа от обычного удаленного доступа к сети. Если Вы используете подключение Telnet для
запуска программы, находящейся на удаленном компьютере, она действительно работает на удаленном компьютере. А
вот если Вы подключаетесь к диску на другом компьютере средствами Windows и запускаете программу с этого диска,
она работает на Вашем компьютере.
Telnet изначально разрабатывалась для систем UNIX. И по сей день эта программа остается важнейшим инструментом
в администрировании сетей UNIX. Клиент Telnet есть во всех ОС Windows. В Windows 2000 он запускается
исключительно из командной строки, а и Windows NT/Me/98/95 включена его полуграфическая версия (рис. I0.9). Сервер
Telnet имеется только в составе Windows 2000 и более поздних версий. Это связано с тем, что Windows — графическая
ОС, и потому Вы мало что сможете сделать, подключившись к серверу Windows с помощью текстового клиента,
подобного Telnet.

17
16. Коммутация в глобальных сетях. Аналоговые выделенные линии.
Аналоговые выделенные линии
Типы аналоговых выделенных линий
Выделенные аналоговые каналы предоставляются пользователю с 4-проводным или 2-проводным окончанием. На
каналах с 4-проводным окончанием организация полнодуплексной связи, естественно, выполняется более простыми
способами.
Выделенные линии могут быть разделены на две группы по другому признаку наличию промежуточной аппаратуры
коммутации и усиления или ее отсутствию.
Первую группу составляют так называемые нагруженные линии, проходящие через оборудование частотного
уплотнения (FDM-коммутаторы и мультиплексоры), расположенное, например, на АТС. Телефонные компании обычно
предоставляют в аренду два типа выделенных каналов: канал тональной частоты с полосой пропускания 3,1 кГц и
широкополосный канал с полосой 48 кГц, который представляет собой базовую группу из 12 каналов тональной частоты.
Широкополосный канал имеет границы полосы пропускания от 60 до 108 кГц. Так как широкополосный канал
используется для связи АТС между собой, то получение его в аренду более проблематично, чем канала тональной
частоты.
Выделенные нагруженные каналы также классифицируются на категории в зависимости от их качества. От категории
качества зависит и арендная месячная плата за канал.
Вторая группа выделенных линий — это ненагруженные физические проводные линии. Они могут кроссироваться, но
при этом не проходят через аппаратуру частотного уплотнения. Часто такие линии используются для связи между близко
стоящими зданиями. Разветвленные сети каналов, представляющих собой ненагруженные линии, используются,
например, муниципальными службами (энергонадзора, водопровода, пожарной охраны и др.) для передачи
технологической информации. При небольшой длине ненагруженной выделенной линии она обладает достаточно
широкой полосой пропускания, иногда до 1 МГц, что позволяет передавать импульсные немодулированные сигналы. На
первый взгляд может показаться, что ненагруженные линии не имеют отношения к глобальным сетям, тик как их можно
использовать при протяженности максимум в несколько километров, иначе затухание становится слишком большим для
передачи данных. Однако в последнее время именно этот вид выделенных каналов привлекает пристальное внимание
разработчиков средств удаленного доступа. Дело в том, что телефонные абонентские окончания — отрезок витой пары
от АТС до жилого или производственного здания — представляют собой именно такой вид каналов. Широкая (хотя и
заранее точно неизвестная) полоса пропускания этих каналов позволяет развивать на коротком отрезке линии высокую
скорость — до нескольких мегабит в секунду. В связи с этим до ближайшей АТС данные от удаленного компьютера или
сети можно передавать гораздо быстрее, чем по каналам тональной частоты, которые начинаются в данной АТС.
Использование выделенных ненагруженных каналом подробно рассматривается в разделе 6.5, посвященном удаленному
доступу.
Модемы для работы на выделенных каналах
Для передачи данных по выделенным нагруженным аналоговым линиям используются модемы, работающие на
основе методов аналоговой модуляции сигнала, рассмотренных и главе 2. Протоколы и стандарты модемов определены в
рекомендациях ССIТТ серии V. Эти стандарты делятся на три группы:
• стандарты, определяющие скорость передачи данных и метод кодировании;
• стандарты исправления ошибок;
• стандарты сжатия данных.
Эти стандарты определяют работу модемов как для выделенных, так и комму тируемых линий. Модемы можно также
классифицировать в зависимости от тога какой режимы работы они поддерживают (асинхронный, синхронный или оба
эти! режима), а также к какому окончанию (4-проводному или 2-проводному) они подключены.
В отношении режима работы модемы делятся на три группы:
• модемы, поддерживающие только асинхронный режим работы; /
• модемы поддерживающие асинхронный и синхронный режимы работы;
• модемы, поддерживающие только синхронный режим работы.
Модемы, работающие только в асинхронном режиме, обычно поддержи пит низкую скорость передачи данных — до
1200 бит/с. Так, модемы, работающие по стандарту V.23, могут обеспечивать скорость 1200 бит/с на 4-проводной
выделен ной линии в дуплексном асинхронном режиме, а по стандарту V.21 — на скорости 300 бит/с по 2-проводной
выделенной линии также в дуплексном асинхронно» режиме. Дуплексный режим на 2-проводном окончании
обеспечивается частотам разделением канала. Асинхронные модемы представляют наиболее дешевый BIIJ модемов, так
как им не требуются высокоточные схемы синхронизации сигналов на кварцевых генераторах. Кроме того, асинхронный
режим работы неприхотлив к качеству линии.
Модемы, работающие только в синхронном режиме, могут подключаться только К 4-проводному окончанию.
Синхронные модемы используют для выделения сигнала высокоточные схемы синхронизации и поэтому обычно
значительно дороже асинхронных модемов. Кроме того, синхронный режим работы предъявляет высокие требования к
качеству линии.
Для выделенного канала тональной частоты с 4-проводным окончанием разработано достаточно много стандартов
серии V. Все они поддерживают дуплексный режим:
 V.26 — скорость передачи 2400 бит/с;
 V.27 — скорость передачи 4800 бит/с;

18
 V.29 — скорость передачи 9600 бит/с;
 V.32 ter — скорость передачи 19 200 бит/с.
Для выделенного широкополосного канала 60-108 кГц существуют три стан дирта:
 V.35 — скорость передачи 48 Кбит/с;
 V.36 — скорость передачи 48-72 Кбит/с;
 V.37 — скорость передачи 96-168 Кбит/с.
Коррекция ошибок в синхронном режиме работы обычно реализуется по протоколу HDLC по допустимы и
устаревшие протоколы SDLC и BSC компании IBM. Модемы стандартов V.35, V.36 и V.37 используют для связи с DTЕ
интерфейс V.35.
Модемы, работающие в асинхронном и синхронном режимах, являются наиболее универсальными устройствами.
Чаще всего они могут работать как по выделенным, так и по коммутируемым каналам, обеспечивая дуплексный режим
работы. На выделенных каналах они поддерживают в основном 2-проводное окончание и гораздо реже — 4-проводное.
Для асинхронно-синхронных модемов разработан ряд стандартов серии V:
• V.22 — скорость передачи до 1200 бит/с;
• V.22 bis — скорость передачи до 2400 бит/с;
• V.26 ter — скорость передачи до 2400 бит/с;
• V.32 — скорость передачи до 9600 бит/с;
• V.32 bis — скорость передачи 14 400 бит/с;
• V.34 — скорость передачи до 28,8 Кбит/с;
• V.34+— скорость передачи до 33,6 Кбит/с.
Стандарт V.34, принятый летом 1994 года, знаменует новый подход к передача данных по каналу тональной частоты.
Этот стандарт разрабатывался CCITT довольно долго — с 1990 года. Большой вклад в его разработку внесла компании
Motorola, которая является одним из признанных лидеров этой отрасли. Стандарт V.34 разрабатывался для передачи
информации по каналам практически любого качества. Особенностью стандарта являются процедуры динамической
адаптации к изменениям характеристик канала во время обмена информацией. Адаптации осуществляется в ходе сеанса
связи — без прекращения и без разрыва установленного соединения.
Основное отличие V.34 от предшествующих стандартов заключается в том, что в нем определено 10 процедур, по
которым модем после тестирования линии выбирает свои основные параметры: несущую и полосу пропускания (выбор
проводится из 11 комбинаций), фильтры передатчика, оптимальный уровень передачи и другие. Первоначальное
соединение модемов проводится по стандарту V.21 на минимальной скорости 300 бит/с, что позволяет работать на самых
плохих линиях, Для кодирования данных используются избыточные коды квадратурной амплитудной модуляции QAM.
Применение адаптивных процедур сразу позволило поднять скорость передачи данных более чем в 2 раза по сравнению с
предыдущим стандартом — V.32 bis.
Принципы адаптивной настройки к параметрам линии были развиты в стандарте V.34+, который является
усовершенствованным вариантом стандарта V.34, Стандарт V.34+ позволил несколько повысить скорость передачи
данных за счѐт усовершенствования метода кодирования. Один передаваемый кодовый символ несет в новом стандарте в
среднем не 8,4 бита, как в протоколе V.34, а 9,8. При максимальной скорости передачи кодовых символов в 3429 бод (это
ограничение П{М одолеть нельзя, так как оно определяется полосой пропускания канала тональной частоты)
усовершенствованный метод кодирования дает скорость передачи данных в 33,6 Кбит/с (3429 х 9,8 = 33604). Правда,
специалисты отмечают, что даже в Америке только 30 % телефонных линий смогут обеспечить такой низкий уровень
помех, чтобы модемы V.34+ смогли работать на-максимальной скорости. Тем не менее модемы стандарта V.34+ имеют
преимущества по сравнению с модемами V.M4 даже на зашумленных линиях — они лучше «держат» связь, чем модемы
V.34.
Протоколы V.34 и V.34+ позволяют работать на 2-проводной выделенной линии в дуплексном режиме. Дуплексный
режим передачи в стандартах V.32, V..44, V.34+ обеспечивается не с помощью частотного разделения канала, а с
помощью одновременной передачи данных в обоих направлениях. Принимаемый сигнал определяется вычитанием с
помощью сигнальных процессоров (DSP) передаваемого сигнала из общего сигнала в канале. Для этой операции
используются также процедуры эхоподавления, так как передаваемый сигнал, отражаясь от ближнего и дальнего концов
канала, вносит искажения в общий сигнал (метод передачи данных, описанный в проекте стандарта 802.3ab,
определяющего работу технологии Gigabit Ethernet на витой паре категории 5, взял многое из стандартов V.32-V.34+).
На высокой скорости модемы V.32-V.34+ фактически всегда используют в канале связи синхронный режим. При этом
они могут работать с DTE как по асинхронному интерфейсу, так и по синхронному. В первом случае модем преобразует
асинхронные данные в синхронные.
Модемы различаются не только поддерживаемыми протоколами, но и определенной ориентацией на область
применения. Различают профессиональные модемы, которые предназначены для работы в модемных пулах
корпоративных сетей, и модемы для применения в небольших офисах или на дому.
Профессиональные модемы отличаются высокой надежностью, способностью устойчиво работать в непрерывном
режиме и поддержкой средств удаленного централизованного управления. Обычно система управления модемными
стойками поставляется отдельно и оправдывает себя в условиях большого предприятия. Стандарт V.34 выделяет в общей
полосе пропускания линии отдельную полосу для управления модемом по тому же каналу, по которому передаются и
пользовательские данные.

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

17. Коммутация в глобальных сетях. Цифровые выделенные линии.


Цифровые выделенные линии образуются путем постоянной коммутации в первичных сетях, построенных на базе
коммутационной аппаратуры, работающей на принципах разделения канала во времени - TDM.
Существуют два поколения технологий цифровых первичных сетей:
технология плезиохронной («плезио» означает «почти», то есть почти синхронной) цифровой иерархии (Plesiochronic
Digital Hierarchy, PDH);
технология синхронной цифровой иерархии (Synchronous Digital Hierarchy, SDH). В Америке технологии SDH
соответствует стандарт SONET.
1. Технология плезиохронной цифровой иерархии PDH
В технологии FDM для одновременной передачи данных 12 или 60 абонентских каналов использовалась витая пара, а
для повышения скорости связи приходилось прокладывать кабели с большим количеством пар проводов или более
дорогие коаксиальные кабели. Кроме того, метод частотного уплотнения высоко чувствителен к различного рода
помехам, которые всегда присутствуют в территориальных кабелях, да и высокочастотная несущая речи сама создает
помехи в приемной аппаратуре, будучи плохо отфильтрована.
Для решения этой задачи была разработана аппаратура Т1, которая позволяла в цифровом виде мультиплексировать,
передавать и коммутировать (на постоянной основе) данные 24 абонентов. Каждый абонентский канал образовывал
цифровой поток данных 64 Кбит/с. Для соединения магистральных АТС каналы Т1 представляли собой слишком слабые
средства мультиплексирования, поэтому в технологии была реализована идея образования каналов с иерархией
скоростей. Четыре канала типа Т1 объединяются в канал следующего уровня цифровой иерархии - Т2, передающий
данные со скоростью 6,312 Мбит/с, а семь каналов Т2 дают при объединении канал ТЗ, передающий данные со
скоростью 44,736 Мбит/с. Аппаратура T1, T2 и ТЗ может взаимодействовать между собой, образуя иерархическую сеть с
магистральными и периферийными каналами трех уровней скоростей.
С середины 70-х годов выделенные каналы, построенные на аппаратуре T1, стали сдаваться телефонными компаниями
в аренду на коммерческих условиях, перестав быть внутренней технологией этих компаний. Сети T1, а также более
скоростные сети T2 и ТЗ позволяют передавать не только голос, но и любые данные, представленные в цифровой форме,
- компьютерные данные, телевизионное изображение, факсы и т. п.
Американская версия распространена сегодня кроме США также в Канаде и Японии (с некоторыми различиями), а в
Европе применяется международный стандарт. Аналогом каналов Т в международном стандарте являются каналы типа
El, E2 и ЕЗ с другими скоростями - соответственно 2,048 Мбит/с, 8,488 Мбит/с и 34,368 Мбит/с.
Несмотря на различия американской и международных версий технологии цифровой иерархии, для обозначения
иерархии скоростей принято использовать одни и те же обозначения - DSn (Digital Signal n). В табл. 6.2 приводятся
значения для всех введенных стандартами уровней скоростей обеих технологий.
Иерархия цифровых скоростей

20
На практике в основном используются каналы Т1/Е1 и ТЗ/ЕЗ.
Мультиплексор Т1 обеспечивает передачу данных 24-х абонентов со скоростью 1,544 Мбит/с в кадре, имеющем
достаточно простой формат. В этом кадре последовательно передается по одному байту каждого абонента, а после 24-х
байт вставляется один бит синхронизации.
Сегодня мультиплексоры и коммутаторы первичной сети работают на централизованной тактовой частоте,
распределяемой из одной точки всей сети. Однако принцип формирования кадра остался, поэтому биты синхронизации в
кадре по-прежнему присутствуют. Суммарная скорость пользовательских каналов составляет 24 х 64 = 1,536 Мбит/с, а
еще 8 Кбит/с добавляют биты синхронизации.
В аппаратуре Т1 назначение восьмого бита каждого байта в кадре разное и зависит от типа передаваемых данных и
поколения аппаратуры.
При передаче голоса в сетях Т1 все 24 канала являются абонентскими, поэтому управляющая и контрольная
информация передается восьмым (наименее значащим) битом замеров голоса.
При передаче компьютерных данных канал Т1 предоставляет для пользовательских данных только 23 канала, а 24-й
канал отводится для служебных целей, в основном - для восстановления искаженных кадров. Для одновременной
передачи как голосовых, так и компьютерных данных используются все 24 канала, причем компьютерные данные
передаются со скоростью 56 Кбит/с. Техника использования восьмого бита для служебных целей получила название
«кражи бита» (bit robbing).
При мультиплексирования 4-х каналов Т1 в один канал Т2 между кадрами DS-1 по-прежнему используется один бит
синхронизации, а кадры DS-2 (которые состоят из 4-х последовательных кадров DS-1) разделяются 12 служебными
битами, которые предназначены не только для разделения кадров, но и для их синхронизации. Соответственно, кадры
DS-3 состоят из 7 кадров DS-2, разделенных служебными битами.
Пользователь может арендовать несколько каналов 64 Кбит/с (56 Кбит/с) в канале Т1/Е1. Такой канал называется
«дробным» (fractional) каналом Т1/Е1. В этом случае пользователю отводится несколько тайм - слотов работы
мультиплексора.
Физический уровень технологии PDH поддерживает различные виды кабелей: витую пару, коаксиальный кабель и
волоконно-оптический кабель. Основным вариантом абонентского доступа к каналам Т1/Е1 является кабель из двух
витых пар с разъемами RJ-48 для организации дуплексного режима передачи данных со скоростью 1,544/2,048 Мбит/с.
PDH обладает несколькими недостатками:
1. сложность операций мультиплексирования и демультиплексирования пользовательских данных. Причина -
отсутствии полной синхронности потоков данных при объединении низкоскоростных каналов в более
высокоскоростные. В результате для извлечения пользовательских данных из объединенного канала необходимо
полностью демультиплексировать кадры этого объединенного канала. Например, если требуется получить данные
одного абонентского канала 64 Кбит/с из кадров канала ТЗ, необходимо произвести демультиплексирование этих кадров
до уровня кадров Т2, затем - до уровня кадров Т1, а затем демультиплексировать и сами кадры Т1. Для преодоления
этого недостатка в сетях PDH реализуют некоторые дополнительные приемы, уменьшающие количество операций
демультиплексирования при извлечения пользовательских данных из высокоскоростных каналов.
2. отсутствие развитых встроенных процедур контроля и управления сетью. Служебные биты дают мало
информации о состоянии канала, не позволяют его конфигурировать и т. п. Нет в технологии и процедур поддержки
отказоустойчивости, которые очень полезны для первичных сетей, на основе которых строятся ответственные
междугородные и международные сети.
3. низкие по современным понятиям скорости иерархии PDH, ее иерархия скоростей заканчивается уровнем 139
Мбит/с.
Все эти недостатки устранены в новой технологии первичных цифровых сетей, получившей название синхронной
цифровой иерархии - Synchronous DigitalHierarchy, SDH.
2. Технология синхронной цифровой иерархии SONET/SDH
Технология синхронной цифровой иерархии первоначально была разработана компанией Bellcore под названием
«Синхронные оптические сети» - Synchronous Optical NETs, SONET. Первый вариант стандарта появился в 1984 году.
Затем эта технология была стандартизована комитетом T1 ANSI. Международная стандартизация технологии проходила
под эгидой Европейского института телекоммуникационных стандартов (ETSI) и CCITT совместно с ANSI и ведущими
телекоммуникационными компаниями Америки, Европы и Японии. Основной целью разработчиков международного
стандарта было создание такой технологии, которая позволяла бы передавать трафик всех существующих цифровых
каналов (как американских Т1 - ТЗ, так и европейских Е1 - ЕЗ) в рамках высокоскоростной магистральной сети на
волоконно-оптических кабелях и обеспечила бы иерархию скоростей, продолжающую иерархию технологии PDH, до
скорости в несколько гигабит в секунду.
В результате длительной работы удалось разработать международный стандарт Synchronous Digital Hierarchy, SDH
(спецификации G.707-G.709), а также доработать стандарты SONET таким образом, что аппаратура и стеки SDH и
SONET стали совместимыми и могут мультиплексировать входные потоки практически любого стандарта PDH - как
американского, так и европейского.
Таблица 6.3. Скорости технологии SONET/SDH

21
В стандарте SDH все уровни скоростей (и, соответственно, форматы кадров для этих уровней) имеют общее название:
STM-n - Synchronous Transport Module level n. В технологии SONET существуют два обозначения для уровней скоростей:
STS-n - Synchronous Transport Signal level n, употребляемое при передаче данных электрическим сигналом, и ОС-n -
Optical Carrier level n, употребляемое при передаче данных световым лучом по волоконно-оптическому кабелю. Форматы
кадров STS и ОС идентичны.
Как видно из таблицы, стандарт SONET начинается со скорости 51,84 Мбит/с, а стандарт SDH - со скорости 155,52
Мбит/с, равной утроенной начальной скорости SONET. Международный стандарт определил начальную скорость
иерархии в 155,52 Мбит/с, чтобы сохранялась стройность и преемственность технологии SDH с технологией PDH - в
этом случае канал SDH может передавать данные уровня DS-4, скорость которых равна 139,264 Мбит/с. Любая скорость
технологии SONET/ SDH кратна скорости STS-1. Некоторая избыточность скорости 155,52 Мбит/с для передачи данных
уровня DS-4 объясняется большими накладными расходами на служебные заголовки кадров SONET/SDH.
Кадры данных технологий SONET и SDH, называемые также циклами, по форматам совпадают, естественно начиная с
общего уровня STS-3/STM-1. Эти кадры обладают весьма большой избыточностью, так как передают большое
количество служебной информации, которая нужна для:
• обеспечения гибкой схемы мультиплексирования потоков данных разных скоростей, позволяющих вставлять
(add) и извлекать (drop) пользовательскую информацию любого уровня скорости, не демультиплексируя весь поток;
• обеспечения отказоустойчивости сети;
• поддержки операций контроля и управления на уровне протокола сети;
• синхронизации кадров в случае небольшого отклонения частот двух сопрягаемых сетей.

Устройства, которые могут входить в сеть технологии SONET/ SDH.


• Терминальные устройства (Terminal, Т), называемые также сервисными адаптерами (Service Adapter, SA),
принимают пользовательские данные от низкоскоростных каналов технологии PDH (типа Т1/Е1 или ТЗ/ЕЗ) и
преобразуют их в кадры STS-n. (Далее аббревиатура STS-n используется как общее обозначение для кадров
SONET/SDH.)
• Мультиплексоры (Muliplexers) принимают данные от терминальных устройств и мультиплексируют потоки
кадров разных скоростей STS-n в кадры более высокой иерархии STS-m.
• Мультиплексоры «ввода-вывода» (Add-Drop Multiplexers) могут принимать и передавать транзитом поток
определенной скорости STS-n, вставляя или удаляя «на ходу», без полного демультиплексирования, пользовательские
данные, принимаемые с низкоскоростных входов.
• Цифровые кросс-коннекторы (Digital Cross-Connect, DCC) предназначены для мультиплексирования и
постоянной коммутации высокоскоростных потоков STS-n различного уровня между собой. Кросс-коннектор
представляет собой разновидность мультиплексора, основное назначение которого - коммутация высокоскоростных
потоков данных, возможно, разной скорости. Кросс-коннекторы образуют магистраль сети SONET/SDH.
• Регенераторы сигналов, используемые для восстановления мощности и формы сигналов, прошедших
значительное расстояние по кабелю. На практике иногда сложно провести четкую грань между описанными
устройствами, так как многие производители выпускают многофункциональные устройства, которые включают
терминальные модули, модули «ввода-вывода», а также модули кросс-коннекторов.
• Стек протоколов состоит из протоколов 4-х уровней.
• Физический уровень, названный в стандарте фотонным (photonic), имеет дело с кодированием бит информации с
помощью модуляции света. Для кодирования сигнала применяется метод NRZ (благодаря внешней тактовой частоте его
плохие самосинхронизирующие свойства недостатком не являются).
• Уровень секции (section) поддерживает физическую целостность сети. Секцией в технологии называется каждый
непрерывный отрезок волоконно-оптического кабеля, который соединяет пару устройств SONET/SDH между собой,
например мультиплексор и регенератор.
• Уровень линии (line) отвечает за передачу данных между двумя мультиплексорами сети. Протокол этого уровня
работает с кадрами разных уровней STS-n для выполнения различных операций мультиплексирования и
демультиплексирования, а также вставки и удаления пользовательских данных. Таким образом, линией называется поток
кадров одного уровня между двумя мультиплексорами.
• Уровень тракта (path - путь) отвечает за доставку данных между двумя конечными пользователями сети. Тракт
(путь) - это составное виртуальное соединение между пользователями. Протокол тракта должен принять данные,
поступающие в пользовательском формате, например формате Т1, и преобразовать их в синхронные кадры STS-n/STM-
m.
22
Таким образом, кадры STS-n всегда образуют синхронный поток байтов, но с помощью изменения значения
соответствующего указателя можно вставить и извлечь из этого потока байты низкоскоростного канала, не выполняя
полного демультиплексирования высокоскоростного канала.
В технологии SONET/SDH существует гибкая, но достаточно сложная схема использования поля данных кадров STS-n.
Сложность этой схемы в том, что нужно «уложить» в кадр наиболее рациональным способом мозаику из виртуальных
контейнеров разного уровня. Поэтому в технологии SONET/SDH стандартизовано шесть типов виртуальных
контейнеров, которые хорошо сочетаются друг с другом при образовании кадра STS-n. Существует ряд правил, по
которым контейнеры каждого вида могут образовывать группы контейнеров, а также входить в состав контейнеров более
высокого уровня.
Отказоустойчивость сети SONET/SDH встроена в ее основные протоколы. Этот механизм называется автоматическим
защитным переключением - Automatic Protection Switching, APS. Существуют два способа его работы. В первом способе
защита осуществляется по схеме 1:1. Для каждого рабочего волокна (и обслуживающего его порта) назначается
резервное волокно. Во втором способе, называемом 1:n, для защиты n волокон назначается только одно защитное
волокно.
В схеме защиты 1:1 данные передаются как по рабочему, так и по резервному волокну. При выявлении ошибок
принимающий мультиплексор сообщает передающему, какое волокно должно быть рабочим. Обычно при защите 1:1
используется схема двух колец, похожая на двойные кольца FDDI (рис. 6.10), но только с одновременной передачей
данных в противоположных направлениях. При обрыве кабеля между двумя мультиплексорами происходит
сворачивание колец, и, как и в сетях FDDI, из двух колец образуется одно рабочее.

Рис. Использование двойных колец для обеспечения отказоустойчивости сети SONET/SDH


Применение схемы резервирования 1:1 не обязательно требует кольцевого соединения мультиплексоров, можно
применять эту схему и при радиальном подключении устройств, но кольцевые структуры решают проблемы
отказоустойчивости эффективнее - если в сети нет колец, радиальная схема не сможет ничего сделать при обрыве кабеля
между устройствами.
Управление, конфигурирование и администрирование сети SONET/SDH также встроено в протоколы. Служебная
информация протокола позволяет централизованно и дистанционно конфигурировать пути между конечными
пользователями сети, изменять режим коммутации потоков в кросс-коннекторах, а также собирать подробную
статистику о работе сети. Существуют мощные системы управления сетями SDH, позволяющие прокладывать новые
каналы простым перемещением мыши по графической схеме сети.
3. Устройства DSU/CSU для подключения к выделенному каналу
Связь компьютера или маршрутизатора с цифровой выделенной линией осуществляется с помощью пары устройств,
обычно выполненных в одном корпусе или же совмещенных с маршрутизатором. Этими устройствами являются:
устройство обслуживания данных (УОД) и устройство обслуживания канала (УОК). В англоязычной литературе эти
устройства называются соответственно Data Service Unit (DSU) и Channel Service Unit (CSU). DSU преобразует сигналы,
поступающие от DTE (обычно по интерфейсу RS-232C, RS-449 или V.35). DSU выполняет всю синхронизацию,
формирует кадры каналов Т1/Е1, усиливает сигнал и осуществляет выравнивание загрузки канала. CSU выполняет более
узкие функции, в основном это устройство занимается созданием оптимальных условий передачи в линии. Эти
устройства, как и модуляторы-демодуляторы, часто обозначаются одним словом DSU/CSU (рис. 6.12).

23
Рис. Использование DSU/CSU для подключения к цифровой выделенной линии

Протоколы канального уровня для выделенных линий


4. Протокол SLIP
Недостатки:
Протокол SLIP выполняет работу по выделению из последовательности передаваемых по последовательному каналу
бит границ IP-пакета. Протокол не имеет механизмов передачи адресной информации, идентификации типа протокола
сетевого уровня, определения и коррекции ошибок.
В протоколе SLIP нет механизмов, дающих возможность обмениваться адресной информацией. Это ограничение не
позволяет использовать SLIP для некоторых видов сетевых служб.
Отсутствие индикации типа протокола, пакет которого инкапсулируется в SLIP-пакет. Поэтому через
последовательную линию по протоколу SLIP можно передавать трафик лишь одного сетевого протокола - IP.
При работе с реальными телефонными линиями, зашумленными и поэтому искажающими пакеты при пересылке,
требуются процедуры обнаружения и коррекции ошибок. В протоколе SLIP такие процедуры не предусмотрены. Эти
функции обеспечивают вышележащие протоколы: протокол IP проводит тестирование целостности пакета по заголовку
IP, а один из двух транспортных протоколов (UDP или TCP) проверяет целостность всех данных по контрольным
суммам.
5. Протоколы семейства HDLC
Протокол HDLC на самом деле представляет собой семейство протоколов, в которое входят известные протоколы:
LAP-B, образующий канальный уровень сетей Х.25, LAP-D - канальный уровень сетей ISDN, LAP-M - канальный
уровень асинхронно-синхронных модемов, LAP-F - канальный уровень сетей frame relay.
Основные принципы работы протокола HDLC: режим логического соединения, контроль искаженных и потерянных
кадров с помощью метода скользящего окна, управление потоком кадров с помощью команд RNR и RR, а также
различные типы кадров.
Однако сегодня протокол HDLC на выделенных каналах вытеснил протокол «точка-точкам», Point-to-Point Protocol,
PPP.
Дело в том, что одна из основных функций протокола HDLC - это восстановление искаженных и утерянных кадров.
Действительно, применение протокола HDLC обеспечивает снижение вероятности искажения бита (BER) с 10 -3, что
характерно для территориальных аналоговых каналов, до 10-9.
Однако сегодня популярны цифровые каналы, которые и без внешних процедур восстановления кадров обладают
высоким качеством (величина BER составляет10-8-10-9). Для работы по такому каналу восстановительные функции
протокола HDLC не нужны. При передаче по аналоговым выделенным каналам современные модемы сами применяют
протоколы семейства HDLC (синхронные модемы - HDLC, а асинхронно-синхронные с асинхронным интерфейсом -
LAP-M, который также принадлежит семейству HDLC). Поэтому использование HDLC на уровне маршрутизатора или
моста становится неоправданным.
6. Протокол PPP
При разработке протокола PPP за основу был взят формат кадров HDLC и дополнен собственными полями. Поля
протокола PPP вложены в поле данных кадра HDLC.
Основное отличие РРР от других протоколов канального уровня состоит в том, что он добивается согласованной
работы различных устройств с помощью переговорной процедуры, во время которой передаются различные параметры,
такие как качество линии, протокол аутентификации и инкапсулируемые протоколы сетевого уровня. Переговорная
процедура происходит во время установления соединения.
Протокол РРР основан на четырех принципах:
Переговорное принятие параметров соединения. В корпоративной сети конечные системы часто отличаются
размерами буферов для временного хранения пакетов, ограничениями на размер пакета, списком поддерживаемых
протоколов сетевого уровня. Физическая линия, связывающая конечные устройства, может варьироваться от
низкоскоростной аналоговой линии до высокоскоростной цифровой линии с различными уровнями качества
обслуживания.
Чтобы справиться со всеми возможными ситуациями, в протоколе РРР имеется набор стандартных установок,
действующих по умолчанию и учитывающих все стандартные конфигурации. При установлении соединения два
взаимодействующих устройства для нахождения взаимопонимания пытаются сначала использовать эти установки.
Каждый конечный узел описывает свои возможности и требования. Затем на основании этой информации принимаются
параметры соединения, устраивающие обе стороны, в которые входят форматы инкапсуляции данных, размеры пакетов,
качество линии и процедура аутентификации.
24
режим аутентификации. Для целей аутентификации РРР предлагает по умолчанию протокол РАР (Password
Authentication Protocol), передающий пароль по линии связи в открытом виде, или протокол CHAP (Challenge Handshake
Authentication Protocol), не передающий пароль по линии связи и поэтому обеспечивающий большую безопасность сети.
Пользователям также разрешается добавлять и новые алгоритмы аутентификации. Дисциплина выбора алгоритмов
компрессии заголовка и данных аналогична.
Многопротокольная поддержка - способность протокола РРР поддерживать несколько протоколов сетевого уровня -
обусловила распространение РРР как стандарта де-факто. В отличие от протокола SLIP, который может переносить
только IP-пакеты, или LAP-B, который может переносить только пакеты Х.25, РРР работает со многими протоколами
сетевого уровня, включая IP, Novell IPX, AppleTalk, DECnet, XNS, Banyan VINES и OSI, а также протоколами канального
уровня локальной сети.
Расширяемость протокола. Под расширяемостью понимается как возможность включения новых протоколов в стек
РРР, так и возможность использования собственных протоколов пользователей вместо рекомендуемых в РРР по
умолчанию. Это позволяет наилучшим образом настроить РРР для каждой конкретной ситуации.
Независимость от глобальных служб. Начальная версия РРР работала только с кадрами HDLC. Теперь в стек РРР
добавлены спецификации, позволяющие использовать РРР в любой технологии глобальных сетей, например ISDN, frame
relay, Х.25, Sonet и HDLC.
Вкратце.
PDH (Plesiochronous Digital Hierarchy)
Технология PDH (плезиохронный, означает «почти синхронный») была разработана для более эффективной передачи
оцифрованных голосовых потоков по кабелю из скрученной пары проводников.
Плезиохронная цифровая иерархия ПЦИ (PDH) — это принцип построения цифровых систем передачи, которые
используют групповой мультиплексированный ИКМ-сигнал, состоящий из цифровых 30-канальных потоков (2,048
Мбит/сек) и требующий синхронизации скоростей цифровых потоков на входе оборудования группообразования. Под
термином «плезиохронные» понимается то, что скорости входных 30-канальных групп немного отличаются друг от
друга вследствие допустимой нестабильности задающего генератора каналообразующего оборудования этих потоков.
Поэтому прежде чем приступить к объединению этих потоков в 2,048 Мбит/сек, их нужно привести к одной скорости
передачи путем добавления специальных синхронизирующих битов выравнивания скоростей. Биты выравнивания
должны распознаваться на приемной стороне, когда происходит разделение (демультиплексирование) потоков из
группового и выделение первоначального сигнала. Такой групповой сигнал, состоящий из нескольких элементарных
плезиохронных 30-канальных групп, называется плезиохронной цифровой иерархией ПЦИ (Plesiochronous Digital
Hierarchy - PDH).
Базовой системой передачи для построения более высоких уровней PDH является система передачи ИКМ-30. Для
образования следующих более высоких уровней иерархии принято умножение каждого предыдущего уровня на четыре.
В Европе принята следующая иерархия систем PDH: ИКМ-30 (2,048 Мбит/сек), ИКМ-120 (8,448 Мбит/сек), ИКМ-480
(34,368 Мбит/сек), ИКМ-1920 (139, 264 Мбит/сек).
Несмотря на то, что технология PDH позволила существенно упростить системы передачи, все же она обладала рядом
недостатков, таких как отсутствие единого международного стандарта для оптических и трибутарных интерфейсов. Так
же к недостаткам относились строгая асинхронная процедура мультиплексирования и ограниченная способность
управления системами.

18. Защита информации в компьютерных сетях. Средства и способы защиты информации.


Защита информации – это комплекс мероприятий, проводимых с целью предотвращения утечки, хищения, утраты,
несанкционированного уничтожения, искажения, модификации (подделки), несанкционированного копирования,
блокирования информации и т.п. Поскольку утрата информации может происходить по сугубо техническим,
объективным и неумышленным причинам, под это определение попадают также и мероприятия, связанные с
повышением надежности сервера из-за отказов или сбоев в работе винчестеров, недостатков в используемом
программном обеспечении и т.д.
Переход от работы на персональных компьютерах к работе в сети усложняет защиту информации по следующим
причинам:
1. большое число пользователей в сети и их переменный состав. Защита на уровне имени и пароля пользователя
недостаточна для предотвращения входа в сеть посторонних лиц;
2. значительная протяженность сети и наличие многих потенциальных каналов проникновения в сеть;
3. уже отмеченные недостатки в аппаратном и программном обеспечении, которые зачастую обнаруживаются не на
предпродажном этапе, называемом бета- тестированием, а в процессе эксплуатации. В том числе неидеальны встроенные
средства защиты информации даже в таких известных и "мощных" сетевых ОС, как Windows NT или NetWare.

Атаки на локальную сеть через подключение к Интернету для того, чтобы получить доступ к конфиденциальной
информации, в последнее время получили широкое распространение, что связано с недостатками встроенной системы
защиты информации в протоколах TCP/IP. Сетевые атаки через Интернет могут быть классифицированы следующим
образом:
 Сниффер пакетов (sniffer – в данном случае в смысле фильтрация) – прикладная программа, которая использует
сетевую карту, работающую в режиме, где все пакеты, полученные по физическим каналам, сетевой адаптер отправляет
приложению для обработки.

25
 IP-спуфинг (spoof – обман, мистификация) – происходит, когда хакер, находящийся внутри корпорации или вне ее,
выдает себя за санкционированного пользователя.
 Отказ в обслуживании (Denial of Service – DoS). Атака DoS делает сеть недоступной для обычного использования за
счет превышения допустимых пределов функционирования сети, операционной системы или приложения.
 Парольные атаки – попытка подбора пароля легального пользователя для входа в сеть.
 Атаки типа Man-in-the-Middle – непосредственный доступ к пакетам, передаваемым по сети.
 Атаки на уровне приложений.
 Сетевая разведка – сбор информации о сети с помощью общедоступных данных и приложений.
 Злоупотребление доверием внутри сети.
 Несанкционированный доступ (НСД), который не может считаться отдельным типом атаки, так как большинство
сетевых атак проводятся ради получения несанкционированного доступа.
 Вирусы и приложения типа "троянский конь".
Классификация средств защиты информации
Защита информации в сети на может быть улучшена за счет использования специальных генераторов шума,
маскирующих побочные электромагнитные излучения и наводки, помехоподавляющих сетевых фильтров, устройств
зашумления сети питания, скремблеров (шифраторов телефонных переговоров), подавителей работы сотовых телефонов
и т.д. Кардинальным решением является переход к соединениям на основе оптоволокна, свободным от влияния
электромагнитных полей и позволяющим обнаружить факт несанкционированного подключения.
В целом средства обеспечения защиты информации в части предотвращения преднамеренных действий в зависимости
от способа реализации можно разделить на группы:
1. Технические (аппаратные) средства. Это различные по типу устройства (механические, электромеханические,
электронные и др.), которые аппаратными средствами решают задачи защиты информации. Они либо препятствуют
физическому проникновению, либо, если проникновение все же состоялось, доступу к информации, в том числе с
помощью ее маскировки. Первую часть задачи решают замки, решетки на окнах, защитная сигнализация и др. Вторую –
генераторы шума, сетевые фильтры, сканирующие радиоприемники и множество других устройств, "перекрывающих"
потенциальные каналы утечки информации или позволяющих их обнаружить. Преимущества технических средств
связаны с их надежностью, независимостью от субъективных факторов, высокой устойчивостью к модификации. Слабые
стороны – недостаточная гибкость, относительно большие объем и масса, высокая стоимость.
2. Программные средства включают программы для идентификации пользователей, контроля доступа, шифрования
информации, удаления остаточной (рабочей) информации типа временных файлов, тестового контроля системы защиты
и др. Преимущества программных средств – универсальность, гибкость, надежность, простота установки, способность к
модификации и развитию. Недостатки – ограниченная функциональность сети, использование части ресурсов файл-
сервера и рабочих станций, высокая чувствительность к случайным или преднамеренным изменениям, возможная
зависимость от типов компьютеров (их аппаратных средств).
3. Смешанные аппаратно-программные средства реализуют те же функции, что аппаратные и программные
средства в отдельности, и имеют промежуточные свойства.
4. Организационные средства складываются из организационно-технических (подготовка помещений с
компьютерами, прокладка кабельной системы с учетом требований ограничения доступа к ней и др.) и организационно-
правовых (национальные законодательства и правила работы, устанавливаемые руководством конкретного предприятия).
Преимущества организационных средств состоят в том, что они позволяют решать множество разнородных проблем,
просты в реализации, быстро реагируют на нежелательные действия в сети, имеют неограниченные возможности
модификации и развития. Недостатки – высокая зависимость от субъективных факторов, в том числе от общей
организации работы в конкретном подразделении.
По степени распространения и доступности выделяются программные средства, поэтому далее они рассматриваются
более подробно (см. "Стандартные методы шифрования и криптографические системы" и "Программные средства
защиты информации"). Другие средства применяются в тех случаях, когда требуется обеспечить дополнительный
уровень защиты информации.
Шифрование данных представляет собой разновидность программных средств защиты информации и имеет особое
значение на практике как единственная надежная защита информации, передаваемой по протяженным последовательным
линиям, от утечки. Шифрование образует последний, практически непреодолимый "рубеж" защиты от НСД. Понятие
"шифрование" часто употребляется в связи с более общим понятием криптографии. Криптография включает способы и
средства обеспечения конфиденциальности информации (в том числе с помощью шифрования) и аутентификации.
Конфиденциальность – защищенность информации от ознакомления с ее содержанием со стороны лиц, не имеющих
права доступа к ней. В свою очередь аутентификация представляет собой установление подлинности различных аспектов
информационного взаимодействия: сеанса связи, сторон (идентификация), содержания (имитозащита) и источника
(установление авторства c помощью цифровой подписи).
Число используемых программ шифрования ограничено, причем часть из них являются стандартами де-факто или де-
юре. Однако даже если алгоритм шифрования не представляет собой секрета, произвести дешифрование
(расшифрование) без знания закрытого ключа чрезвычайно сложно. Это свойство в современных программах
шифрования обеспечивается в процессе многоступенчатого преобразования исходной открытой информации (plain text в
англоязычной литературе) с использованием ключа (или двух ключей – по одному для шифрования и дешифрования). В
конечном счете, любой сложный метод (алгоритм) шифрования представляет собой комбинацию относительно простых
методов.

26
Классические алгоритмы шифрования данных
Имеются следующие "классические" методы шифрования:
 подстановка (простая – одноалфавитная, многоалфавитная однопетлевая, многоалфавитная многопетлевая);
 перестановка (простая, усложненная);
 гаммирование (смешивание с короткой, длинной или неограниченной маской).
Устойчивость каждого из перечисленных методов к дешифрованию без знания ключа характеризуется количественно с
помощью показателя Sк, представляющего собой минимальный объем зашифрованного текста, который может быть
дешифрован посредством статистического анализа.
Специализированные программные средства защиты информации от несанкционированного доступа обладают в целом
лучшими возможностями и характеристиками, чем встроенные средства сетевых ОС. Кроме программ шифрования и
криптографических систем, существует много других доступных внешних средств защиты информации. Из наиболее
часто упоминаемых решений следует отметить следующие две системы, позволяющие ограничить и контролировать
информационные потоки.
1. Firewalls – брандмауэры (дословно firewall – огненная стена). Между локальной и глобальной сетями создаются
специальные промежуточные серверы, которые инспектируют и фильтруют весь проходящий через них трафик
сетевого/транспортного уровней. Это позволяет резко снизить угрозу несанкционированного доступа извне в
корпоративные сети, но не устраняет эту опасность полностью. Более защищенная разновидность метода – это способ
маскарада (masquerading), когда весь исходящий из локальной сети трафик посылается от имени firewall-сервера, делая
локальную сеть практически невидимой.
2. Proxy-servers (proxy – доверенность, доверенное лицо). Весь трафик сетевого/транспортного уровней между
локальной и глобальной сетями запрещается полностью – маршрутизация как таковая отсутствует, а обращения из
локальной сети в глобальную происходят через специальные серверы-посредники. Очевидно, что при этом обращения из
глобальной сети в локальную становятся невозможными в принципе. Этот метод не дает достаточной защиты против
атак на более высоких уровнях – например, на уровне приложения (вирусы, код Java и JavaScript).

19. Защита информации в компьютерных сетях. Метод подстановки.


Защита информации (см. 18).
Подстановка предполагает использование альтернативного алфавита (или нескольких) вместо исходного. В случае
простой подстановки для символов английского алфавита можно предложить, например, следующую замену (см.
таблицу 9.1).
Таблица 9.1. Пример замены символов при подстановке
Исходный алфавит ABCDE FGHI J K L …XYZ
Альтернативный алфавит S O U H K T L X N W M Y … A P J
Тогда слово "cache" в зашифрованном виде представляется как "usuxk".
Существует, однако, возможность дешифрования сообщения с помощью известной статистической частоты
повторяемости символов в произвольном, достаточно длинном тексте. Символ E встречается чаще всего – в среднем 123
раза на каждые 1000 символов или в 12,3% случаев, далее следуют символы T – 9,6%, A – 8,1%, O – 7,9%, N – 7,2%, I –
7,2%, S – 6,6%, R – 6,0%, H – 5,1%, L – 4,0% и т.д. Приведенные цифры могут, конечно, несколько варьироваться в
зависимости от источника информации, из которого они были взяты, что не изменяет принципиально ситуации.
Показатель устойчивости к дешифрованию Sк не превышает 20...30. При многоалфавитной подстановке можно добиться
того, что в зашифрованном тексте все символы будут встречаться примерно с одинаковой частотой, что существенно
затруднит дешифрование без знания альтернативных алфавитов и порядка, в котором они использовались при
шифровании.
Перестановка потенциально обеспечивает большую по сравнению с подстановкой устойчивость к дешифрованию и
выполняется с использованием цифрового ключа или эквивалентного ключевого слова, как это показано на следующем
примере (см. табл. 9.2). Цифровой ключ состоит из неповторяющихся цифр, а соответствующее ему ключевое слово – из
неповторяющихся символов. Исходный текст (plain text) записывается под ключом построчно. Зашифрованное
сообщение (cipher text) выписывается по столбцам в том порядке, как это предписывают цифры ключа или в том порядке,
в котором расположены отдельные символы ключевого слова.
Таблица 9.2. Пример использования простой перестановки
Ключевое слово S E C U R I T Y
Цифровой ключ 5 2 1 7 4 3 6 8
T R A N S P O S
I T I O N I S
Исходный текст (plain text),
записанный построчно T H E E N C
I P H E R M E
T H O D

27
– служебный символ, в данном случае означает пробел
Для рассматриваемого примера зашифрованное сообщение будет выглядеть следующим образом:
AIHHORTTPHPαEααα…SSCEα.

20. Понятие маршрутизатора. Виды, функции, характеристики


Маршрутизаторы: функции и характеристики
Маршрутизация (routing) — процесс выбора пути для передачи пакетов. Маршрутизация осуществляется на узле
TCP/IP в момент отправки IP-пакетов, а затем — на IP-маршрутизаторе.
Маршрутизатор (router) — это устройство, которое перенаправляет пакеты из одной физической сети в другую.
Маршрутизаторы также называют шлюзами (gateways).
Классификация М. по области применения:
Магистральные Маршрутизаторы – предназначены для построения центральной сети корпорации. это мощные
устройства, способные обрабатывать несколько сотен тысяч или даже нескольк: миллионов пакетов в секунду, имеющие
большое количество интерфейсов локальных и глобальных сетей. Маршрутизаторы региональных отделений соединяют
региональные отделенж между собой и с центральной сетью. Поддерживаемые интерфейсы локальных и глобальных
сетей менее скоростные. Примерами маршрутизаторов региональных отделений могут служить маршрутизаторы BLN,
ASN компании Nortel Networks, Cisco 3600, Cisco 250"' NetBuilder II компании 3Com.
Маршрутизаторы удаленных офисов соединяют, как правило, единственнуи локальную сеть удаленного офиса с
центральной сетью или сетью региональной: отделения по глобальной связи. В максимальном варианте такие
маршрутизаторы могут поддерживать и два интерфейса локальных сетей. Как правило, интерфейс локальной сети — это
Ethernet 10 Мбит/с, а интерфейс глобальной сети — выделенная линия со скоростью 64 Кбит/с, 1,544 или 2 Мбит/с.
Маршрутизаторы локальных сетей (коммутаторы 3-го уровня) предназначен» для разделения крупных локальных
сетей на подсети. Основное требование, предъявляемое к ним, — высокая скорость маршрутизации, Все порты имеют
скорость по крайней мере 10 Мбит/с, а многие работают на скорости 100 Мбит/с. Примерами коммутаторов 3-го уровня
служат коммутаторы CoreBuilder 3500 компании 3Com, Accelar 1200 компании Nortel Networks, Waveswitch 9000
компании Plaintree, Turboiron Switching Router компании Foudry Networks.
Основные технические характеристики маршрутизатора
Основные технические характеристики маршрутизатора связаны с тем, как он решает свою главную задачу —
маршрутизацию пакетов в составной сети. Именно эти характеристики прежде всего определяют возможности и сферу
применения того или иного маршрутизатора.
Перечень поддерживаемых сетевых протоколов..
Перечень поддерживаемых сетевых протоколов обычно включает протоколы IP, CONS и CLNS OSI, IPX, AppleTalk,
DECnet, Banyan VINES, Xerox XNS.
Перечень протоколов маршрутизации составляют протоколы IP RIP, IPX RIP, XLSP, OSPF, IS-IS OSI, EGP, BGP,
VINES RTP, AppleTalk RTMP.
Перечень поддерживаемых интерфейсов локальных и глобальных сетей. Для локальных сетей — это интерфейсы,
реализующие физические и канальные протоколы сетей Ethernet, Token Ring, FDDI, Fast Ethernet, Gigabit Ethernet,
lOOVG-AnyLAN a ATM.
В набор поддерживаемых глобальных технологий обычно входят технологии 3L25, frame relay, ISDN и
коммутируемых аналоговых телефонных сетей, сетей ATM, также поддержка протокола канального уровня РРР.
Общая производительность маршрутизатора. Общая производительность маршрутизатора зависит от многих
факторов, наиболее важными из которых являются: тип используемых процессоров, эффективность программной
реализации протоколов, архитектурная организация вычислительных и интерфейсных модулей. Общая
производительность маршрутизаторов колеблется от нескольких десятков тысяч пакетов в секунду до нескольких
миллионов пакетов в секунду..
Дополнительные функциональные возможности маршрутизаторов
Поддержка одновременно нескольких протоколов маршрутизации. При этом таблица маршрутизации может
получаться противоречивой — разные протоколы маршрутизации могут выбрать разные следующие маршрутизаторы
для какой-либо сети назначений БОЛЬШИНСТВО маршрутизаторов решает эту проблему за счет придания приоритетов
решениям разных протоколов маршрутизации. Высший приоритет отдает статическим маршрутам (администратор
всегда прав), следующий приоритет имеют маршруты, выбранные протоколами состояния связей, такими как OSPF кэш
NLSP, а низшим приоритетов обладают маршруты дистанционно-векторных о©~ токолов, как самых несовершенных.
Алгоритм маршрутизации
1. При попытке одного узла связаться с другим IP сначала определяет, является ли узел-получатель локальным или
находится в другой сети.
2. Если узел-получатель находится в другой сети, IP ищет в таблице маршрутизации путь к удаленному узлу или
удаленной сети.
3. Если прямой маршрут не обнаружен, то IP использует адрес шлюза по умолчанию для доставки пакета к
маршрутизатору.
4. Маршрутизатор снова ищет путь к удаленному узлу или сети в таблице маршрутизации. Если путь не найден, пакет
посылается по адресу шлюза, заданного по умолчанию для данного маршрутизатора.

28
При обнаружении очередного маршрута пакет посылается на следующий маршрутизатор — это называется транзитом
(hop) — и в конце концов отправляется на узел-получатель. Если маршрут не найден, на узел-отправитель посылается
сообщение об ошибке.
Обнаружение неисправного шлюза
Протокол TCP может определить неисправность шлюза по умолчанию и внести необходимые изменения в таблицу
IP-маршрутизации для использования другого шлюза. TCP пытается послать пакет на установленный по умолчанию
шлюз до получения подтверждения. Однако, если значение TcpMaxDataRetmnsmissions превышено больше чем
наполовину и в конфигурации компьютера указаны несколько шлюзов, TCP переключит IP на следующий в списке
шлюзов по умолчанию.
Когда Вы конфигурируете компьютер, работающий под Windows NT, для использования нескольких IP-адресов
шлюзов, обнаружение неисправного шлюза включено по умолчанию
Статическая и динамическая маршрутизация
Способ получения маршрутизатором информации зависит от используемого типа маршрутизации — статической или
динамической.
1. Статические маршрутизаторы требуют ручного построения и обновления таблиц маршрутизации. При
изменении маршрута статические маршрутизаторы не информируют об этом друг друга. Они также не обмениваются
маршрутами с динамическими маршрутизаторами.
2. Динамическая маршрутизация осуществляется такими протоколами, как Routing Information Protocol (RIP) и
Open Shortest Path First (OSPF). Протоколы маршрутизации служат для периодического обмена информацией между
динамическими маршрутизаторами. При изменении маршрута другие маршрутизаторы автоматически информируются
об этом.
Windows NT Server версии 4.0 способен функционировать в качестве IP-маршрутизатора с использованием
статической и динамической маршрутизации. Компьютер, работающий под управлением Windows NT, может быть
сконфигурирован с несколькими сетевыми адаптерами, и сможет осуществлять маршрутизацию между ними. Такая
система, идеальная для небольших корпоративных сетей, называется компьютером с несколькими сетевыми
интерфейсами (multihomed computer).
Windows NT Server версии 4.0 может функционировать в качестве RIP-маршру-тизатора, поддерживающего
динамическое управление таблицами IP-маршрутизации. Протокол RIP исключает необходимость настраивать
статические таблицы IP-маршрутизации.
Статическая IP-маршрутизация
Статический маршрутизатор может связываться только с теми сетями, для которых имеет сконфигурированные
интерфейсы.
Статический маршрутизатор надо предварительно настроить на маршрутизацию IP-пакетов в другие сети. В таблицу
маршрутизации каждого маршрутизатора Вы должны добавить либо запись для каждой сети в корпоративной сети, либо
адрес шлюза по умолчанию другого локального маршрутизатора.
• Компьютер А локально соединен только с сетями 1 и 2. В результате узлы сети 1 могут соединяться с узлами
сети 2, но не могут соединяться с узлами сети 3.
• Компьютер В локально соединен только с сетями 2 и 3. Узлы сети 3 могут соединяться с узлами сети 2, но не
могут — с узлами сети 1.

29
Конфигурирование статических IP-маршрутизаторов
В корпоративной сети, имеющей по крайней мере один статический маршрутизатор, необходимо сконфигурировать
записи статической таблицы маршрутизации для всех известных сетей на каждом маршрутизаторе.
Запись статической таблицы маршрутизации создана на компьютере А. Она содержит идентификатор сети 3 и IP-
адрес интерфейса (131.107.16.1), к которому компьютер А имеет прямой доступ и который может перенаправлять пакеты
из сети 1 в сеть 3.
Запись статической таблицы маршрутизации создана на компьютере В. Запись содержит сетевой идентификатор сети
1, а также IP-адрес интерфейса (131.107.16.2), который напрямую доступен компьютеру В для того, чтобы
перенаправлять пакеты из сети 3 в сеть 1.

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

Формат таблицы маршрутизации


По сути таблица маршрутизации представляет собой список сетей (и, возможно, хостов) и адресов маршрутизаторов, к
которым система должна обращаться для передачи данных в эти сети. Способ размещения информации в таблице
зависит от ОС, но в общем и целом она выглядит примерно так, как в Windows 2000.
В столбцах этой таблицы записаны следующие данные.
• Network Address — адрес сети или хоста, информация о маршруте к которым записана в других столбцах.
• Netmask — маска подсети для адреса в столбце Network Address. Она, как легко догадаться, нужна, чтобы система
могла выделить в значении из столбца Network Address идентификаторы сети, подсети (если есть) и хоста.
• Gateway Address — адрес маршрутизатора, которым система должна воспользоваться для отправки дейтаграмм
сети или хосту, указанным в столбце Network Address. Аппаратный адрес системы, указанной в столбце Gateway Address,
будет записан в поле Destination Address заголовка протокола канального уровня.
• Interface — адрес сетевого адаптера, через который компьютер должен передавать пакеты, адресованные системе,
адрес которой записан в столбце Gateway Address.
• Metric — метрика, т. е. число, позволяющее системе сравнивать относительную эффективность различных путей к
одной цели
Решение перенаправить пакет должны принимать как узел-отправитель, так и маршрутизатор. Для принятия решения о
маршрутизации IP-уровень обращается к хранящейся в памяти таблице маршрутизации (см. рис.). Она содержит записи с
IP-адресами интерфейсов маршрутизатора, подключенных к сетям, с которыми он может связываться. По умолчанию
маршрутизатор может посылать пакеты только в сети, для которых имеются сконфигурированные интерфейсы.
Записи по умолчанию в таблице маршрутизации
Ниже перечислены записи по умолчанию, поддерживаемые таблицей маршрутизации Windows NT 4.0.
Адрес Описание
0.0.0.0 Адрес обозначает маршрут по умолчанию к любой сети, не описанной в таблице
маршрутизации
Широковещание в подсети Адрес используется для широковещания в локальной (subnet broadcast) подсети
Широковещание в сети Адрес используется для широковещания по всей сети (network broadcast)
Локальная заглушка Адрес используется для тестирования IP-конфигураций (local loopback) и соединений
Локальная сеть Адрес используется для направления пакетов на узлы (local network) локальной сети
Локальный узел Адрес локального компьютера. Этот адрес ссылается (local host) на адрес локальной
заглушки
Добавление статических записей
Для добавления статических записей в таблицу маршрутизации используется команда route.
Добавление или изменение статической записи Функция
route add [сеть] mask [сетевая маска] [шлюз] Добавляет маршрут

30
route -p add [сеть] mask [сетевая маска] [шлюз] Добавляет постоянный маршрут
route delete [сеть] [шлюз] Удаляет маршрут
route change [сеть] [шлюз] Изменяет маршрут
route print Показывает таблицумаршрутизации
route -f Стирает все маршруты
Например, для добавления маршрута, позволяющего устанавливать соединения с сетью 131.107.24.0 с компьютера из
сети 131.107.16.0, Вы должны использовать следующую команду: route add 131.107.24.0 mask 255.255.255.0 131.107.16.2
Примечание Если не указан параметр -р, то статические маршруты хранятся только в памяти, то
есть не являются постоянными. Постоянные (persistent) маршруты хранятся в Реестре. Когда Вы
перезапускаете компьютер, работающий под управлением Windows NT, то Вам необходимо
воссоздавать все непостоянные маршруты.
Просмотр таблицы маршрутизации
Наберите route -p print в командной строке, затем нажмите ENTER.
Какие адреса, отличные от Вашего IP-адреса и адреса заглушки отображены в поле Gateway Address? Если Вы
работаете с компьютером, не подключенным к сети, то адрес шлюза не появится.
Удалите адрес шлюза по умолчанию. Тогда пакеты не смогут быть отправлены соответствующему маршрутизатору, и
маршрутизация реализуется на основе имею- щихся записей маршрутов.
Установив поддержку протокола IP-маршрутизации RIP, Windows NT Server4.0 можно использовать в качестве
динамического IP-маршрутизатора. Использование RIP для IP в Windows NT 4.0 позволяет не конфигурировать таблицы
маршрутизации вручную. RIP для IP подходит для объединенных сетей средних размеров, но не годится для больших
объединенных сетей на основе IP из-за значительного объема широковещания. >• Просмотр таблицы маршрутизации
1. Установите несколько плат сетевых адаптеров и соответствующие драйверы или сконфигурируйте несколько IP-
адресов на одной плате адаптера.
2. Сконфигурируйте плату(ы) адаптера с подходящим IP-адресом и маской подсети.
3. На вкладке Routing диалогового окна Microsoft TCP/IP Properties установите фла- жок Enable IP Forwarding.
4. В зависимости от имеющейся версии Windows NT:
• на вкладке Services программы Control Panel Network добавьте сервис RIP for Internet Protocol или
• добавьте статические маршруты в таблицу статического маршрутизатора.
Cетевой концентратор или Хаб (жарг. от англ. hub — центр деятельности) — сетевое устройство, предназначенное для
объединения нескольких устройств Ethernet в общий сегмент сети. Устройства подключаются при помощи витой пары,
коаксиального кабеля или оптоволокна. В настоящее время почти не выпускаются — им на смену пришли сетевые
коммутаторы (свитчи), выделяющие каждое подключенное устройство в отдельный сегмент. Сетевые коммутаторы
ошибочно называют «интеллектуальными концентраторами».
Мост, сетевой мост, бридж (жарг., калька с англ. bridge) — сетевое оборудование для объединения сегментов локальной
сети. Сетевой мост работает на втором уровне модели OSI, обеспечивая ограничение домена коллизий (в случае сети
Ethernet). Формальное описание сетевого моста приведено в стандарте IEEE 802.1D
Сетевой коммутатор или свитч (жарг. от англ. switch — переключатель) — устройство, предназначенное для
соединения нескольких узлов компьютерной сети в пределах одного сегмента. В отличие от концентратора, который
распространяет трафик от одного подключенного устройства ко всем остальным, коммутатор передает данные только
непосредственно получателю. Это повышает производительность и безопасность сети, избавляя остальные сегменты сети
от необходимости (и возможности) обрабатывать данные, которые им не предназначались. Коммутатор работает на
канальном уровне модели OSI, и потому в общем случае может только объединять узлы одной сети по их MAC-адресам.
Для соединения нескольких сетей на основе сетевого уровня служат маршрутизаторы.
Повторитель (жарг. — репи́тер; англ. repeater) — сетевое оборудование. Предназначен для увеличения расстояния
сетевого соединения путѐм повторения электрического сигнала «один в один». Бывают однопортовые повторители и
многопортовые. В терминах модели OSI работает на физическом уровне. Одной из первых задач, которая стоит перед
любой технологией транспортировки данных, является возможность их передачи на максимально большое расстояние.
Типы передач - симплексная передача, это когда инфа передается в одну сторону. Полудуплексная это когда в обе
стороны, но поочереди. Дуплексная – в обе стороны одновременно.
Token ring — «маркерное кольцо», архитектура кольцевой сети с маркерным (эстафетным) доступом в сеть. Значения
Тип сети, в которой все компьютеры схематически объединены в кольцо. По кольцу от компьютера к компьютеру
(станции сети) передается специальный блок данных, называемый маркером (англ. token). Когда какой-либо станции
требуется передача данных, маркер ею модифицируется и больше не распознается другими станциями, как спецблок,
пока не дойдѐт до адресата. Адресат принимает данные и запускает новый маркер по кольцу. На случай потери маркера
или хождения данных, адресат которых не находится, в сети присутствует машина со специальными полномочиями,
умеющая удалять безадресные данные и запускать новый маркер. Передача маркера
Token Ring и IEEE 802.5 являются главными примерами сетей с передачей маркера. Сети с передачей маркера
перемещают вдоль сети небольшой блок данных, называемый маркером. Владение этим маркером гарантирует право
передачи. Если узел, принимающий маркер, не имеет информации для отправки, он просто переправляет маркер к
следующей конечной станции. Каждая станция может удерживать маркер в течение определенного максимального
времени (по умолчанию - 10 мс).Данная технология предлагает вариант решения проблемы коллизий, которая возникает
при работе локальной сети. В технологии Ethernet, такие коллизии возникают при одновременной передаче информации
несколькими рабочими станциями, находящимися в пределах одного сегмента, то есть использующих общий физический
31
канал данных.Если у станции, владеющей маркером, имеется информации для передачи, она захватывает маркер,
изменяет у него один бит (в результате чего маркер превращается в последовательность «начало блока данных»),
дополняет информацией, которую он хочет передать и, наконец, отсылает эту информацию к следующей станции
кольцевой сети. Когда информационный блок циркулирует по кольцу, маркер в сети отсутствует (если только кольцо не
обеспечивает «раннего освобождения маркера» — early token release), поэтому другие станции, желающие передать
информацию, вынуждены ожидать. Следовательно, в сетях Token Ring не может быть коллизий. Если обеспечивается
раннее высвобождение маркера, то новый маркер может быть выпущен после завершения передачи блока данных
Информационный блок циркулирует по кольцу, пока не достигнет предполагаемой станции назначения, которая
копирует информацию для дальнейшей обработки. Информационный блок продолжает циркулировать по кольцу; он
окончательно удаляется после достижения станции, отославшей этот блок. Станция отправки может проверить
вернувшийся блок, чтобы убедиться, что он был просмотрен и затем скопирован станцией назначения.
CSMA/CD (Carrier Sense Multiple Access with Collision Detection — множественный доступ с контролем несущей и
обнаружением коллизий) - технология(802.2) множественного доступа к общей передающей среде в локальной
компьютерной сети с контролем коллизий. CSMA/CD относится к децентрализованным случайным (точнее,
квазислучайным) методам. Он используется как в обычных сетях типа Ethernet, так и в высокоскоростных сетях (Fast
Ethernet, Gigabit Ethernet).
Так же называют сетевой протокол, в котором используется схема CSMA/CD. Протокол CSMA/CD работает на
канальном уровне в модели OSI. Характеристики и области применения этих популярных на практике сетей связаны
именно с особенностями используемого метода доступа. CSMA/CD является модификацией «чистого» Carrier Sense
Multiple Access (CSMA). Технология доступа Если во время передачи фрейма рабочая станция обнаруживает другой
сигнал, занимающий передающую среду, она останавливает передачу, посылает jam signal и ждет в течение случайного
промежутка времени (известного как «backoff delay» и находимого с помощью алгоритма truncated binary exponential
backoff), перед тем как снова отправить фрейм.

32
Операционные Системы
1. Работа системы прерываний в реальном режиме
В реальном режиме работы в системе прерываний используется понятие вектора прерывания, поскольку для
указания адреса программы обработки прерывания здесь требуется не одно значение, а два (значение для сегментного
регистра кода и значение для указателя команд), то есть мы имеем дело не со скалярной величиной, а с «векторной»,
состоящей из двух скалярных.
Итак, каждый вектор прерывания состоит из четырех байтов, или двух слов: первые два содержат новое значение
для регистра IP, а следующие два — новое значение для регистра CS. Таблица векторов прерывания занимает 1024 байт.
Таким образом, в ней может быть задано 256 векторов прерываний. В процессоре 18086 эта таблица располагается на
адресах 00000H-003FFH. Расположение этой таблицы в процессорах i80286 и в более поздних определяется значением
регистра IDTR (Interrupt Descriptor Table Register — регистр таблицы дескрипторов прерываний). При включении или
сбросе процессора i80x86 этот регистр обнуляется. Однако при необходимости можно в регистре IDTR указать смещение
и таким образом перейти на новую таблицу векторов прерываний.
Таблица векторов прерываний заполняется (инициализируется) при запуске системы, но, в принципе, может быть
изменена или перемещена.
Каждый вектор прерывания имеет свой номер, называемый номером прерывания, который указывает его место в
таблице. Этот номер, помноженный на четыре (сдвиг на два разряда влево и заполнение освободившихся битов нулями) и
сложенный с содержимым регистра IDTR, дает абсолютный адрес первого байта вектора прерываний в ОП.
Подобно вызову процедуры прерывание заставляет МП сохранить в стеке информацию для последующего возврата,
а затем перейти к группе команд, адрес которых определяется вектором прерывания. Таким образом, прерывание
вызывает косвенный переход к своей подпрограмме обработки за счет получения ее адреса из вектора прерывания.
В IBM PC, как и в других ВС, прерывания бывают двух видов: внутренние и внешние. Внутренние прерывания, как
мы уже знаем, возникают в результате работы ЦП в ситуациях, которые нуждаются в специальном обслуживании, или
при выполнении специальных команд (INT, INT0).
Внутренние прерывания возникают при:
 прерывание при делении на ноль (номер прерывания 0);
 прерывание по флагу TF (Trap Flag — флаг трассировки) обычно используется специальными программами
отладки типа DEBUG (номер прерывания 1);
 прерывания, возникающие при выполнении команд INT (Interrupt — прерывание) и INTO (Interrupt if Overflow
— прерывание по переполнению), называются программными.
В качестве операнда команды INT указывается номер прерывания, которое нужно выполнить, например INT 10H.
Программные прерывания как средство перехода на соответствующую процедуру были введены для того, чтобы
выполнение этой процедуры осуществлялось в привилегированном режиме, а не в обычном пользовательском Внешние
прерывания возникают по сигналу какого-нибудь внешнего устройства. Существует два специальных внешних сигнала
среди входных сигналов процессора, при помощи которых можно прервать выполнение текущей программы и тем самым
переключить работу центрального процессора. Это сигналы NMI (No Mask Interrupt — немаскируемое прерывание) и
INTR (Interrupt Request — запрос на прерывание). Соответственно, внешние прерывания подразделяются на
немаскируемые и маскируемые.
Маскируемые прерывания генерируются контроллером прерываний по заявке определенных периферийных
устройств. Контроллер прерываний (его обозначение i8259A) поддерживает восемь уровней (линий) приоритета; к
каждому уровню «привязано» одно ПУ. Маскируемые прерывания часто называют аппаратными прерываниями.
Как известно, прерывания могут быть инициированы внешним устройством ПЭВМ или специальной командой
прерывания из программы. В любом случае если прерывания разрешены, то выполняется следующая процедура:
 В стек помещается регистр флагов PSW.
 Флаг включения-выключения прерываний IF и флаг трассировки TF, находящиеся в регистре PSW, обнуляются
для блокировки других маскируемых прерываний и исключения пошагового режима исполнения команд.
 Значения регистров CS и IP сохраняются в стеке вслед за PSW.
 Вычисляется адрес вектора прерывания и из вектора, соответствующего номеру прерывания, загружаются новые
значения IP и CS.
Когда системная подпрограмма принимает управление, она может разрешить снова маскируемые прерывания
командой STI (Set Interrupt Flag — установить флаг прерываний), которая переводит флаг IF в состояние 1, что разрешает
МП вновь реагировать на прерывания, инициируемые ПУ, поскольку стековая организация допускает вложение
прерываний друг в друга.
Закончив работу, подпрограмма обработки прерывания должна выполнить команду IRET (Interrupt Return), которая
извлекает из стека три 16-разрядных значения и загружает их в указатель команд IP, регистр сегмента команд CS и
регистр PSW соответственно. Таким образом, процессор сможет продолжить работу с того места, где он был прерван.
В случае внешних прерываний процедура перехода на подпрограмму обработки прерывания дополняется
следующими шагами:
1. Контроллер прерываний получает заявку от определенного ПУ и, соблюдая схему приоритетов, генерирует
сигнал INTR (запрос на прерывание), который является входным для микропроцессора.
2. Микропроцессор проверяет флаг IF в регистре PSW. Если он установлен в 1, то переходим к шагу 3. В противном
случае работа процессора не прерывается. Часто говорят, что прерывания замаскированы, хотя правильнее говорить, что
33
они отключены. Маскируются (запрещаются) отдельные линии запроса на прерывания посредством программирования
контроллера прерываний.
3. Микропроцессор генерирует сигнал INTA (подтверждение прерывания). В ответ на этот сигнал контроллер
прерываний посылает по шине данных номер прерывания. После этого выполняется описанная ранее процедура передачи
управления соответствующей программе обработки прерывания.
Номер прерывания и его приоритет устанавливаются на этапе инициализации системы. После запуска ОС
пользователь, как мы уже отмечали, может изменить таблицу векторов прерываний, поскольку она ему доступна.
2. Режимы управления вводом-выводом
Имеется два основных режима ввода-вывода:
 режим обмена с опросом готовности устройства ввода-вывода
 режим обмена с прерываниями (рис. 2.1).
Если вводом-выводом управляет ЦП, то говорят о работе программного канала обмена данными между внешними
устройством и ОП (в отличие от канала прямого доступа к памяти, при котором управление вводом-выводом
осуществляет специальное дополнительное оборудование).
Пусть ЦП посылает команду УУ, требующую, чтобы ПУ ВВ выполнило некоторое действие. Например, если мы
управляем дисководом, то это может быть команда на включение двигателя или команда, связанная с
позиционированием магнитных головок. УУ исполняет команду, транслируя сигналы, понятные ему и ЦП, в сигналы,
понятные устройству ВВ.
После выполнения команды устройство ВВ (или его устройство управления) выдает сигнал готовности, который
сообщает ЦП о том, что можно выдать новую команду для продолжения обмена данными.
Однако поскольку быстродействие устройства ВВ намного меньше быстродействия ЦП, то сигнал готовности
приходится очень долго ожидать, постоянно опрашивая соответствующую линию интерфейса на наличие или отсутствие
нужного сигнала. Посылать новую команду, не дождавшись сигнала готовности, сообщающего об исполнении
предыдущей команды, бессмысленно.
В режиме опроса готовности драйвер, управляющий процессом обмена данными с внешним устройством, как раз и
выполняет в цикле команду «проверить наличие сигнала готовности». До тех пор пока сигнал готовности не появится,
драйвер ничего другого не делает. При этом, естественно, нерационально используется время ЦП. Гораздо выгоднее,
выдав команду ВВ, на время забыть об устройстве ВВ и перейти на выполнение другой про граммы. А появление сигнала
готовности трактовать как запрос на прерывание от устройства ВВ. Именно эти сигналы готовности и являются
сигналами запроса на прерывание.

Рис. 2.1. Управление вводом-выводом


Режим обмена с прерываниями по своей сути является режимом асинхронного управления. Для того чтобы не
потерять связь с устройством (после выдачи ЦП очередной команды по управлению обменом данными и переключения
его на выполнение других программ), может быть запущен отсчет времени, в течение которого устройство обязательно
должно выполнить команду и выдать-таки сигнал запроса на прерывание. Максимальный интервал времени, в течение
которого устройство ВВ или его контроллер должны выдать сигнал запроса на прерывание, называют установкой тайм-
аута. После окончаниия тайм-аута делается вывод о том, что связь с устройством потеряна и управлять им больше нет
возможности.
Драйверы, работающие в режиме прерываний, представляют собой сложный комплекс программных модулей и
могут иметь несколько секций:
 секцию запуска, которая инициирует операцию ВВ для включения или инициализации команды ВВ.
 одну или несколько секций продолжения, которые является основным обработчиком прерывания. Поскольку
используемый интерфейс может потребовать для управления вводом-выводом несколько последовательностей
управляющих команд, а сигнал прерывания у устройства, как правило, только один, то после выполнения очередной
секции прерывания супервизор прерываний при следующем сигнале готовности должен передать управление другой
секции. Это делается путем изменения адреса обработки прерывания после выполнения очередной секции, а если имеется

34
только одна секция продолжения, она сама передает управление в ту или иную часть кода подпрограммы обработки
прерывания.
 секцию завершения, которая выключает устройство ввода-вывода или завершает операцию.
Управление операциями ВВ в режиме прерываний требует значительных усилий со стороны системных
программистов. Так, в ОС Windows (и Windows Эх, и Windows NT/ 2000) печать через параллельный порт
осуществляется не в режиме с прерываниями, как это сделано в других ОС, а в режиме опроса готовности, что приводит к
100-процентной загрузке ЦП на все время печати. При этом, естественно, выполняются и другие задачи, запущенные на
исполнение, но исключительно за счет того, что упомянутые ОС поддерживают вытесняющую мультизадачность, время
от времени прерывая процесс управления печатью и передавая ЦП остальным задачам.

3. Файловые системы
Система управления файлами является основной в абсолютном большинстве современных ОС. Например, ОС UNIX
ни как не могут функционировать без файловой системы, ибо понятие файла для них является одним из самых
фундаментальных. Все современные ОС используют файлы и соответствующее ПО для работы с ними. Дело в том что,
во-первых, через файловую систему связываются многие системные обрабатывающие программы. Во-вторых, с
помощью этой системы решаются проблемы централизованного распределения дискового пространства и управления
данными. Наконец, пользователи получают более простые способы доступа к своим данным, которые они размещают на
устройствах внешней памяти.
Существует большое количество файловых систем, созданных для разных устройств внешней памяти и разных ОС.
В них используются, соответственно, разные принципы размещения данных на носителе. Ограничимся рассмотрением
наиболее распространенных файловых систем, с которыми мы сталкиваемся при работе на ПК. Это системы FAT, FAT32
и NTFS. Знание основных принципов их построения необходимо не только специалисту в области ВТ, но и обычному
пользователю. Особенно актуальными становятся знания возможностей файловой системы NTFS, которая сегодня
получает все большее распространение.
FAT (от англ. File Allocation Table — «таблица размещения файлов») — архитектура файловой системы, сейчас
широко используемая в картах памяти фотоаппаратов и других устройств.
Разработана Биллом Гейтсом и Марком МакДональдом в 1977 году. Использовалась в качестве основной файловой
системы в операционных системах DOS и Microsoft Windows (до версии Windows ME).
Структура FAT определена стандартом ECMA-107.
Структура системы FAT
Раздел диска, отформатированный в системе FAT, имеет следующую структуру:
 загрузочный сектор;
 таблица размещения файлов — собственно FAT (традиционно в двух экземплярах, но вообще-то количество
копий указано в загрузочном секторе);
 корневой каталог;
 файлы.
Для хранения файлов всѐ доступное для них пространство разбивается на кластеры. Таблица размещения файлов
содержит ячейки, каждая из которых соответствует определѐнному кластеру диска. Если кластер принадлежит файлу, то
соответствующая ему ячейка содержит номер следующего кластера этого же файла. Если ячейка соответствует
последнему кластеру файла, то она содержит значение «FFFF». Таким образом выстраивается цепочка кластеров файла.
Неиспользуемые кластеры помечены «0000». «Плохие» кластеры помечены специальным кодом «FFF7».
При удалении файла фактически только делается запись в каталоге, а цепочка кластеров не разрушается и данные не
затираются. Это позволяет восстанавливать удалѐнные файлы, если на их место ещѐ не было ничего записано.
Максимальный размер кластера, который поддерживается в FAT, составляет 64 Кб. Зная, что максимальное
количество кластеров, которое можно адресовать шестнадцатиразрядным указателем равно 65536, можно вычислить
какой величины раздел можно отформатировать, применяя тот или иной размер кластера. Если взять размер кластера
равным размеру физического кластера (сектора), то получим: 65536 * 512 = 32 Мб. Если взять кластер в 2 раза больше, то
можно отформатировать раздел уже до 64 Мб. Ввиду того, что разрядность ФС величина постоянная, для
форматирования дисков различных размеров будут применяться разные размеры кластеров. Например, чтобы
отформатировать диск более 1 Гб, нужно применять кластер 16 КБ. Поскольку размер кластера, являющийся
максимально допустимым в этой ФС, равен 64 Кб, то можно определить, что максимальный размер раздела,
форматируемый под FAT, равен 4 Гб.
Отказоустойчивость системы
Поскольку система FAT хранит данные о файлах и данные о свободном месте на диске в одной таблице, то операция
записи файла, традиционно состоящая из двух этапов (добавление занимаемого блока в перечень занятых и исключение
этого же блока из списка свободных) происходит в FAT в одно действие. Благодаря этому система FAT обладает
врождѐнной устойчивостью к сбоям, то есть сбой (например, питания) в момент выполнения операции чтения или записи
в большинстве случаев не приведѐт к разрушению файловой системы. Однако следует помнить, что в данном случае речь
идѐт именно о целостности файловой системы, а не самих файлов.
Версии системы FAT
Существует четыре версии FAT — FAT12, FAT16, FAT32 и exFAT. Они отличаются количеством бит, отведѐнных
для хранения номера кластера. FAT12 применяется в основном для дискет, FAT16 — для дисков малого объѐма, а новая
exFAT преимущественно для флэш-накопителей.

35
Изначально FAT не поддерживала иерархическую систему каталогов. Все файлы располагались в корневом
каталоге. Это оказалось неудобно. И к тому же малый размер корневого каталога ограничивал количество файлов на
диске файлов. Каталоги были введены с выходом MS-DOS 2.0.
В различных операционных системах также были внедрены различные расширения FAT. Например, в DR-DOS
имеются дополнительные атрибуты доступа к файлам; в Windows 95, Linux и Proolix — поддержка длинных имѐн файлов
(LFN) в формате Unicode (VFAT); в OS/2 — расширенные атрибуты всех файлов.
NTFS (от англ. New Technology File System — «файловая система новой технологии») — стандартная файловая
система для семейства операционных систем Microsoft Windows NT.
NTFS заменила использовавшуюся в MS-DOS и Microsoft Windows файловую систему FAT. NTFS поддерживает
систему метаданных и использует специализированные структуры данных для хранения информации о файлах для
улучшения производительности, надѐжности и эффективности использования дискового пространства. NTFS имеет
встроенные возможности разграничивать доступ к данным для различных пользователей и групп пользователей (списки
контроля доступа — ACL), а также назначать квоты (ограничения на максимальный объѐм дискового пространства,
занимаемый теми или иными пользователями). NTFS использует систему журналирования для повышения надѐжности
файловой системы.
NTFS разработана на основе файловой системы HPFS (от англ. High Performance File System —
высокопроизводительная файловая система), создававшейся Microsoft совместно с IBM для операционной системы OS/2.
Но, получив такие несомненно полезные новшества как квотирование, журналируемость, разграничение доступа и аудит,
в значительной степени утратила присущую прародительнице (HPFS) весьма высокую производительность файловых
операций.
Различают несколько версий NTFS: v1.2 используется в Windows NT 3.51 и Windows NT 4.0, v3.0 поставляется с
Windows 2000, v3.1 — с Windows XP, Windows Server 2003, Windows Vista и Windows Server 2008.
Спецификации файловой системы являются закрытыми. Это создаѐт определѐнные трудности при реализации еѐ
поддержки в сторонних продуктах, не принадлежащих Microsoft — в частности, разработчикам драйверов для свободных
операционных систем приходится заниматься реверс-инжинирингом системы.
Поддержка операционными системами
В данный момент полноценная поддержка NTFS присутствует только в ОС Microsoft семейства Windows NT. Для
других систем в данный момент существуют следующие средства доступа к NTFS-разделам:
MS-DOS
Драйвер NTFSDOS Марка Руссиновича (Mark Russinovich) — поддержка чтения, а в версии Professional и записи на
NTFS-разделы (с июля 2006 права на утилиты Марка Руссиновича принадлежат Microsoft [1]; на сайте компании
информации об этом продукте нет, но его без труда можно найти в Сети).
Windows 9x
Драйвер NTFS for Windows 98 того же Марка Руссиновича. Поддерживает чтение с разделов, но для записи можно
использовать DOS’овский драйвер. На сайте Microsoft также отсутствует информация об этом драйвере, но его легко
можно отыскать на сторонних сайтах. Драйвер Paragon NTFS for Windows 98. Продукт коммерческий. Есть поддержка
записи, но в демо-версии — только чтение.
GNU/Linux
Проект Linux-NTFS. Включает модуль ядра, а также набор утилит для различных операций с файловыми системами
NTFS (проверка целостности, восстановление удалѐнных файлов, изменение размера и др.). Именно этот драйвер
включается в ядро Linux ещѐ с версии 2.2 (с тех пор он был практически полностью переписан). Модулем ядра
поддерживается практически только чтение (запись — лишь в существующие файлы без изменения их размера), но
недавно в рамках проекта появилась утилита ntfsmount, использующая FUSE и позволяющая монтировать NTFS-разделы
на запись с некоторыми ограничениями. Это первый полностью свободный продукт, имеющий такую возможность.
Проект NTFS-3G. Возник как ответвление от предыдущего проекта, отличается более полной поддержкой записи на
NTFS-разделы. Объявлен стабильным (выпущена версия 1.0) 21 февраля 2007 года. Обеспечивает высокий уровень
надежности и производительности. В настоящее время проект активно развивается.
Проект Captive NTFS ([1]). Создавался как «обѐртка» для использования оригинального драйвера Windows NT в ОС
GNU/Linux. Имеется возможность записи, однако драйвер работает крайне медленно и имеет некоторые технические
ограничения. На официальном сайте проекта помещено объявление, что он более не развивается.
Драйвер Paragon NTFS for Linux. Поддерживается чтение и запись, также имеется ряд утилит для создания и
некоторых операций с NTFS-разделами. Продукт платный.
4. Функции операционной системы:
 связь с пользователем в реальном времени для подготовки устройств к работе, переопределение конфигурации и
изменения состояния системы.
 выполнение операций ввода-вывода; в частности, в состав операционной системы входят программы обработки
прерываний от устройств ввода-вывода, обработки запросов к устройствам ввода-вывода и распределения этих запросов
между устройствами.
 управление памятью, связанное с распределением оперативной памяти между прикладными программами.
 управление файлами; основными задачами при этом являются обеспечение защиты, управление выборкой и
сохранение секретности хранимой информации.
 обработка исключительных условий во время выполнения задачи
 появление арифметической или машинной ошибки, прерываний, связанных с неправильной адресацией или
выполнением привилегированных команд.
36
 вспомогательные, обеспечивающие организацию сетей, использование служебных программ и языков высокого
уровня.
Основные функции (простейшие ОС):
 Загрузка приложений в оперативную память и их выполнение;
 Стандартизованный доступ к периферийным устройствам (устройства ввода-вывода);
 Управление оперативной памятью (распределение между процессами, виртуальная память);
 Управление доступом к данным на энергонезависимых носителях (таких как Жѐсткий диск, Компакт-диск и т.
д.), как правило с помощью файловой системы;
 Пользовательский интерфейс;
 Сетевые операции, поддержка стека протоколов
Дополнительные функции:
 Параллельное или псевдопараллельное выполнение задач (многозадачность);
 Взаимодействие между процессами: обмен данными, взаимная синхронизация;
 Защита самой системы, а также пользовательских данных и программ от злонамеренных действий пользователей
или приложений;
 Разграничение прав доступа и многопользовательский режим работы (аутентификация, авторизация).
5. Мультипрограммный (многопрограммном) режим работы вычислительной системы (ВС)
В мультипрограммном (многопрограммном) режиме работы в памяти ЭВМ находится несколько программ, которые
выполняются частично или полностью между переходами процессора от одной задачи к другой в зависимости от
ситуации, складывающейся в системе.
В мультипрограммном режиме более эффективно используются машинное время и оперативная память, так как при
возникновении каких-либо ситуаций в выполняемой задаче, требующих перехода процессора в режим ожидания,
процессор переключается на другую задачу и выполняет ее до тех пор, пока в ней не возникает подобная ситуация, и т.д.
При реализации мультипрограммного режима требуется определять очередность переключения задач и выбирать
моменты переключения, чтобы эффективность использования машинного времени и памяти была максимальной.
Мультипрограммный режим обеспечивается аппаратными средствами ЭВМ и средствами операционной системы.
Он характерен для сложных ЭВМ, где стоимость машинного времени значительно выше, чем у микро-ЭВМ. Разработаны
также мультипрограммные ОС, позволяющие одновременно следить за решением нескольких задач и повышать
эффективность работы пользователя.
6. Порядок использования ресурса в ЭВМ
1. Сообщает о своем требовании. При этом указывается вид ресурса и, если надо, его объем. Например, при
запросе ОП указывается количество адресуемых ячеек, необходимое для дальнейшей работы.
2. Команда обращения к ОС передает ей управление и переводит ЦП в привилегированный режим работы (по
прерыванию), если такой существует. Большинство ЭВМ имеют два (и более) режима работы:
привилегированный (режим супервизора) и пользовательский. Кроме того, могут быть режимы для эмуляции
какой-нибудь другой ЭВМ или для организации виртуальной машины, защищенной от остальных вычислений,
осуществляемых на этом же компьютере, и т. д.
Ресурс может быть выделен задаче, обратившемуся к ОС с соответствующим запросом, если:
 ресурс свободен и в системе нет запросов от задач более высокого приоритета к этому же ресурсу;
 текущий запрос и ранее выданные запросы допускают совместное использование ресурсов;
 ресурс используется задачей низшего приоритета и может быть временно отобран (разделяемый ресурс).
3. Получив запрос, ОС либо удовлетворяет его и возвращает управление задаче, выдавшей данный запрос, либо,
если ресурс занят, ставит задачу в очередь к ресурсу, переводя ее в состояние ожидания (блокируя). Очередь к
ресурсу может быть организована несколькими способами, но чаще всего она реализуется с помощью списковой
структуры.
4. После окончания работы с ресурсом задача опять с помощью специального вызова супервизора сообщает ОС
об отказе от ресурса, либо ОС забирает ресурс сама, если управление возвращается супервизору после
выполнения какой-либо системной функции.
5. Супервизор(программа, управляющая процессом, памятью и работой оборудования операционной
системы) ОС, получив управление по этому обращению, освобождает ресурс.
6. ОС проверяет, имеется ли очередь к освободившемуся ресурсу. Если очередь есть, то в зависимости от
принятой дисциплины обслуживания и приоритетов заявок он выводит из состояния ожидания задачу, ждущую
ресурс, и переводит ее в состояние готовности к выполнению, после чего либо передает управление ей, либо
возвращает управление задаче, только что освободившей ресурс.
7. При выдаче запроса на ресурс задача указывает, хочет ли она владеть ресурсом монопольно или допускает
совместное использование с другими задачами. Например, с файлом можно работать монопольно, а можно и
совместно с другими задачами.
Если в системе имеется некоторая совокупность ресурсов, то управлять их использованием можно на основе
некоторой стратегии. Стратегия подразумевает четкую формулировку целей, следуя которым можно добиться
эффективного распределения ресурсов.
При организации управления ресурсами всегда требуется принять решение о том, что в данной ситуации выгоднее:
быстро обслуживать отдельные наиболее важные запросы, предоставлять всем процессам равные возможности или
обслуживать максимально возможное количество процессов и наиболее полно использовать ресурсы

37
7. Классификация ОС по способам построения
По способам построения (архитектурным особенностям системы). ОС разделяются:
 на микроядерные (ОСРВ QNX)
 на микроядерные (монолитные), В качестве монолитной можно назвать Windows 95/98 или ОС Linux. Т.к. ядро
ОС Windows недоступно (закрыты исходные коды и нет программы для сборки (компиляции) этого ядра), то в случае с
Linux возможна сборка ядра, с программными модулями и драйверами.
8. Требования к ОС ПК
Общие требования к ОС для управления ресурсами:
 планирование ресурса — то есть определение, какому процессу, когда и в каком количестве (если ресурс может
выделяться частями) следует выделить данный ресурс;
 удовлетворение запросов на ресурсы;
 отслеживание состояния и учет использования ресурса — то есть поддержание оперативной информации о
том, занят или свободен ресурс и какая доля ресурса уже распределена;
 разрешение конфликтов между процессами.
Для решения задач управления ресурсами разные ОС используют различные алгоритмы, особенности которых и
определяют облик ОС в целом, включая характеристики производительности, область применения и даже
пользовательский интерфейс.
Алгоритм управления вычислительным процессом определяет может ли ОС использоваться в режиме:
 разделения времени,
 пакетной обработки
 реального времени.
В мультипрограммной системе образуются очереди заявок от одновременно выполняемых программ к разделяемым
ресурсам компьютера: процессору, странице памяти, к принтеру, к диску. ОС организует обслуживание этих очередей по
разным алгоритмам: в порядке поступления, на основе приоритетов, кругового обслуживания и т. д.
Управление ресурсами составляет важную часть функций любой ОС, в особенности мультипрограммной.
Большинство функций управления ресурсами выполняются ОС автоматически и прикладному программисту
недоступны.
Главным требованием, предъявляемым к ОС, является выполнение ею основных функций эффективного управления
ресурсами и обеспечение удобного ПИ и прикладных программ. Современная ОС, как правило, должна поддерживать
мультипрограммную обработку, виртуальную память, свопинг, многооконный графический ПИ, а также выполнять
многие другие необходимые функции и услуги. Кроме этих требований функциональной полноты к ОС предъявляются:
 Расширяемость. Способность кода ядра к поддержке новых типов внешних устройств или новых сетевых
технологий через функциональный интерфейс без нарушения модульной структуры ОС.
 Переносимость. Код ядра ОС должен иметь несколько вариантов реализации и не зависеть от аппаратной
платформы ПК.
 Совместимость ОС имеет средства (на уровне кодов или исходных текстов) для выполнения прикладных
программ и поддержку пользовательских интерфейсов, написанных для других ОС.
 Надежность и отказоустойчивость ОС определяются архитектурой ОС, программной поддержкой дисковых
массивов или UPS, а также отлаженностью кода ядра.
 Безопасность ОС выражена в защите данных и других ресурсов ВС от несанкционированного доступа (средства
аутентификации пользователей, дифференцированность прав доступа к ресурсам, аудита всех «подозрительных» для
системы событий).
Производительность ОС определяется архитектурой, качеством программного кода, возможность исполнения на
высокопроизводительной (многопроцессорной) платформе.
Функции ОС ПК обычно группируются либо в соответствии с типами локальных ресурсов, которыми управляет ОС,
либо в соответствии со специфическими задачами, применимыми ко всем ресурсам (подсистемам). Наиболее важными
подсистемами управления ресурсами являются:
 подсистемы управления процессами, памятью, файлами и внешними устройствами,
 подсистемами пользовательского интерфейса, защиты данных и администрирования
9. Управление файлами и внешними устройствами в ОС ПК
Управление ОС файлами включает:
 Виртуализацию отдельного набора данных, хранящихся на ВЗУ, в виде файла — простой неструктурированной
последовательности байтов, имеющей символьное имя.
 Группировку файлов в каталоги, которые, в свою очередь, образуют группы — каталоги более высокого
уровня.
 Создание для пользователя среды (интерфейса), в которой легко выполнять действия поиска, удаления, вывода
содержимого на внешнее устройство (например, на дисплей), изменение и сохранение содержимого.
 Преобразование символьных имен файлов, с которыми работает пользователь или прикладной программист, в
физические адреса данных на диске, организует совместный доступ к файлам, защищает их от несанкционированного
доступа, организует каталоги в виде иерархической структуры.
 Взаимодействие с подсистемой управления внешними устройствами, которая по запросам файловой системы
осуществляет передачу данных между дисками и оперативной памятью.

38
 Создание интерфейса ко всем устройствам, подключенным к компьютеру, с учетом программных и аппаратных
особенностей (с помощью драйвера). Номенклатура выпускаемых накопителей на жестких, гибких и оптических
дисках, принтеров, сканеров, мониторов, плоттеров, модемов, сетевых адаптеров и более специальных устройств ввода-
вывода, таких как, например, аналого-цифровые преобразователи, может насчитывать сотни моделей. Эти модели
отличаться набором и последовательностью команд, с помощью которых осуществляется обмен информацией с ЦП и
ОП, скоростью работы, кодировкой передаваемых данных, возможностью совместного использования и множеством
других деталей.
Поддержание высокоуровневого унифицированного интерфейса прикладного программирования к разнородным
устройствам ввода-вывода является одной из наиболее важных задач ОС. Со времени появления ОС UNIX такой
унифицированный интерфейс в большинстве ОС строится на основе концепции файлового доступа. Эта концепция
заключается в том, что обмен с любым внешним устройством выглядит как обмен с файлом, имеющим имя и
представляющим собой неструктурированную последовательность байтов. В качестве файла может выступать как
реальный файл на диске, так и алфавитно-цифровой терминал, печатающее устройство или сетевой адаптер.
Безопасность данных ВС обеспечивается средствами отказоустойчивости ОС, направленными на защиту от сбоев и
отказов аппаратуры и ошибок ПО, а также средствами защиты от не санкционированного доступа. В последнем случае
ОС защищает данные от ошибочного или злонамеренного поведения пользователей системы
10. Принцип модульности
Модуль – функционально законченный элемент системы с межмодульными интерфейсами, который
предполагает легкий способ его замены другим при наличии заданных интерфейсов. Разделение модулей происходит по
функциональному признаку и определяется используемым методом проектирования системы (снизу вверх или наоборот).
Принцип модульности отражает технологические и эксплуатационные свойства ОС. Наибольший эффект от
его использования достижим в случае, когда принцип распространен одновременно на ОС, прикладные программы и
аппаратуру. Принцип модульности является одним из основных в UNIX-системах.
Транзитные модули (дискрезидентные.) загружаются в ОП при необходимости и, в случае отсутствия свободного
пространства, могут быть замещены другими.
11. Принцип совместимости
Одним из аспектов совместимости является способность ОС выполнять программы, написанные для других систем
или для более ранних версий данной ОС, а также для другой аппаратной платформы.
Необходимо разделять вопросы двоичной совместимости и совместимости на уровне исходных текстов приложений.
Двоичная совместимость достигается в том случае, когда можно взять исполняемую программу и запустить ее на
выполнение на другой ОС Для этого необходима совместимость на:
уровне команд ЦП,
уровне системных вызовов
уровне динамических библиотек.
Совместимость на уровне исходных текстов требует наличия соответствующего транслятора в составе системного
программного обеспечения, а также совмести мости на уровне библиотек и системных вызовов. При этом необходима
перекомпиляция имеющихся исходных текстов в новый выполняемый модуль.
Гораздо сложнее достичь двоичной совместимости между процессорами, основанными на разных архитектурах. Для
того чтобы один компьютер выполнял про граммы другого (например, программу для персонального компьютера типа
IBM PC хочется выполнять на компьютере типа Мас от фирмы Apple), этот компьютер должен работать с машинными
командами, которые ему изначально непонятны. Например, процессор типа PowerPC на Мае должен исполнять двоичный
код, пред назначенный для процессора i80x86. Процессор 80x86 имеет свои собственные дешифратор команд, регистры и
внутреннюю архитектуру. Процессор PowerPC имеет другую архитектуру, он не понимает непосредственно двоичный
код 80x86, поэтому должен выбрать каждую команду, декодировать ее, чтобы определить, для чего она предназначена, а
затем выполнить эквивалентную подпрограмму, написанную для PowerPC. К тому же у PowerPC нет в точности таких же
регистров, флагов и внутреннего арифметико-логического устройства, как в 80x86, поэтому он должен эмулировать все
эти элементы с использованием своих регистров или памяти. И он должен тщательно воспроизводить результаты каждой
команды, что требует специально написанных подпрограмм для PowerPC, гарантирующих, что состояние эмулируемых
регистров и флагов после выполнения каждой команды будет в точности таким же, как и на реальном процессоре 80x86.
Выходом в таких случаях является использование так называемых прикладных сред, или эмуляторов. Учитывая, что
основную часть программы, как правило, составляют вызовы библиотечных функций, прикладная среда имитирует
библиотечные функции целиком, используя заранее написанную библиотеку функций аналогичного назначения, а
остальные команды эмулирует каждую по отдельности.
Одним из средств обеспечения совместимости программных и пользовательских интерфейсов является соответствие
стандартам POSIX. Эти стандарты позволяют создавать программы в стиле UNIX, которые впоследствии могут легко
пере носиться из одной системы в другую.
12. Микроядерные ОС
В микроядерных ОС мы можем выделить центральный компактный модуль, относящийся к супервизорной части
системы. Этот модуль имеет очень небольшие размеры и выполняет относительно небольшое количество управляющих
функций, но позволяет передать управление на другие управляющие модули, которые и выполнят затребованную
функцию. Микроядро — это минимальная главная (стержневая) часть операционной системы, служащая основой
модульных и переносимых расширений. Микроядро само является модулем системного ПО, работающим в наиболее

39
приоритетном состоянии компьютера и поддерживающим связи с остальной частью ОС, которая рассматривается как
набор серверных приложений (служб).
Службы ОС по отношению к микроядру позволяют:
 драйверам устройств добиться наибольшей эффективности при сохранении независимыми от аппаратуры;
 следует ли выполнять операции, не относящиеся к ядру, в пространстве ядра или в пространстве
пользователя;
 стоит ли сохранять программы имеющихся подсистем (например, UNIX) или лучше отбросить все и начать
с нуля.
Технология микроядра позволяет создать необходимую среду верхнего уровня иерархии, из которой можно легко
получить доступ ко всем функциональным возможностям уровня аппаратного обеспечения. При этом микроядро
является стартовой точкой для создания всех остальных модулей системы. Все эти остальные модули, реализующие
необходимые системе функции, вызываются из микроядра и выполняют сервисную роль. При этом они получают статус
обычного процесса или задачи. Можно сказать, что микроядерная архитектура соответствует технологии клиент-сервер.
Имен но эта технология позволяет в большей мере и с меньшими трудозатратами реализовать перечисленные выше
принципы проектирования операционных систем.
Важнейшая задача разработки микроядра заключается в выборе базовых примитивов, которые должны находиться в
микроядре для обеспечения необходимого и достаточного сервиса. В микроядре содержится и исполняется минимальное
количество кода, необходимое для реализации основных системных вызовов. В число этих вызовов входят передача
сообщений и организация другого общения между внешними по отношению к микроядру процессами, поддержка
управления прерываниями, а также ряд других весьма немногочисленных функций. Остальные системные функции,
характерные для «обычных» (не микроядерных) ОС, обеспечиваются как модульные дополнения-процессы,
взаимодействующие главным образом между собой и осуществляющие взаимодействие посредством передачи
сообщений.
Для большинства микроядерных ОС основой для такой архитектуры выступает технология микроядра Mach.
Исполняемые микроядром функции ограничены в целях сокращения его размеров и максимизации количества кода,
работающего как прикладная программа. Микроядро включает только те функции, которые требуются в целях
определения набора абстрактных сред обработки для прикладных программ и организации совместной работы
приложений. В результате микроядро обеспечивает только пять различных типов сервисов:
 управление виртуальной памятью;
 поддержка заданий и потоков;
 взаимодействие между процессами (Inter-Process Communication, IPC);
 управление поддержкой ввода-вывода и прерываниями;
 сервисы хоста (host)1 и процессора.
Хост — компьютер, имеющий IP-адрес.
Другие подсистемы и функции ОС, такие как файловые системы, поддержка ПУ и традиционные программные
интерфейсы, оформляются как системные сервисы либо получают статус обычных обрабатывающих задач. Эти
программы работают как приложения на микроядре.
С применением концепции нескольких потоков выполнения на одно задание микроядро создает прикладную среду,
обеспечивающую использование мультипроцессоров; при этом совсем не обязательно, чтобы машина была
мультипроцессорной: на однопроцессорной машине различные потоки просто выполняются в разное время. Вся
поддержка, требуемая для мультипроцессорных машин, сконцентрирована в сравнительно малом и простом микроядре.
Благодаря своим небольшим размерам и способности поддерживать остальные службы в виде обычных процессов,
выполняющихся вместе с прикладными программами, сами микроядра проще, чем ядра монолитных или модульных ОС.
С микроядром супервизорная часть ОС разбивается на модульные части, которые могут быть сконфигурированы целым
рядом способов, позволяя строить большие системы добавлением частей к меньшим. Например, каждый аппаратно-
независимый нейтральный сервис логически отделен и может быть сконфигурирован различными способами. Микроядра
также облегчают поддержку мультипроцессоров созданием стандартной программной среды, которая может
использовать несколько процессоров, если они есть, однако если их нет, работает на одном. Специализированный код для
мультипроцессоров ограничен самим микроядром. Более того, сети из общающихся между собой микроядер могут быть
использованы для операционной системной поддержки возникающего класса массивно параллельных машин.
В некоторых случаях использование микроядерного подхода на практике сталкивается с определенными
сложностями, что проявляется в некотором замедлении скорости выполнения системных вызовов при передаче
сообщений через микроядро по сравнению с классическим подходом. С другой стороны, можно констатировать и
обратное. Поскольку микроядра малы и в значительной степени оптимизированы, при соблюдении ряда условий они
позволяют обеспечить характеристики реального времени, требующиеся для управления устройствами и для
высокоскоростных коммуникаций. Наконец, хорошо структурированные микроядра обеспечивают изолирующий слой
для аппаратных различий, которые не маскируются применением языков программирования высокого уровня. Таким
образом, они упрощают перенесение кода и увеличивают уровень его повторного использования.
Наиболее ярким представителем микроядерных ОС является ОС реального времени QNX. Микроядро QNX
поддерживает только планирование и диспетчеризацию процессов, взаимодействие процессов, обработку прерываний и
сетевые службы нижнего уровня. Это микроядро обеспечивает всего лишь пару десятков системных вызовов, но
благодаря этому оно может быть целиком размещено во внутреннем КЭШе даже таких процессоров, как Intel 486. Как
известно, разные версии этой ОС имели и разные объемы ядер — от 8 до 46 Кбайт.

40
Чтобы построить минимальную систему QNX, требуется добавить к микроядру менеджер процессов, который
создает процессы и управляет ими и памятью процессов. Чтобы ОСQNX была применима не только во встроенных и
бездисковых системах, нужно добавить файловую систему и менеджер устройств. Эти менеджеры исполняются вне
пространства ядра, так что ядро остается небольшим
13. Приоритеты задач
Должно существовать понятие приоритета потока (задачи). Проблема в том, чтобы определить, какой задаче ресурс
требуется более всего. В идеальной ситуации ОСРВ отдает ресурс потоку или драйверу с ближайшим крайним сроком,
что называется управлением временным ограничением (DeadLine DrivenOS). Что бы реализовать это временное
ограничение, ОС должна знать, сколько времени требуется каждому из выполняющихся потоков для завершения.
Операционных систем, построенных по этому принципу, практически нет, так как он слишком сложен для реализации.
Поэтому разработчики операционных систем принимают иную точку зрения: вводится понятие уровня приоритета для
задачи, и временные ограничения сводятся к приоритетам. Так как умозрительные решения чреваты ошибками,
показатели СРВ при этом снижаются. Чтобы более эффективно осуществить указанное преобразование ограничений,
проектировщик может воспользоваться теорией расписаний или имитационным моделированием, хотя и это может
оказаться бесполезным. Тем не менее, так как на сегодняшний день не имеется иного решения, без понятия приоритета
потока не обойтись.
14. Интерфейс ОС
Т.к. ОС выступает как интерфейс между аппаратурой компьютера и пользователем с его задачами. Под
интерфейсами ОС понимают специальные адаптеры системного и прикладного программирования (API),
предназначенные для выполнения перечисленных ниже задач.
Управление процессами, которое включает в себя следующий набор основных функций:
• запуск, приостановка и снятие задачи с выполнения;
• задание или изменение приоритета задачи;
• взаимодействие задач между собой (механизмы сигналов, семафорные примитивы, очереди, конвейеры,
почтовые ящики);
• вызов удаленных процедур (Remote Procedure Call, RPC).
 Управление памятью:
• запрос на выделение блока памяти;
• освобождение памяти;
• изменение параметров блока памяти (например, память может быть заблокирована процессом либо
предоставлена в общий доступ);
• отображение файлов на память (имеется не во всех системах).
 Управление вводом-выводом:
• запрос на управление виртуальными устройствами (напомним, что управление вводом-выводом является
привилегированной функцией самой ОС, и никакая из пользовательских задач не должна иметь
возможности непосредственно управлять устройствами);
• файловые операции (запросы к системе управления файлами на создание, изменение и удаление данных,
организованных в файлы).
Здесь мы перечислили основные наборы функций, которые выполняются ОС соответствующим запросам от задач.
Что касается интерфейса пользователя с операционной системой, то он реализуется с помощью специальных
программных модулей, которые принимают его команды на соответствующем языке (возможно, с использованием
графического интерфейса) и транслируют их в обычные вызовы в соответствии с основным интерфейсом системы.
Обычно эти модули называют интерпретатором команд. Так, например, функции такого интерпретатора в MS DOS
выполняет модуль COMMAND.COM. Получив от пользователя команду, такой модуль после лексического и
синтаксического анализа либо сам выполняет действие, либо, что случается чаще, обращается к другим модулям ОС,
используя механизм API. Надо заметить, что в последние годы" большую популярность получили графические
интерфейсы (Graphical User Interface, GUI), в которых задействованы соответствующие манипуляторы типа мышь или
трекбол (track-ball)1. Указание курсором на объект и щелчок или двойной щелчок на соответствующей кнопке мыши
приводит к каким-либо действиям — запуску программы, ассоциированной с объектом, выбору и/или активизации меню
и т. д. Можно сказать, что такая интерфейсная подсистема транслирует «команды» пользователя в обращения к
операционной системе.
Управление GUI является частным случаем задачи управления вводом-выводом и не относится к функциям ядра ОС,
хотя в ряде случаев разработчики ОС относят функции GUI к основному системному интерфейсу API.
Следует отметить, что имеются два основных подхода к управлению задачами. Так, в одних системах порождаемая
задача наследует все ресурсы задачи-родителя, тогда как в других системах существуют равноправные отношения, и при
порождении нового процесса ресурсы для него запрашиваются у операционной системы.
Обращения к ОС в соответствии с имеющимся интерфейсом API могут осуществляться как посредством вызова
подпрограммы с передачей ей необходимых параметров, так и через механизм программных прерываний. Выбор метода
реализации вызовов функций API должен определяться архитектурой плат формы.
В ОС MS DOS, которая разрабатывалась для однозадачного режима (поскольку процессор i80x86 не поддерживал
мультипрограммирование), использовался механизм программных прерываний. При этом основной набор функций API
был доступен через точку входа обработчика int 21h.

41
В более сложных системах имеется не одна точка входа, а множество — по количеству функций API. Так, в
большинстве операционных систем используется метод вызова подпрограмм. В этом случае вызов сначала передается в
модуль API, на пример в библиотеку времени выполнения (Run Time Library, RTL) *, который перенаправляет его
соответствующим обработчикам программных прерываний, входящим в состав ОС. Использование механизма
прерываний вызвано, главным образом, тем, что при этом процессор переводится в режим супервизора.
15. Интерфейс POSIX
POSIX (Portable Operating System Interface for Computer Environments — независимый от платформы системный
интерфейс) — это стандарт IEEE (Institute of Electrical and Electronics Engineers — институт инженеров по электротехнике
и радиоэлектронике), описывающий системные интерфейсы для открытых ОС, в том числе оболочки, утилиты и
инструментарии. POSIX имеет стандартизированные задачи обеспечения безопасности, реального времени, процессы
администрирования, сетевые функции и обработка транзакций. Стандарт базируется на UNIX-системах, но допускает
реализацию и в других ОС
Интерфейс POSIX начинался как попытка пропаганды институтом IEEE идей переноси мости приложений в UNIX-
средах путем разработки абстрактного независимого от платформы стандарта. Однако POSIX не ограничивается только
UNIX-системами; существуют различные реализации этого стандарта в системах, которые соответствуют требованиям,
предъявляемым стандартом IEEE Standard 1003.1-1990 (POSIX.1). Например, известная ОС реального времени QNX
соответствует спецификациям этого стандарта, что облегчает перенос приложений в эту систему, но UNIX-системой не
является ни в каком виде, ибо ее архитектура использует абсолютно иные принципы.
Этот стандарт подробно описывает систему виртуальной памяти (Virtual Memory System, VMS), многозадачность
(Multiprocess Executing, МРЕ) и технологию переноса ОС (CTOS). Таким образом, на самом деле POSIX представляет
собой множество стандартов POSIX. I-POSIX. 12. В табл. 7.1 перечислены основные направления, описываемые
данными стандартами. Следует также особо отметить, что в POSIX. 1 основным языком описания системных функций
API предполагается язык С.
Таблица 7.1. Семейство стандартов POSIX
Стандарт Стандарт Краткое описание
ISO
POSIX.0 Нет Введение в стандарт открытых систем. Данный документ не является
стандартом в чистом виде, а представляет собой рекомендации и краткий обзор
технологий
POSIX. 1 Да Системный интерфейс API (язык С)
POSIX.2 Нет Оболочки и утилиты (одобренные IEEE)
POSIX.3 Нет Тестирование и верификация
POSIX.4 Нет Задачи реального времени и потоки выполнения
POSIX.5 Да Использование языка ADA применительно к стандарту POSIX. 1
POSIX.6 Нет Системная безопасность
POSIX.7 Нет Администрирование системы
POSIX.8 Нет Сети, «прозрачный» доступ к файлам, абстрактные сетевые интерфейсы, не
зависящие от физических протоколов, вызовы RPC, связь системы с
приложениями, зависящими от протокола
POSIX.9 Да Использование языка Fortran, применительно к стандарту POSIX. 1
POSIX. 10 Нет Super-computing Application Environment Profile (AEP)
POSIX. 11 Нет Обработка транзакций АЕР
POSIX. 12 Нет Графический интерфейс пользователя (GUI)

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

Часть стандартов описана очень строго, тогда как другая часть только поверхностно раскрывает основные
требования. Нередко программные системы заявляются как POSIX-
совместимые, хотя таковыми их назвать нельзя. Причины кроются в
формальном подходе к реализации интерфейса POSIX в различных ОС. На рис.
7.2 изображена типовая схема реализации строго соответствующего POSIX
приложения.
Из рисунка видно, что для взаимодействия с ОС программа использует
только библиотеки POSIX. 1 и стандартную библиотеку RTL языка С, в которой
возможно использование только НО различных функций, также описанных
стандартом POSIX. 1.
К сожалению, достаточно часто с целью увеличения производительности
той или иной подсистемы либо для введения фирменных технологий, которые
ограничивают область применения приложения соответствующей операционной
средой, при программировании используются другие функции, не отвечающие Рис. 7.2. Схема реализации приложения,
стандарту POSIX. строго соответствующего стандарту
POSIX

42
Реализации стандарта POSIX на уровне ОС различны. Если UNIX-системы в своем абсолютном большинстве изначально
соответствуют спецификациям IEEE Standard 1003.1-1990, то WinAPI не является POSIX-совместимым. Однако для его
поддержки в ОС Windows NT введен специальный модуль API для поддержки стандарта POSIX, работающий на уровне
привилегий пользовательских процессов. Данный модуль обеспечивает преобразование и передачу вызовов из
пользовательской программы к ядру системы и обратно, работая с ядром через WinAPI. Прочие приложения, написанные
с использованием WinAPI, могут передавать информацию POSIX приложениям через стандартные механизмы потоков
ввода-вывода stdin и stdout
16. Виды процессов в ЭВМ
Системные управляющие вычислительные процессы, представляют работу супервизору ОС. Для системных
управляющих процессов, в отличие от обрабатывающих, ресурсы распределяются изначально и однозначно. Эти
вычислительные процессы сами управляют ресурсами системы, в борьбе за которые конкурируют все остальные
процессы. Например, в так называемых «микроядерных» ОС большинство управляющих программных модулей самой
ОС и даже драйверы имеют статус высокоприоритетных процессов, для выполнения которых необходимо выделить
соответствующие ресурсы. В ОС реального времени QNX фирмы Quantum Software Systems. Аналогично и в UNIX-
системах, которые хоть и не относятся к микроядерным, выполнение системных программных модулей тоже имеет
статус системных процессов получающих ресурсы для своего исполнения.
Процессы, занимающиеся распределением и управлением ресурсов. Приостановленных процессов может быть
несколько. Они могут образовывать очередь задач, которые возобновят свои вычисления, как только им будет
предоставлен ЦП. Некоторые процессы, при своем выполнении требующие ввода или вывода данных, на время
выполнения этих запросов могут освобождать ЦП. Такие события тоже должны для ОС помечаться соответствующим
образом. Информация о состоянии процесса содержится в информационной структуре, доступной супервизору.
В активном состоянии процесс может конкурировать за ресурсы ВС и может иметь состояния:
блокирования, или ожидания, — затребованные ресурсы не могут быть предоставлены, или не завершена
операция ввода-вывода.
готовности к выполнению — ресурсы могут быть предоставлены, тогда процесс перейдет в состояние
выполнения;
выполнения — все затребованные процессом ресурсы выделены (в этом состоянии в каждый момент времени
может находиться только один процесс, если речь идет об однопроцессорной ВС);
В большинстве ОС последнее состояние, в свою очередь, подразделяется на множество состояний ожидания,
соответствующих определенному виду ресурса, из-за отсутствия которого процесс переходит в заблокированное
состояние.
В обычных ОС, как правило, процесс появляется при
запуске какой-нибудь программы. ОС выделяет для нового
процесса информационную структуру — так называемый
дескриптор процесса, и процесс (задача) начинает
выполняться. Поэтому пассивного состояния в большинстве
систем не существует.
В ОС реального времени (ОСРВ) состав выполняемых
ею программ (задач) известен заранее. Известны и многие их
параметры, которые необходимо учитывать при
распределении ресурсов (например, объем памяти, приоритет,
средняя длительность выполнения, открываемые файлы,
используемые устройства и проч.). Поэтому для них заранее
заводят дескрипторы задач с тем, чтобы впоследствии не
тратить драгоценное время на организацию дескриптора и
поиски для него необходимых ресурсов.
Вывод: В ОСРВ многие процессы (задачи) могут
находиться в состоянии бездействия, рис. 1.1. состояние Рис. 1.1.. Граф состояний процесса
отделенное пунктиром.
17. Описатель задач в ОС
Описатель задач постоянно располагаются в ОП и ускоряет работу супервизора, который организует очередь и
отображает изменение состояния процесса перемещением соответствующего описателя из одного списка в другой. Для
каждого состояния ОС ведет соответствующий список задач, находящихся в этом состоянии. Однако для состояния
ожидания обычно имеется не один список, а столько, сколько различных видов ресурсов могут вызывать состояние
ожидания.
В некоторых ОС количество описателей (файле CONFIG.SYS) определяется жестко и заранее (на этапе
генерации варианта ОС или в конфигурационном файле, который используется при загрузке ОС), в других по мере
необходимости система может выделять участки памяти под новые описатели В Windows NT/2000/XP количество
описателей представлено переменной величиной. Для просмотра количества текущих описателей можно нажать
одновременно комбинацию клавиш Ctrl+Shift+Esc, появится окно Диспетчера задач. На вкладке Быстродействие этой
программы мы увидим поле с названием Всего дескрипторов и соответствующее число. Тут же указывается количество
дескрипторов для управления потоками (задачами) и число полноценных вычислительных процессов. Более подробно о
процессах и потоках см. далее. В ОС реального времени чаще всего количество процессов фиксируется, и, следовательно,

43
целесообразно заранее определять (на этапе генерации или конфигурирования ОС) количество дескрипторов. Для
использования таких ОС в качестве систем общего назначения обычно количество дескрипторов бралось с некоторым
запасом,
18. Многопоточный режим в ОС
Многопоточность — это возможность параллельно выполнять несколько видов операций в одной прикладной
программе. Многопоточность эффективна для выполнения распределенных приложений. Например, многопоточный
сервер может параллельно выполнять запросы сразу нескольких клиентов. Для систем Windows ярко выраженной
многопоточностью обладают такие продукты, как SQL Server, Oracle. И хотя те же Word, Excel, Internet Explorer также
при своей работе образуют потоки, явного параллелизма в этих программах почти не поддерживается. Поэтому при
увеличении числа процессоров в ПК такие программы не начинают выполняться быстрее.
«Процесс» предполагает, что при диспетчеризации нужно учитывать все ресурсы, закрепленные за ним. При
манипулировании задачами-в потоках можно менять только контекст задачи, если мы переключаемся с одной задачи
на другую в рамках одного процесса. Все остальные вычислительные ресурсы при этом не затрагиваются. Каждый
процесс всегда состоит, по крайней мере, из одного потока выполнения, и только если имеется внутренний
параллелизм, программист может «расщепить» один поток на несколько параллельных.
Для многопроцессорных систем с общей памятью потоки позволяют:
 ускорить выполнение задач, которые допускают распараллеливание,
 уменьшить простой процессорных элементов.
Для эффективности многопоточной системы необходимо:
 Уменьшить взаимодействие потоков между собой, ибо ускорение от одновременного выполнения
параллельных потоков может быть сведено к минимуму из-за задержек синхронизации и обмена данными.
 Обеспечить последовательное выполнение с обеспечение каждого потока собственным программным
счетчиком и стеком.
Свойства потоков в многопоточной системе:
 Потоки могут порождать потоки-потомки. Каждый поток может находиться в одном из активных состояний.
Пока один поток заблокирован (или просто находится в очереди готовых к исполнению за дач), другой поток того же
процесса может выполняться.
 Потоки разделяют процессорное время так же, как это делают обычные процессы, в соответствии с раз
личными вариантами диспетчеризации.
 Потоки имеют одно и то же виртуальное адресное пространство своего процесса. Это означает, что они
разделяют одни и те же глобальные переменные. Поскольку каждый поток может иметь доступ к каждому виртуальному
адресу, один поток может использовать стек другого потока.
 Между потоками нет полной защиты, потому что, во-первых, это невозможно, а во-вторых, не нужно.
 Все потоки одного процесса всегда решают общую задачу одного пользователя, и механизм потоков
используется здесь для более быстрого решения задачи путем ее распараллеливания. При этом программисту очень
важно получить в свое распоряжение удобные средства организации взаимодействия частей одной программы.
 Все потоки разделяют также набор открытых файлов, устройства, выделенные процессу, имеют одни и те же
наборы сигналов, семафоры и т.
 Каждый поток имеет программный счетчик, стек, рабочие регистры процессора, потоки-потомки, состояние.
 Потоки допускают взаимодействия, т.к. относящиеся к одному процессу, выполняются в одном и том же
виртуальном адресном пространстве.
Программист, создающий многопоточное приложение, может заранее продумать работу множества потоков
процесса таким образом, чтобы они могли
взаимодействовать наиболее выгодным способом, а
не конкурировать за ресурсы тогда, когда этого
можно избежать. Для хранения контекста задачи в
ЦП с архитектурой i32 имеется специальный
сегмент состояния задачи (Task State Segment, TSS).
А для отображения информации о процессе
используется уже иная информационная структура,
однако она включает в себя TSS. Другими словами,
сегмент состояния задачи. Таким образом,
дескриптор процесса больше по размеру, чем TSS, и
включает в себя такие традиционные поля, как
идентификатор процесса, его имя, тип, приоритет и
проч.
19. Дисциплины диспетчеризации
Известно большое количество дисциплин
диспетчеризации, то есть правил формирования
очереди готовых к выполнению задач, в
соответствии с которыми формируется эта очередь
(список).

44

Рис. 5.1. Дисциплины диспетчеризации


Иногда их называют дисциплинами обслуживания, опуская тот факт, что речь идет о распределении процессорного
времени.
Одни дисциплины диспетчеризации дают наилучшие результаты для одной стратегии обслуживания, в то время как
для другой стратегии они могут быть вовсе неприемлемыми. Известно большое количество дисциплин диспетчеризации.
Рассмотрим те, которые признаны наиболее эффективными и до сих пор имеют применение.
Прежде всего, различают два больших класса дисциплин обслуживания:
 Бесприоритетные
 Приоритетные.
При бесприоритетном обслуживании выбор задач производится в некотором заранее установленном порядке без
учета их относительной важности и времени обслуживания.
При реализации приоритетных дисциплин обслуживания отдельным задачам предоставляется преимущественное
право попасть в состояние исполнения.
Перечень дисциплин обслуживания и их классификация приведены на рис. 5.1.
В концепции приоритетов имеем варианты:
 Статический приоритет;
 Динамический приоритет требует дополнительных расходов на вычисление значений приоритетов
исполняющихся задач, поэтому во многих ОС реального времени используются методы диспетчеризации на основе
абсолютных приоритетов. Это позволяет сократить время реакции системы на очередное событие, однако требует
детального анализа всей системы для правильного присвоения соответствующих приоритетов всем исполняющимся
задачам с тем, чтобы гарантировать обслуживание.
Свойства дисциплин диспетчеризации.
FCFS (First Come First Served — первым пришел, первым обслужен), согласно которой задачи обслуживаются «в по
рядке очереди», то есть в порядке их появления. Те задачи, которые были заблокированы в процессе работы (попали в
какое-либо из состояний ожидания, например из-за операций ввода-вывода), после перехода в состояние готовности
вновь ставятся в эту очередь готовности. При этом возможны два варианта.
Первый (самый простой) — это ставить разблокированную задачу в конец очереди готовых к выполнению задач.
Этот вариант применяется чаще всего. Второй вариант заключается в том, что диспетчер помещает разблокированную
задачу перед теми задачами, которые еще не выполнялись. Другими словами, в этом случае образуется две очереди (рис.
5.2): одна очередь образуется из новых задач, а вторая очередь — из ранее выполнявшихся, но попавших в состояние
ожидания. Такой подход позволяет реализовать стратегию обслуживания «по возможности заканчивать вычисления в
порядке их появления». Эта дисциплина обслуживания не требует внешнего вмешательства в ход вычислений, при ней не
происходит перераспределения процессорного времени. Про нее
можно сказать, что она относится к не вытесняющим
дисциплинам.
Существующие дисциплины диспетчеризации процессов
могут быть разбиты на два класса:
 вытесняющие (preemptive)
 не вытесняющие (non-preemptive).
В первых пакетных ОС часто реализовывали параллельное
выполнение заданий без принудительного перераспределения
процессора между задачами. В большинстве современных ОС
для мощных ВС, а также в ОС для ПК, ориентированных на
высокопроизводительное выполнение приложений (Windows
9x/NT/2000/XP, Linux, OS/2), реализованы вытесняющие
дисциплины диспетчеризации (вытесняющая многозадачность).
К достоинствам этой дисциплины прежде всего можно
отнести простоту реализации и малые расходы системных Рис. 5.2. Дисциплина диспетчеризации FCFS
ресурсов на формирование очереди задач.
Однако эта дисциплина приводит к тому, что при увеличении загрузки ВС растет и среднее время ожидания
обслуживания, причем короткие задания (требующие небольших затрат машинного времени) вынуждены ожидать
столько же, сколько трудоемкие задания. Избежать этого недостатка позволяют дисциплины SJN и SRT. Правило FCFS
применяется и в более сложных дисциплинах диспетчеризации. Например, в приоритетных дисциплинах
диспетчеризации, если имеется несколько задач с одинаковым приоритетом, которые стоят в очереди готовых к
выполнению задач, то попадают они в эту очередь с учетом времени.
SJN( Shortest Job Next — следующим выполняется самое короткое задание) требует, чтобы для каждого задания
была известна оценка в потребностях машинного времени. Необходимость сообщать ОС характеристики задач с
описанием потребностей в ресурсах ВС привела к тому, что были разработаны соответствующие языковые средства. В
частности, ныне уже забытый язык JСL (Job Control Language — язык управления заданиями) был одним из наиболее
известных. Пользователи вынуждены были указывать предполагаемое время выполнения задачи и для того, чтобы они не
злоупотребляли возможностью указать заведомо меньшее время выполнения (с целью возможности получить результаты
раньше других), ввели подсчет реальных потребностей. Диспетчер задач сравнивал заказанное время и время выполнения
и в случае превышения указанной оценки потребности в данном ресурсе ставил данное задание не в начало, а в конец
очереди. Еще в некоторых ОС в таких случаях использовалась система штрафов, при которой в случае превышения
заказанного машинного времени оплата вычислительных ресурсов осуществлялась уже по другим расценкам.

45
SJN предполагает, что имеется только одна очередь заданий, готовых к выполнению. Задания, которые в процессе
своего исполнения были временно заблокированы (например, ожидали завершения операций ввода-вывода), вновь
попадали в конец очереди готовых к выполнению наравне с вновь поступающими. Это приводило к тому, что задания,
которым требовалось очень немного времени для своего завершения, вынуждены были ожидать процессор наравне с
длительными работами, что не всегда хорошо.
Для устранения этого недостатка и была предложена дисциплина SRT (Shortest Remaining Time) — следующим
будет выполняться задание, которому осталось меньше всего выполняться на процессоре.
Все эти три дисциплины обслуживания могут использоваться для пакетных режимов обработки, когда пользователю
не нужно ждать реакции системы — он просто сдает свое задание и через несколько часов получает результаты
вычислений. Для интерактивных же вычислений желательно прежде всего обеспечить приемлемое время реакции
системы. Если же система является мультитерминальной, то помимо малого времени реакции системы на запрос
пользователя желательно, чтобы она обеспечивала и равенство в обслуживании. Можно сказать, что стратегия
обслуживания, согласно которой главным является равенство обслуживания при приемлемом времени обслуживания,
является главной для систем разделения времени. Кстати, UNIX-системы реализуют дисциплины обслуживания, со
ответствующие именно этой стратегии.
Если же это однопользовательская система, но с возможностью мультипрограммной обработки, то желательно,
чтобы те программы, с которыми непосредственно работает пользователь, имели лучшее время реакции, нежели фоновые
задания. При этом желательно, чтобы некоторые приложения, выполняясь без непосредственного участия пользователя
(например, программа получения электронной почты, использующая модем и коммутируемые линии для передачи
данных), тем не менее, гарантированно получали необходимую им долю процессорного времени.
Для решения перечисленных проблем используется дисциплина обслуживания, называемая карусельной (Round
Robin, RR), и приоритетные методы обслуживания.
Дисциплина обслуживания RR предполагает, что каждая
задача получает процессорное время порциями или, как говорят,
квантами времени (time slice) q. После окончания кванта
времени q задача снимается с процессора, и он передается
следующей задаче. Снятая задача ставится в конец очереди
задач, готовых к выполнению. Эту дисциплину обслуживания
иллюстрирует рис. 5.3. Для оптимальной работы системы
необходимо правильно выбрать закон, по которому кванты
времени выделяются задачам.
Величина кванта времени q выбирается как компромисс
между приемлемым временем реакции системы на запросы
пользователей (с тем, чтобы их простейшие запросы не
вызывали длительного ожидания) и накладными расходами на
частую смену контекста задач. Очевидно, что при прерываниях
ОС вынуждена выполнять большой объем работы, связанной со Рис. 5.3. Карусельная дисциплина диспетчеризации
сменой контекста.
Она должна сохранить достаточно большой объем
информации о текущем (прерываемом) процессе, поставить дескриптор снятой задачи в очередь, занести в рабочие
регистры процессора соответствующие значения для той задачи, которая теперь будет выполняться (ее дескриптор
расположен первым в очереди готовых к исполнению задач). Если величина q велика, то при увеличении очереди
готовых к выполнению задач реакция системы станет медленной. Если же величина q мала, то относительная доля
накладных расходов на переключения контекста между исполняющимися задачами увеличится, и это ухудшит
производительность системы.
В некоторых ОС есть возможность указывать в явном виде величину кванта времени или диапазон возможных
значений, тогда система будет стараться выбирать оптимальное значение сама. Например, в ОС OS/2 в файле
CONFIG.SYS есть возможность с помощью оператора TIMESLICE указать минимальное и максимальное значения для
кванта q. Так, например, строка TIMESLICE=32,256 указывает, что минимальное значение равно 32 мс, а максимальное
— 256. Если некоторая задача прервана, поскольку израсходован выделенный ей квант времени q, то следующий
выделенный ей интервал будет увеличен на время, равное одному периоду таймера (около 32 мс), и так до тех пор, пока
квант времени не станет равным максимальному значению, указанному в операторе TIMESLICE. Этот метод позволяет
OS/2 уменьшить накладные расходы на переключение задач в том случае, если несколько задач параллельно выполняют
длительные вычисления. Следует заметить, что диспетчеризация задач в этой ОС реализована, пожалуй, наилучшим
образом с точки зрения ре акции системы и эффективности использования процессорного времени.
Дисциплина карусельной диспетчеризации более всего подходит для случая, когда все задачи имеют одинаковые
права на использование ресурсов ЦП. Однако как мы знаем, равенства в жизни гораздо меньше, чем неравенства. Одни
задачи всегда нужно решать в первую очередь, тогда как остальные могут подождать. Это можно реализовать за счет
того, что одной задаче мы (или диспетчер задач) присваиваем один приоритет, а другой задаче — другой. Задачи в
очереди будут располагаться в соответствии с их приоритетами. Формирует очередь диспетчер задач. ЦП в первую
очередь будет предоставляться задаче с самым высоким приоритетом, и только если ее потребности в ЦП удовлетворены
или она попала в состояние ожидания некоторого события, диспетчер может предоставить его следующей задаче. Многие
дисциплины диспетчеризации по-разному используют основную идею карусельной диспетчеризации и механизм
приоритетов.
46
Дисциплина диспетчеризации RR — это одна из самых распространенных дисциплин. Однако бывают ситуации,
когда ОС не поддерживает в явном виде дисциплину карусельной диспетчеризации. Например, в некоторых ОС
реального времени используется диспетчер задач, работающий по принципу абсолютных приоритетов (процессор
предоставляется задаче с мак симальным приоритетом, а при равенстве приоритетов он действует по принципу
очередности). Другими словами, причиной снятия задачи с выполнения может быть только появление задачи с более
высоким приоритетом. Поэтому если нужно организовать обслуживание задач таким образом, чтобы все они получали
процессорное время равномерно и равноправно, то системный оператор может сам организовать эту дисциплину. Для
этого достаточно всем пользовательским задачам присвоить одинаковые приоритеты и создать одну
высокоприоритетную задачу, которая не должна ничего делать, но которая, тем не менее, будет по таймеру (через
указанные интервалы времени) планироваться на выполнение. Благодаря высокому приоритету этой задачи текущее
приложение будет сниматься с выполнения и ставиться в конец очереди, а поскольку этой высокоприоритетной задаче на
самом деле ничего делать не надо, то она тут же освободит ЦП, и из очереди готовности будет взята следующая задача.
В своей простейшей реализации дисциплина карусельной диспетчеризации предполагает, что все задачи имеют
одинаковый приоритет. Если же необходимо ввести механизм приоритетного обслуживания, то это, как правило,
делается за счет организации нескольких очередей. Процессорное время предоставляется в первую очередь тем задачам,
которые стоят в самой привилегированной очереди. Если она пустая, то диспетчер задач начинает просматривать
остальные очереди. Именно по такому алгоритму действует диспетчер задач в операционных системах OS/2, Windows 9x,
Windows NT/2000/XP и многих других. Отличия в основном заключаются в количестве очередей и в правилах,
касающихся перемещения задач из одной очереди в другую.
Известные дисциплины диспетчеризации (мы здесь рассмотрели только основные) могут применять или не
применять еще одно правило, касающееся перераспределения процессора между выполняющимися задачами.
Есть дисциплины, в которых ЦП принудительно может быть отобран у текущей задачи. Такие дисциплины
обслуживания называют вытесняющими, поскольку одна задача вытесняется другой. Другими словами, возможно
принудительное перераспределение процессорного времени между выполняющимися задачами. Оно осуществляется
самой операционной системой, отбирающей пери одически процессор у выполняющейся задачи.
А есть дисциплины диспетчеризации, в которых ничто не может отобрать у задачи процессор, пока она сама его не
освободит. Освобождение процессора в этом случае, как правило, связано с тем, что задача попадает в состояние
ожидания некоторого события.
Итак, диспетчеризация без перераспределения процессорного времени, то есть не вытесняющая (non-preemptive
multitasking), или кооперативная, многозадачность (cooperative multitasking), — это такой способ диспетчеризации задач,
при котором активная задача выполняется до тех пор, пока она сама, что называется «по собственной инициативе», не
отдаст управление диспетчеру задач для того, чтобы тот выбрал из очереди другой, готовый к выполнению процесс или
поток. Дисциплины обслуживания FCFS, SJN, SRT относятся к не вытесняющим.
Диспетчеризация с перераспределением процессорного времени между задачами, то есть вытесняющая
многозадачность (preemptive multitasking), — это такой способ, при котором решение о переключении процессора с
выполнения одной задачи на выполнение другой принимается диспетчером задач, а не самой активной задачей. При
вытесняющей многозадачности механизм диспетчеризации задач целиком сосредоточен в ОС, и программист может
писать свое приложение, не заботясь о том, как оно будет выполняться параллельно с другими задачами (процессами и
потоками). При этом ОС выполняет следующие функции: определяет момент снятия с выполнения текущей задачи,
сохраняет ее контекст в дескрипторе задачи, выбирает из очереди готовых задач следующую, и запускает ее на
выполнение, загружая ее контекст. Дисциплина RR и многие другие, построенные на ее основе, относятся к
вытесняющим.
При не вытесняющей многозадачности процессорное время распределено между системой и прикладными
программами. Прикладная программа, получив управление от ОС, сама должна определить момент завершения своей
очередной итерации и передачи управления супервизору операционной системы с помощью соответствующего
системного вызова. При этом естественно, что диспетчер задач, так же как и в случае вытесняющей мультизадачности,
формирует очереди задач и выбирает в соответствии с некоторым алгоритмом (например, с учетом порядка поступления
задач или их приоритетов) следующую задачу на выполнение. Такой механизм создает некоторые проблемы как для
пользователей, так и для разработчиков.
Для пользователей это означает, что управление системой может теряться на не который произвольный период
времени, который определяется процессом выполнения приложения (а не системой, старающейся всегда обеспечить
приемлемое время реакции на запросы пользователей). Если приложение тратит слишком много времени на выполнение
какой-либо работы (например, на форматирование диска), пользователь не может переключиться с этой на другую задачу
(например, на текстовый или графический редактор, в то время как форматирование продол жалось бы в фоновом
режиме). Эта ситуация нежелательна, так как пользователи обычно не хотят долго ждать, когда машина завершит свою
задачу.
Поэтому разработчики приложений для не вытесняющей операционной среды, возлагая на себя функции диспетчера
задач, должны создавать приложения так, чтобы они выполняли свои задачи небольшими частями. Так, упомянутая выше
программа форматирования может отформатировать одну дорожку дискеты и вернуть управление системе. После
выполнения других задач система возвратит управление программе форматирования, чтобы та отформатировала
следующую дорожку. Подобный метод разделения времени между задачами работает, но он существенно затрудняет
разработку программ и предъявляет повышенные требования к квалификации программиста.
Например, в ныне уже забытой ОС Windows 3.x нативные 16-разрядные приложения этой системы разделяли между
собой процессорное время именно таким образом. И именно программисты должны были обеспечивать «дружественное»

47
отношение своей программы к другим выполняемым одновременно с ней программам, достаточно часто отдавая
управление ядру системы. Крайним проявлением «недружественности» приложения является его зависание, приводящее
к общему краху системы — прекращению всех вычислений. В системах с вытесняющей многозадачностью такие
ситуации, как правило, исключены, так как центральный механизм диспетчеризации, во-первых, обеспечивает все задачи
процессорным временем, во-вторых, дает возможность иметь надежные механизмы мониторинга вычислений и, в-
третьих, позволяет снять зависшую задачу с выполнения.
Однако распределение функций диспетчеризации между системой и приложениями не всегда является недостатком,
а при определенных условиях может быть и достоинством, потому что дает возможность разработчику приложений
самому планировать распределение процессорного времени наиболее подходящим для данного фиксированного набора
задач образом. Так как разработчик сам определяет в программе момент времени передачи управления, то при этом
исключаются нерациональные прерывания программ в «неудобные» для них моменты времени. Кроме того, легко
разрешаются проблемы совместного использования данных: задача во время каждой итерации использует их монопольно
и уверена, что на протяжении этого периода никто другой их не изменит. Примером эффективного применения не
вытесняющей многозадачности является сетевая операционная система Novell NetWare, в которой в значительной
степени благодаря этому достигнута высокая скорость выполнения файловых операций. Менее удачным оказалось
использование не вытесняющей многозадачности в ОС Windows 3.x. К счастью, на сегодня эта ОС уже нигде не
применяется, ее с успехом заменила сначала Windows 95, а затем и Windows 98. Правда, следует заметить, что при
выполнении в этих ОС старых 16-разрядных приложений, разработанных в свое время для операционной среды Win 16
API, создается виртуальная машина, работающая по принципам не вытесняющей многозадачности.
20. Общие принципы управления памятью в однопрограммных ОС
Простое непрерывное распределение — это самая простая схема, согласно которой вся память условно может
быть разделена на три области:
 область, занимаемая ОС;
 область, в которой размещается исполняемая задача;
незанятая ничем (свободная) область памяти.
Изначально являясь самой первой схемой, схема простого непрерывного распределения памяти продолжает и
сегодня быть достаточно распространенной. Эта схема предполагает, что операционная система не поддерживает
мультипрограммирование, поэтому не возникает проблемы распределения памяти между несколькими задачами.
Программные модули, необходимые для всех программ, располагаются в области самой ОС, а вся оставшаяся память
может быть предоставлена задаче. Эта область памяти получается непрерывной, что облегчает работу системы
программирования. Поскольку в различных однотипных ВК может быть разный состав внешних устройств (и,
соответственно, они содержат различное количество драйверов), для системных нужд могут быть отведены
отличающиеся объемы ОП, и получается, что можно не привязывать жестко виртуальные адреса программы к
физическому адресному пространству. Эта привязка осуществляется на этапе загрузки задачи в память.
Для того чтобы для задач отвести как можно больший объем памяти, ОС строится таким образом, чтобы постоянно в
ОП располагалась только самая нужная ее часть. Эту часть ОП стали называть ядром. Прежде всего, в ядро ОС входят
основные модули супервизора. Для однопрограммных систем понятие супервизора вырождается в модули, получающие
и выполняющие первичную обработку запросов от обрабатывающих и прикладных программ, и в модули подсистемы
памяти. Ведь если программа по ходу своего выполнения запрашивает некоторое множество ячеек памяти, то подсистема
памяти должна их выделить (если они есть), а после освобождения этой памяти подсистема памяти должна выполнить
действия, связанные с возвратом памяти в систему. Остальные модули ОС, не относящиеся к ее ядру, могут быть
обычными диск-резидентными (или транзитными), то есть загружаться в ОП только по необходимости, и после своего
выполнения вновь освобождать память.
Такая схема распределения влечет за собой два вида потерь вычислительных ресурсов — потеря процессорного
времени, потому что процессор простаивает, пока задача ожидает завершения операций ввода-вывода, и потеря самой
ОП, потому что далеко не каждая программа использует всю память, а режим работы в этом случае однопрограммный.
Однако это очень недорогая реализация, которая позволяет отказаться от многих функций ОП. В частности, такая
сложная проблема, как защита памяти, здесь почти не стоит. Единственное, что желательно защищать — это
программные модули и области памяти самой ОС.
Если есть необходимость создать программу, логическое адресное пространство которой должно быть больше, чем
свободная область памяти, или даже больше, чем весь возможный объем ОП, то используется распределение с
перекрытием — так называемые оверлейные структуры (от overlay — перекрытие, расположение поверх чего-то). Этот
метод распределения предполагает, что вся программа может быть разбита на части — сегменты. Каждая оверлейная
программа имеет одну главную (main) часть и несколько сегментов (segments), при чем в памяти машины одновременно
могут находиться только ее главная часть и один или несколько не перекрывающихся сегментов.
Пока в ОП располагаются выполняющиеся сегменты, остальные находятся во внешней памяти. После того как
текущий (выполняющийся) сегмент завершит свое выполнение, возможны два варианта: либо он сам (если данный
сегмент не нужно сохранить во внешней памяти в его текущем состоянии) обращается к ОС с указанием, какой сегмент
должен быть загружен в память следующим; либо он возвращает управление главному сегменту задачи, и уже тот
обращается к ОС с указанием, какой сегмент сохранить (если это нужно), а какой сегмент загрузить в ОП, и вновь отдает
управление одному из сегментов, располагающихся в памяти. Простейшие схемы сегментирования предполагают, что в
памяти в каждый конкретный момент времени может располагаться только один сегмент (вместе с главным модулем).
Более сложные схемы, используемые в больших вычислительных системах, позволяют располагать в памяти несколько
сегментов. В некоторых ВС могли существовать отдельно сегменты кода и сегменты данных. Сегменты кода, как
48
правило, не претерпевают изменений в процессе своего исполнения, поэтому при загрузке нового сегмента кода на место
отработавшего последний можно не сохранять во внешней памяти, в отличие от сегментов данных, которые сохранять
необходимо.
Первоначально программисты сами должны были включать в тексты своих программ соответствующие обращения к
ОС (их называют системными вызовами) и тщательно планировать, какие сегменты могут находиться в ОП
одновременно, чтобы их адресные пространства не пересекались. Однако с некоторых пор такого рода обращения к ОС
системы программирования стали подставлять в код программы сами, автоматически, если в том возникает
необходимость. Так, в известной и популярной в недалеком прошлом системе программирования Turbo Pascal
программист просто указывал, что данный модуль является оверлейным. И при обращении к нему из основной
программы модуль загружался в память и получал управление. Все адреса определялись системой программирования
автоматически, обращения к DOS для загрузки оверлеев тоже генерировались системой Turbo; Pascal.

49
Программное обеспечение компьютерных сетей
1. Условные конструкции в PHP.
Условные конструкции - конструкции выполняющие определенное действие, если соблюдается определенное
условие. В языке php это конструкция if…else. Эту конструкцию нельзя изучать в отрыве от типа boolean. Сама
конструкция выглядит так:
if (условие) {
действие 1;
действие n;
}
else {
другие действия;
}
Имеенно в качестве условия и выступает переменная типа boolean. Это достаточно простой тип. Он может принимать
всего 2 значения: TRUE и FALSE. Существуют операторы, которые могут принимать эти же 2 значения - это операторы
сравнения: == , <=, >=, > , < и !. Соответственно это - равно, меньше или равно, больше или равно, больше, меньше и
логическое НЕ. К примеру:
$a = 4;
$b = 6;
$a == $b; - возвращает FALSE
$a <= $b; - возвращает TRUE
$a < $b ; -возвращает TRUE
2. PHP: функции работы с датой и временем.
checkdate -- Проверяет правильность даты по грегорианскому календарю
Возвращает TRUE если дата, заданная аргументами, является правильной; иначе возвращает FALSE. Дата считается
правильной, если:
год в диапазоне от 1 до 32767 включительно
месяц в диапазоне от 1 до 12 включительно
day является допустимым номером дня для месяца, заданного аргументом month, принимая во внимание,что year
может задавать високосный год.
Пример 1. Пример использования функции checkdate()<?php
var_dump(checkdate(12, 31, 2000));
var_dump(checkdate(2, 29, 2001));
?>
Приведенный выше пример выведет: bool(true)
bool(false
date_default_timezone_get --Выводит временную зону по умолчанию, используемую всеми функциями даты/времени
в скрипте
date_default_timezone_set -- Устанавливает временную зону по умолчанию, используемую всеми функциями
даты/времени в скрипте
date_sunrise --Возвращает время восхода солнца для данного дня и местоположения
date_sunset --Возвращает время заката солнца для данного дня и местоположения
Пример 1. date_sunset() example<?php
/* calculate the sunset time for Lisbon, Portugal
Latitude: 38.4 North
Longitude: 9 West
Zenith ~= 90
offset: +1 GMT
*/
echo date("D M d Y"). ', sunset time : ' .date_sunset(time(), SUNFUNCS_RET_STRING, 38.4, -9, 90, 1);
?>
Результатом выполнения данного примера будет что-то подобное:Mon Dec 20 2004, sunset time : 18:13
date -- Форматирует системную дату/время
Возвращает время, отформатированное в соответствии с аргументом format, используя метку времени, заданную
аргументом timestamp или текущее системное время, если timestamp не задан. Другими словами, timestamp является
необязательным и по умолчанию равен значению, возвращаемому функцией time().
Пример 2. Экранирование символов в функции date()<?php
// вывод: Wednesday the 15th
echo date("l \\t\h\e jS");
?>
getdate -- Возвращает информацию о дате/времени
array getdate ( [int timestamp] )

50
Возвращает ассоциативный массив, содержащий информацию о дате, представленной меткой времени timestamp или
текущем системном времени, если timestamp не передан.
Пример 1. Пример использования функции getdate() <?php
$today = getdate();
print_r($today);
?>
Вывод будет выглядеть так: Array
(
[seconds] => 40
[minutes] => 58
[hours] => 21
[mday]=> 17
[wday]=> 2
[mon] => 6
[year]=> 2003
[yday]=> 167
[weekday] => Tuesday
[month] => June
[0] => 1055901520
)
gettimeofday -- Возвращает текущее время
array gettimeofday ( void )

Эта функция является интерфейсом к системному вызову gettimeofday(2). Она возвращает ассоциативный массив,
содержащий информацию, полученную от системной функции.
"sec" - секунды
"usec" - микросекунды
"minuteswest" - смещение к западу от Гринвича, в минутах
"dsttime" - тип коррекции летнего времени

Пример 1. Пример использования функции gettimeofday() <?php


print_r(gettimeofday());
?>
Вывод будет выглядеть так: Array
(
[sec] => 1073504408
[usec] => 238215
[minuteswest] => 0
[dsttime] => 1
)
gmdate -- Форматирует дату/время по Гринвичу
string gmdate ( string format [, int timestamp] )
Эта функция идентична функции date() за исключением того, что возвращает время по Гринвичу (GMT). Например, в
Финляндии (GMT +0200), первая строка в следующем примере выведет "Jan 01 1998 00:00:00", а вторая - "Dec 31 1997
22:00:00".

Пример 1. gmdate() example<?php


echo date("M d Y H:i:s", mktime(0, 0, 0, 1, 1, 1998));
echo gmdate("M d Y H:i:s", mktime(0, 0, 0, 1, 1, 1998));
?>
gmmktime -- Возвращает метку времени Unix для времени по Гринвичу nt gmmktime ( [int hour [, int minute [, int
second [, int month [, int day [, int year [, int is_dst]]]]]]] )
Эта функция идентична функции mktime(), за исключением того, что аргументы формируют время по Гринвичу
(GMT).
Подобно функции mktime(), аргументы могут быть опущены в порядке справа налево , в этом случае они
предполагаются равными соответствующим компонентам текущего времени по Гринвичу.
gmstrftime -- Форматирует дату/время по Гринвичу с учетом текущей локали tring gmstrftime ( string format [, int
timestamp] )
Эта функция идентична функции strftime() за исключением того, что возвращает время по Гринвичу (GMT).
Например, при запуске на системе, где установлено Eastern Standard Time (GMT -0500), первая строка из следующего
примера выведет "Dec 31 1998 20:00:00", а вторая - "Jan 01 1999 01:00:00".
Пример 1. Пример использования функции gmstrftime()<?php
setlocale(LC_TIME, 'en_US');
echo strftime("%b %d %Y %H:%M:%S", mktime(20, 0, 0, 12, 31, 98)) . "\n";

51
echo gmstrftime("%b %d %Y %H:%M:%S", mktime(20, 0, 0, 12, 31, 98)) . "\n";
?>
idate -- Форматирует локальное время/дату как целое
<?php
$timestamp = strtotime('1st January 2004'); //1072915200
// this prints the year in a two digit format
// however, as this would start with a "0", it
// only prints "4"
echo idate('y', $timestamp);
?>
localtime -- Возвращает системное время array localtime ( [int timestamp [, bool is_associative]] )
Функция localtime() возвращает массив, аналогичный структуре, возвращаемой соответствующей функцией C.
Первым аргументом функции localtime() является метка времени, если этот аргумент не передан, используется текущее
время, полученное вызовом функции time(). Если аргумент is_associative не передан или или равен 0, возврачается массив
с числовыми индексами. Если этот аргумент равен 1, функция localtime() возврашает ассоциативный массив,
содержащий компоненты структуры, возвращаемой функцией C localtime. Список индексов :
"tm_sec" - секунды
"tm_min" - минуты
"tm_hour" - часы
"tm_mday" - день месяца
"tm_mon" - месяц года, 0 соответствует январю
"tm_year" - Количество лет, прошедших с 1900 г.
"tm_wday" - день недели
"tm_yday" - порядковый номер дня в году
"tm_isdst" - признак летнего времени
microtime -- Возвращает метку времени с микросекундами
mixed microtime ( [bool get_as_float] )
Функция microtime() возвращает текущую метку времени с микросекундами. Эта функция доступна только на
операционных системах, в которых есть системная функция gettimeofday().
При вызове без необязательного параметра, возвращается строка в формате "msec sec", где sec - это количество
секунд, прошедших с начала Эпохи Unix (The Unix Epoch, 1 января 1970, 00:00:00 GMT), а msec - это дробная часть.
Если передан аргумент get_as_float, равный TRUE, функция microtime() возвращает действительное число.
Замечание: Аргумент get_as_float появился в PHP 5.0.0.
Пример 1. Пример использования функции microtime()<?php
function getmicrotime()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
$time_start = getmicrotime();
for ($i=0; $i < 1000; $i++) {
// Ничего не делать. Повторить 1000 раз
}
$time_end = getmicrotime();
$time = $time_end - $time_start;
echo "Ничего не делал $time секунд\n";
// в PHP 5 то же самое можно сделать вот так:
$time_start = microtime(1);
for ($i=0; $i < 1000; $i++) {
// Ничего не делать. Повторить 1000 раз
}
$time_end = microtime(1);
$time = $time_end - $time_start;
echo "Ничего не делал $time секунд\n";
?>
mktime -- Возвращает метку времени для заданной даты
Пример использования функции mktime()
<?php
echo date("M-d-Y", mktime(0, 0, 0, 12, 32, 1997));
echo date("M-d-Y", mktime(0, 0, 0, 13, 1, 1997));
echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 1998));
echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 98));
?>

52
strftime -- Форматирует текущую дату/время с учетом текущей локали Возвращает строку, отформатированную в
соответствии с аргументом format, используя аргумент timestamp или текущее системное время, если этот аргумент не
передан. Названия месяцев, дней недели и другие строки, зависящие от языка, соответствуют текущей локали,
установленной функцией setlocale().
В форматирующей строке распознаются следующие символы:
%a - сокращенное название дня недели в текущей локали
%A - полное название дня недели в текущей локали
%b - сокращенное название месяца недели в текущей локали
%B - полное название месяца недели в текущей локали
%c - предпочтительный формат даты и времени в текущей локали
%C - столетие (год, деленный на 100 и огругленный до целого, от 00 до 99)
%d - день месяца в виде десятичного числа (от 01 до 31)
%D - аналогично %m/%d/%y
%e - день месяца в виде десятичного числа, если это одна цифра, то перед ней добавляется пробел (от ' 1' до '31')
%g - подобно %G, но без столетия.
%G - Год, 4-значное число, соответствующее номеру недели по ISO (см. %V). Аналогично %Y, за исключением того,
что если номер недели по ISO соответствует предыдущему или следующему году, используется соответствующий год.
%h - аналогично %b
%H - номер часа от 00 до 23
%I - номер часа от 01 до 12
%j - номер дня в году (от 001 до 366)
%m - номер месяца (от 01 до 12)
%M - минуты
%n - символ "\n"
%p - `am' или `pm', или соответствующие строки в текущей локали
%r - время в формате a.m. или p.m.
%R - время в 24-часовом формате
%S - секунды
%t - символ табуляции ("\t")
%T - текущее время, аналогично %H:%M:%S
%u - номер дня недели от 1 до 7, где 1 соответствует понедельнику
%U - порядковый номер недели в текущем году. Первым днем первой недели в году считается первое воскресенье
года.
%V - Порядковый номер недели в году по стандарту ISO 8601:1988 от 01 до 53, где 1 соответствует первой неделе в
году, в которой как минимум 4 дня принадлежат этому году. Первым днем недели считается понедельник. (Используйте
%G or %g для определения соответствующего года)
%W - порядковый номер недели в текущем году. Первым днем первой недели в году считается первый понедельник
года.
%w - номер дня недели, 0 соответствует воскресенью
%x - предпочтительный формат даты без времени в текущей локали
%X - предпочтительный формат времени без даты в текущей локали
%y - год без столетия (от 00 до 99)
%Y - год, включая столетие
%Z - временная зона в виде смещения, аббривеатуры или полного наименования
%% - символ `%'

strptime --Выполняет разбор времени/даты, представленное функцией strftime()


Пример 1. strptime() example
<?php
$format = '%d/%m/%Y %H:%M:%S';
$strf = strftime($format);
echo "$strf\n";
print_r(strptime($strf, $format));
?>
Результатом выполнения данного примера будет что-то подобное:03/10/2004 15:54:19
Array
(
[tm_sec] => 19
[tm_min] => 54
[tm_hour] => 15
[tm_mday] => 3
[tm_mon] => 9
[tm_year] => 104
[tm_wday] => 0

53
[tm_yday] => 276
[unparsed] =>
)
strtotime -- Преобразует текстовое представление даты на английском языке в метку
времени Unix Первым параметром функции должна быть строка с датой на английском языке, которая будет
преобразована в метку времени относительно метки времени, переданной в now, или текущего времени, если аргумент
now опущен. В случае ошибки возвращается -1.
Функция strtotime() использует GNU формат даты, поэтому рекомендуется ознакомиться с руководством GNU Date
Input Formats, где описывается синтаксис аргумента time.

Пример 1. Пример использования функции strtotime()<?php


echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";
?>
time -- Возвращает текущую метку времени
int time ( void )
Возвращает количество секунд, прошедших с начала Эпохи Unix (The Unix Epoch, 1 января 1970, 00:00:00 GMT) до
текущего времени.
3. PHP: работа с графикой.
Работа с графикой в php, в большинстве случаев, проходит в 3 этапа.
 Создание изображения
 Обработка изображения
 Вывод изображения.

Начну сразу с примера:


<?
header("Content-type: image/png");
$img = imagecreate(100, 100);
$white = imagecolorallocate($img, 255, 255, 255);
$black = imagecolorallocate($img, 0,0,0);
imagecolortransparent($img, $white);
imagesetpixel($img, 50, 50, $black);
imagepng($img);
?>

В результате выполнения этого скрипта в браузере появится белый квадрат с черной точкой посередине (толщина
точки – 1 пиксель, поэтому придвиньте лицо ближе чтобы увидеть).
Первая строка
header(”Content-type: image/png”);
нужна для того чтобы браузер показал картинку, а не ее текстовое представление (набор байтов текстом).
Далее разберу по этапам.
Создание изображения
Создание изображения в php происходит либо через создание нового изображения, либо через чтение какой-то
картинки из файла.
$img = imagecreate(100, 100);
Здесь оно создается функцией imagecreate, которой передаются только размеры нужного изображения.
Обработка изображения.
В библиотеке gd есть очень много функций для работы с графикой в php. Рассмотрю пока только те функции которые
использованы в примере.
Дальше идут непонятные строки на первый взгляд
$white = imagecolorallocate($img, 255, 255, 255);
$black = imagecolorallocate($img, 0,0,0);
Дело в том, что в php идентификатором любого цвета является число. Цвет определяется через RGB-модель. То есть
определяется набором трех чисел для красного, зеленого и синего. Каждого число определяет, как много цвета должно
входить в результирующий. Ну, вы знаете, я думаю..
Для белого цвета это тройка будет (255,255,255).

54
Для того чтобы каждый раз не вызывать функцию imagecolorallocate, в скриптах цвета, которые часто используются,
сохраняют в переменные (я так сделал для $white).
Кстати, насчет функции
imagecolortransparent($img, $white);
Если вы создаете изображение в php через создание нового изображения (…:) ), то нужно указывать для него
прозрачный цвет. То есть указать в качестве такого можно любой цвет, но при отображении он будет прозрачным везде,
где использовался.
Теперь ставим черную точку с координатами (50,50).
imagesetpixel($img, 50, 50, $black);
Вывод изображения
Вывод изображения производится либо в браузер, либо в файл.
Я вывожу в браузер:
imagepng($img);
Тип файла учитывается в этой функции и в указании HTTP-заголовка в самом начале.
Можно и там и там сделать вместо png – jpg, gif, jpeg.
Ну и для демонстрации еще некоторых функций покажу еще один пример – функция для генерации шума черного
цвета на изображении. В качестве параметра ей передается id изображения и процент зашумления.
<?php
header("Content-type: image/png");
$img = imagecreate(100, 100);
$white = imagecolorallocate($img, 255, 255, 255);
imagecolortransparent($img, $white);
noise_image($img, 15);
imagepng($img);
function noise_image($img, $per) {
$width= imagesx($img);
$height = imagesy($img);
$black = imagecolorallocate($img, 0,0,0);
$noise_dots = round($width*$height*$per/100);
for ($i = 0; $i < $noise_dots; $i++) {
$x = rand(0,$width);
$y = rand(0,$height);
imagesetpixel($img, $x, $y, $black);
}
}
?>
4. Взаимодействие PHP и MySQL.
Итак, для начала ответим на вопрос: что такое MySQL?
MySQL – это одна из самых популярных и самых распространенных СУБД (система управления базами данных) в
интернете. Она не предназначена для работы с большими объемами информации, но ее применение идеально для
интернет сайтов, как небольших, так и достаточно крупных.
MySQL отличатся хорошей скоростью работы, надежностью, гибкостью. Работа с ней, как правило, не вызывает
больших трудностей. Поддержка сервера MySQL автоматически включается в поставку PHP.
Немаловажным фактором является ее бесплатность. MySQL распространяется на условиях общей лицензии GNU
(GPL, GNU Public License).
Ранее для долговременного хранения информации мы работали с файлами: помещали в них некоторое количество
строчек, а затем извлекали их для последующей работы. Задача длительного хранения информации очень часто
встречается в программировании Web-приложений: подсчѐт посетителей в счѐтчике, хранение сообщений в форуме,
удалѐнное управление содержанием информации на сайте и т.д.
Между тем, профессиональные приѐмы работы с файлами очень трудоѐмки: необходимо заботится о помещении в
них информации, о еѐ сортировке, извлечении, при этом не нужно забывать, что все эти действия будут происходить на
сервере хост-провайдера, где с очень большой вероятностью стоит один из вариантов Unix - следовательно, нужно так же
заботится о правах доступа к файлам и их размещении. При этом объѐм кода значительно возрастает, и совершить
ошибку в программе очень просто.
Все эти проблемы решает использование базы данных. Базы данных сами заботятся о безопасности информации и еѐ
сортировке и позволяют извлекать и размещать информацию при помощи одной строчки. Код с использованием базы
данных получается более компактным, и отлаживать его гораздо легче. Кроме того, не нужно забывать и о скорости -
выборка информации из базы данных происходит значительно быстрее, чем из файлов.
Примечание
Приложение на РНР, использующее для хранения информации базу данных (в частности MySql) всегда работает
быстрее приложения, построенного на файлах. Дело в том, что базы данных написаны на языке C++, и написать на PHP
программу, которая работала бы с жѐстким диском эффективнее базы данных - задача неразрешимая по определению,
поскольку программы на PHP в принципе работают медленнее, чем программы на C++, так как РНР - интерпретатор, а
С++ - компилятор.
55
Таким образом, основное достоинство базы данных заключается в том, что она берѐт на себя всю работу с жѐстким
диском и делает это очень эффективно.
5. Java Script: синтаксис языка. Встраивание в HTML.
JavaScript. Синтаксис языка JavaScript.
JavaScript - объектно-ориентированный язык сценариев, позволяющий включать в веб-страницы исполняемое
содержимое (скрипты). JavaScript выполняется на стороне клиента и поддержка JavaScript включена практически во всех
браузерах. С помощью этого языка вы сможете отойти от статики обычного HTML и создавать страницы с динамически
изменяемым содержанием. В этом разделе приводится учебник по JavaScript в примерах. После изучения этих уроков вы
сможете писать скрипты любой сложности.
Синтаксис JavaScript и Java сделан по образцу C и C++. Отметим основные правила:
Чувствительность к регистру. Все ключевые слова пишутся в нижнем регистре. Все переменные и названия функций
пишутся точно так же, как и были определены (например, переменные Str и str являются разными переменными).
Пробелы, табуляция и перевод строки. Эти символы игнорируются в JavaScript, так что можно использовать их для
форматирования кода с тем, чтобы его было удобно читать.
Символ точка с запятой (;). Все операторы должны быть разделены этим символом. Если оператор завершается
переводом строки, то точку с запятой можно опустить. При этом нужно следить за тем, чтобы при разрыве строки одного
оператора, новая строка не начиналась бы с самостоятельного оператора.
Комментарии. JavaScript игнорирует любой текст расположенный между символами /* и */. Также игнорируется текст
начинающийся символами // и заканчивающийся концом строки.
Индентификаторы. Индентификаторами являются имена переменных, функций, а также меток. Индентификаторы
образуются из любого количества букв ASCII, подчеркивания (_) и символа доллара ($). Первым символом не может
быть цифра, а в версии JavaScript 1.0 не допускается использования и символа $.
Ключевые слова. Ключевые слова не могут использоваться в качестве индетификаторов. Ключевыми словами
являются: break, case, continue, default, delete, do, else, export, false, for, function, if, import, in, new, null, return, switch, this,
true, typeof, with.
JAVASCRIPT > Встраивание в HTML-документ
Для встраивания скриптов в тело HTML-документа используется контейнер SCRIPT. Не все программы просмотра
способны распознавать и исполнять скрипты, поэтому само тело скрипта помещается в контейнер комментария. Для
определенности рассмотрим небольшой пример:
<HTML>
<!--
Author: Pavel Khramtsov
Date: March 5, 1996
-->
<HEAD>
<TITLE>Registration</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!-- The JavaScript Functions Definition
function help_win()
{
Help = window.open("reg_help.htm","Help",
"scrollbars=yes,resizable=yes")
}
function main_menu()
{
Main_menu = window.open
("main_m.htm","Main_menu")
}
// The end of JavaScript Functions Definition -->
</SCRIPT>
</HEAD>
<BODY>
<CENTER>
<TABLE>
<TR><TH><IMG SRC="radleg3.gif"></TH><TH><H2>ISTC.
Project RADLEG(#245)</H2>
RRC "Kurchatov Institute"<BR>
<I>Dec, 25, 1995</I>
</TH></TR>
</TABLE>
</CENTER>
<HR>
<CENTER>
<h2>Registration Form</h2>
56
<hr>
......
Текст страницы.
.....
<hr>
<FORM NAME=help_call>
<TABLE BORDER=0>
<TR>
<TD><INPUT NAME=next TYPE=button VALUE=Next
onClick="main_menu()"></TD>
<TD><INPUT NAME=help TYPE=button VALUE=Help
onClick="help_win()"></TD>
</TR>
</TABLE>
</FORM>
<hr>
</CENTER>
</BODY>
</HTML>
В данном примере в заголовок документа (контейнер HEAD) включен контейнер SCRIPT. До недавнего времени
атрибут LANGUAGE в этом контейнере не являлся обязательным. Но с момента появления VBSCRIPT смысл в указании
типа языка появился - Navigator не понимает скриптов на других языках. Отсутствие атрибута может привести к
ошибкам при отображении гипертекстовых страниц.
Далее в тексте страницы определен комментарий, в который включен текст скрипта. Начинается комментарий со
строки:
<!-- The JavaScript Functions Definition
и кончается строкой:
// The end of JavaScript Functions Definition -->
Внутри контейнера скрипта определены две функции пользователя: help_win() и main_menu(). Смысл этих функций
достаточно прозрачен. Help_win() предназначена для организации контекстно зависимого help, а main_menu()
осуществляет допуск пользователя к главному меню Website. Обе функции используют один и тот же метод open
(встроенную в JavaScript функцию, которая определена над объектом window) для того, чтобы открыть новое окно
Netscape Navigator и загрузить в него гипертекстовые документы. При этом функция main_me порождает стандартное
окно (с кнопочками, иконками и т.п.), а функция help_win() окно без стандартных атрибутов. У этого окна имеются
только линейки прокрутки (scroll bars).
Вызов функций осуществляется после нажатия на соответствующую кнопку, которые определены в HTML-форме
help_call. Таким образом выполнение функций будет осуществлено только в том случае, если произойдет событие,
описанное атрибутом onClick в контейнере INPUT соответствующего поля формы.
Если быть более точным, то приведенный пример - это фрагмент, реализующий регистрацию пользователя. К
моменту его выполнения окно главного меню уже открыто, поэтому создание этого окна при выборе кнопки "NEXT" не
происходит, а текст загружается в уже открытое окно.
6. Java Script: свойства, методы и события.
Свойства - используют для описания объекта или его текущего состояния. Свойство определяется путем
присваивания ему значения. Значение может быть присвоено браузером, программой или действиями пользователя.
Несколько свойств в JavaScript содержат константы-значения, которые никогда не меняются. Такими являются
значения числа pi или основания натуральных логарифмов (e). Другие элементы, например, абсолютный адрес странички
в Интернете, различаются от страницы к странице, но не могут быть изменены в пределах одной страницы.
Остальные свойства можно изменять в ходе выполнения программы на JavaScript. Следующий пример демонстрирует
изменение цвета фона на красный в ходе выполнения программы:
<SCRIPT LANGUAGE="JavaScript">
<!--
document.bgColor='red';
// -->
</SCRIPT>
Методы.
В JavaScript существуют встроенные в язык функции, которые сразу совершают какое-то действие над объектом; эти
функции принято называть методами. Таким образом, метод представляет собой функцию, ассоциированную
(связанную) с объектом. Например,
UserName.toUpperCase()
возвращает строку, содержащуюся в переменной UserName, преобразованную к верхнему регистру.
В самом первом примере мы также использовали метод write в виде: document.write(parameter) для вывода parameter в
текущий документ.
События (обработчики событий).

57
События - это действия, которые произвел пользователь: щелкнул на ссылке (кнопке), подвел курсор мышки над
каким-либо объектом, щелкнул в текстовом поле для его заполнения (передал фокус этому элементу) и т.д.
Обработчики событий являются особенной частью языка JavaScript и придают ему основную мощь. Они позволяют
программисту отслеживать действия пользователя (события) по отношению к странице HTML.
Обработчики событий встраиваются в теги HTML. Практически все, что пользователь может делать со страницей,
можно отслеживать с помощью обработчиков событий, от движения мыши до выхода из страницы. Например,
следующий фрагмент кода выводит строку "Холм Web-мастера [webholm.ru]" в строке статуса браузера, когда указатель
мыши оказывается на гиперссылкой (обрабатываем событие onMouseOver):
<a href="http://www.shildim.narod.ru"
onMouseOver="window.status='Web-мастера [shildim.narod.ru]';
return true">Web-мастера</a>
пример:
Web-мастера
7. JavaScript: Работа со слоями
Основы работы со слоями
Слои предоставляют собой фрагменты HTML, которые можно размещать на веб-странице путем наложения их друг
на друга с точностью до пиксела. Cлои, также, позволяют изменять параметры слоя динамически, с помощью языка
JavaScript или VBScript. Это дает возможность создавать на веб-странице разные эффекты, такие, как: выпадающие
меню, игры, разворачивающиеся баннеры, плавающие окна и другое.
Создание слоя
Для создания слоя применяется тег DIV. Его параметры можно прописать в стиле, либо указать непосредственно в
самом теге.
Пример 1. Создание слоя
<style>
#layer1 {position:relative; font-size:50px; z-index:2; color: navy}
</style>
<div id="layer1">
Содержимое слоя 1
</div>
<div id="layer2" style="position:relative; top:-55; left:5; color:orange; font-size:80px; z-index:1">
Содержимое слоя 2
</div>

Для задания имени слоя используется атрибут ID, который уникальным образом определяет элемент в документе и
применяется для обращения к нему из скрипта. Документы с повторяющимися значениями ID считаются технически
недействительными.
Чтобы определить стиль слоя используется ID-селектор, который задается символом решетки (#) в начале имени
селектора (в примере - #layer1).
Обращение к слою
JavaScript использует несколько способов обращения к слою, которые имеют свои особенности в различных
браузерах.
Internet Explorer
Браузер использует обращение к слою тремя способами: с помощью метода семейства item, напрямую по имени
элемента и косвенно через массив. Так, для слоя с именем layer1 обращение будет следующим.
document.all.item("layer1")
document.all.layer1
document.all["layer1"]
Ссылаясь с помощью метода item или через массив семейства all, можно запросить слой по имени, передавая его в
качестве параметра.
Netscape Communicator
В данном браузере слои реализуются с помощью тега LAYER, который поддерживается только Netscape. На наше
счастье, браузер прекрасно понимает и тег DIV, поэтому код для создания слоя, приведенный в Примере 1, не изменится.
По другому будет лишь обращение к слою из JavaScript.
document.layers.layer1
document.layers["layer1"]
Отличие от браузера Internet Explorer - в семействе layers объекта document, который поддерживается только
браузером Netscape версии 4 и выше.
Opera
Opera предлагает свой путь работы со слоями, через семейство getElementByIdобъекта document. Обращение к слою
будет следующим..
document.getElementById("layer1")
Это не массив, поэтому указание имени слоя берется в круглые скобки.
Определение типа браузера

58
Поскольку разные браузеры предлагают свои собственные способы обращения к слоям, перед тем, как изменять
параметры слоя, следует выяснить, в каком браузере открывается документ. В простейшем случае, определение браузера
будет следующим.
<script language="JavaScript">
NC = (document.layers);
IE = (document.all);
Opera = (document.getElementById);
</script>
Здесь не определяется версия браузера, что в некоторых случаях может понадобиться.
Изменение параметров слоя
Вышеуказанные отличия в реализации разных браузеров при обращении к слоям этим не ограничиваются. При
каждом изменении какого-либо параметра слоя, придется определять тип браузера и применять свои настройки.
Internet Explorer обращается к свойствам слоя через стили.
document.all["Имя слоя"].style.свойство = "параметр"
Netscape Communicator напрямую.
document.layers["Имя слоя"].свойство = "параметр"
А Opera также применяет свойство стилей.
document.getElementById("Имя слоя").style.свойство = "параметр"

Основные эффекты слоя, которые применяются для различных задач - спрятать/показать слой, изменение координат и
положения слоя.
Как спрятать слой
По умолчанию элемент видим, если отображается его родитель. Например, скрытие элемента BODY прячет все
содержимое документа. Эффект видимости можно установить явно, тогда любые наследования учитываться не будут.
Для скрытия слоя следует изменить значение свойства visibility путем установки параметра hidden.
Пример 2. Прятанье слоя
<html>
<head>
<script language="JavaScript">
function hiddenLayer() {
NC = (document.layers);
IE = (document.all);
Opera = (document.getElementById);
if(IE) eval('document.all["layer1"].style.visibility = "hidden"');
if(NC) eval('document.layers["layer1"].visibility = "hidden"');
if(Opera) eval('document.getElementById("layer1").style.visibility = "hidden"');
}
</script>
</head>
<body onLoad="hiddenLayer()">
<div id="layer1" style="position:relative; top:-55; left:5; color:orange; font-size:80px; z-index:1">Содержимое слоя</div>
</body>
</html>
Замечание: При скрытии с помощью параметра visibility, слой не удаляется из потока документа. То есть, если
спрятать таким образом слой, он станет невидимым, но место, которое он занимает, останется. Если предполагается
вывод разных слоев в одно и то же место экрана, для обхода этой особенности следует использовать абсолютное
позиционирование.
Как показать невидимый слой
Если слой невидим, его можно показать с помощью того же параметра visibility, который принимает значение visible.
В примере 3 показывается, как можно динамически делать слой видимым или прятать его.
Пример 3. Изменение видимости слоя
<html>
<head>
<script language="JavaScript">
function init() {
IE = (document.all)
NC = (document.layers)
Opera = (document.getElementById)
}
function hiddenLayer() {
init();
if(IE) eval('document.all["descr"].style.visibility = "hidden"')
if(NC) eval('document.layers["descr"].visibility = "hidden"')
if(Opera) eval('document.getElementById("descr").style.visibility = "hidden"')

59
}
function showLayer() {
init();
if(IE) eval('document.all["descr"].style.visibility = "visible"')
if(NC) eval('document.layers["descr"].visibility = "visible"')
if(Opera) eval('document.getElementById("descr").style.visibility = "visible"')
}
</script>
</head>
<body>
<table width="90%" border="1" cellspacing="0" cellpadding="4" bordercolor="#666666" align="center">
<tr>
<td width="20%" align="center"><a href=# onMouseOver="showLayer()" onMouseOut="hiddenLayer()"><img
src="button.gif" width="98" height="33" border=0></a></td>
<td>
<div id="descr" style="position: relative; visibility: hidden">Данная
эксклюзия является подмножеством астрациональных супремативных
монотенных федоний кадонарного экстрафазория.</div>
</td></tr></table>
</body>
</html>
Результат, демонстрирующий изменение видимости слоя показан ниже. При наведении курсора мыши на кнопку
появляется ее описание, которое скрывается, когда курсор с кнопки убирается.
8. Web-сервер Apaсhe.
Сравнительная характеристика веб-серверов. Критерии их выбора
Веб-серверы используют для следующих целей:
o Создание корпоративных сетей интранет на основе принципов Интернет-сетей, многоуровневой архитектуры и
клиент/серверных технологий
o Подключение корпоративных сетей интранет к Интернету для получения доступа к предоставляемым в нем
услугам
o Публикация информации из корпоративных сетей интранет, в том числе и содержимого баз данных из
информационных систем, функционирующих в среде интранет
o Распространение собственной информации, находящейся на домашнем компьютере, создание собственного
сайта с помощью домашнего компьютера
В Интернете функционирует много типов серверов, используемых для обеспечения различных функций и
разработанных различными производителями
Критерии выбора веб-серверов
На выбор сервера влияние оказывает «платформа», на которой работает веб-сервер:
o В качестве узлов веб могут работать компьютеры любых типов с необходимыми техническими
характеристиками
o Для высокопроизводительных объемных узлов наиболее часто используют операционную систему Unix (около
80% веб-серверов работают под ее управлением), для средне- и низкопроизводительных узлов чаще всего используется
Windows NT (менее 20% веб-серверов работает под ее управлением)
Число веб-серверов составляет около 100 млн. В «большую четверку» вошли компании Apache, Microsoft, Sun и Zeus
Не всегда самые распространенные веб-серверы являются универсальными решениями, подходящими для
использования в любом проекте
В частности, несмотря на солидный отрыв Apache, отражающей ситуацию на рынке в целом, в сегменте SSL-серверов
(Secure Sockets Layer), активно используемых в сфере электронной коммерции, превосходство Apache над Microsoft уже
не столь неоспоримо.
Можно увидеть, что по мере снижения числа запросов к сайту сервер Apache встречается все чаще, и наконец вовсе
остается практически единственным используемым веб-сервером.
Сферой использования продуктов Microsoft являются сравнительно масштабные проекты, в то время как Apache
применяют для сайтов среднего класса.
Веб-сервер Apache
Apache выпущен весной 1995 года. Созданный под покровительством компании Apache Digital Corporation, Само
название «Apache» созвучно слову «A PAtCHy server» (сервер с доработками — «patch files»). Это свободно
лицензируемое приложение. Группа разработчиков Apache придерживается строгих стандартов в отношении выпуска
новых версий сервера
Веб-сервер Apache характеризуется открытой архитектурой. Сервер распространяется в исходных кодах.,
позволяющая легко наращивать дополнительные возможности. Сервер был разработан для популярной платформы UNIX
Используя открытый код Apache, можно создавать собственные конфигурации сервера, компилируя внесенные в код
изменения. Apache имеет модульную структуру. В его состав входит набор модулей, которые служат для обеспечения
требуемых функций сервера и могут быть динамически включены в конфигурацию даже во время активной работы
сервера. Сервер Apache позволяет использовать CGI-сценарии, написанные на Perl или РНР
60
Перечислим основные особенности сервера:
o является мощным, гибким HTTP 1.1-совместимым сервером
o поддерживает современные протоколы
o имеет легко перестраиваемую конфигурацию с возможностью установления дополнительных функций (модулей)
от сторонних производителей
o может быть сконфигурирован с использованием модулей API
o снабжается полным исходным текстом и поступает с бесплатной лицензией без ограничений
o работает под управлением популярных операционных систем
o поддерживает ведение отчетной документации об ошибках и файлы коррекции
Сервер Apache поддерживает следующие функции:
o доступ к базам данных, используемым для аутентификации, то есть возможность установки защищенных
паролем страниц с огромным количеством уполномоченных пользователей без перегрузки сервера
o настройку реакции сервера на ошибки и сбои, заключающуюся в возможности устанавливать файлы или
сценарии CGI, используемые сервером при возникновении ошибки (например, установка сценариев, позволяющих
обрабатывать около 500 ошибок сервера, вести непрерывную диагностику и устранять неполадки по желанию
пользователя)
o автоматическую обработку HTML-данных с изменяющейся структурой и модификация их для удобного
представления информации клиенту
o поддержка виртуальных хостов, заключающаяся в возможности настройки нескольких «домашних хостов», что
позволяет серверу различать запросы, сделанные по различным IP-адресам. Apache также предоставляет возможность
динамически настраивать функции «главного» виртуального хоста
o генерацию информации о настройках в удобном для пользователя формате
o формирование на большинстве архитектур Unix Apache так называемых журналов учета (log файлов), причем их
количество кратно числу виртуальных хостов, и работа DNS корректируется без приостановки функционирования
Для сервера Apache отсутствуют официальное техническое обслуживание и поддержка, но можно найти большое
количество информации или советов
Во второй версии Apache повышению производительности было уделено особое внимание. Apache 2.0 может
использовать многопоточность (на платформах, поддерживающих ее). Потоками называются отдельные ветви
программы, разделяющие общую память на отдельные области для каждого процесса. В результате многопоточность
является масштабируемым способом выполнения нескольких заданий, например одновременного обслуживания разных
веб-страниц
Apache поддерживает множество бесплатных средств разработки. Можно в первую очередь отметить языки Perl, PHP
и базу данных MySQL. Особенно часто встречаются полностью готовые решения — движки. Для создания форума
можно использовать движок phpBB
В ранних версиях Apache были некоторые проблемы при работе под Windows. Вторая версия работает на Windows-
платформе также хорошо, как на Unix. Apache для Windows существует как в виде исходников, так и в виде
установочных бинарных файлов
Apache — лидер рынка веб-серверов имеет недостатки. Заметных минусов у Apache два:
o Первый является обратной стороной бесплатности продукта и заключается в отсутствии поддержки со стороны
производителей (аналогичная ситуация наблюдается со всеми продуктами Open Source)
o Вторая особенность Apache — это отсутствие какого-либо графического интерфейса. Настройка сервера
производится путем редактирования текстовых конфигурационных файлов. В этом плане Apache проигрывает IIS
Однако данную проблему можно решить с помощью ряда специализированных утилит для его настройки, которые в
изобилии присутствуют в Интернете. Например, программа ApacheConf позволяет настраивать Apache для Windows
В случае с * nix-системами наиболее распространенной утилитой для настройки является Webmin. Программа не
только помогает настраивать Apache, но и позволяет полноценно его администрировать
Apache-серверы используются в основном на *nix-платформах, а большинство клиентских машин разработчиков
работает под управлением Windows. Возникающие трудности можно разрешать по FTP-соединению с удаленным веб-
сервером или установив вторую операционную систему (например, Linux), в дистрибутивах которой имеется весь
нужный инструментарий
Однако есть более подходящее решение проблемы — установка эмулятора Apache-сервера для Windows. Среди
продуктов такого рода широко известна разработка компании dklab —- «Денвер» («Джентльменский набор веб-
разработчика»)
После установки программа создает виртуальный диск, где помещается виртуальная файловая система Unix с
наличием стандартных папок /etc, /usr и /home. По клику на ярлык Start server запускается собственно Apache.
9. Понятие о стандартном обобщенном языке разметки SGML. Консорциум W3C.
SGML (англ. Standard Generalized Markup Language — стандартный обобщѐнный язык разметки;
произносится [эс-джи-эм-эл]) — метаязык, на котором можно определять язык разметки для документов. SGML —
наследник разработанного в 1969 году в IBM языка GML (Generalized Markup Language), который не стоит путать с
Geography Markup Language, разрабатываемым Open GIS Consortium.
Изначально SGML был разработан для совместного использования машинно-читаемых документов в больших
правительственных и аэрокосмических проектах. Он широко использовался в печатной и издательской сфере, но его
сложность затруднила его широкое распространение для повседневного использования.
Основные части документа SGML:
61
SGML-декларация — определяет, какие символы и ограничители могут появляться в приложении;
Document Type Definition — определяет синтаксис конструкций разметки. DTD может включать дополнительные
определения, такие, как символьные ссылки-мнемоники;
Спецификация семантики, относится к разметке — также даѐт ограничения синтаксиса, которые не могут быть
выражены внутри DTD;
Содержимое SGML-документа — по крайней мере, должен быть корневой элемент.
SGML предоставляет множество вариантов синтаксической разметки для использования различными приложениями.
Изменяя SGML-декларацию, можно даже отказаться от использования угловых скобок, хотя этот синтаксис считается
стандартным, так называемым concrete reference syntax.
Пример синтаксиса SGML:
<QUOTE TYPE="example">
typically something like <ITALICS>this</ITALICS>
</QUOTE>
SGML стандартизован ISO: «ISO 8879:1986 Information processing—Text and office systems—Standard Generalized
Markup Language (SGML)»
HTML и XML произошли от SGML. HTML — это приложение SGML, а XML — это подмножество SGML,
разработанное для упрощения процесса машинного разбора документа. Другими приложениями SGML являются SGML
Docbook (документирование) и «Z Format» (типография и документирование).
Консо́рциум Всеми́рной паути́ны (англ. World Wide Web Consortium, W3C) — организация, разрабатывающая и
внедряющая технологические стандарты для Всемирной паутины. Консорциум возглавляет Тим Бернерс-Ли,
изобретатель HTTP, HTML, URI, и автор множества других разработок в области информационных технологий.
Цели и задачи
W3C разрабатывает для Интернета единые принципы и стандарты (называемые «Рекоменда́циями», англ. W3C
Recommendations), которые затем внедряются производителями программ и оборудования. Таким образом достигается
совместимость между программными продуктами и аппаратурой различных компаний, что делает Всемирную сеть более
совершенной, универсальной и удобной.
Миссия W3C: «Полностью раскрыть потенциал Всемирной паутины, путѐм создания протоколов и принципов,
гарантирующих долгосрочное развитие Сети».
Более конкретная цель W3C — помочь компьютерным программам достичь способности ко взаимодействию в Сети
(т. н. «сетева́я интеропера́бельность», англ. Web interoperability). Применение единых стандартов в Сети — это ключевой
шаг для достижения такого взаимодействия.
Две другие важнейшие задачи Консорциума — обеспечить полную «интернационализа́цию Сети́» и сделать Сеть
доступной для людей с ограниченными возможностями. Для решения первой задачи Консорциум активно сотрудничает с
организацией «Юнико́д» (англ. Unicode) и рядом других рабочих групп, занимающихся международным
сотрудничеством в Интернете и языковыми технологиями. Для решения второй задачи Консорциум не только
сотрудничает с организациями соответствующего профиля, но и разработал свои собственные Рекомендации, которые
сейчас активно набирают популярность.
Особенности внедрения Рекомендаций
Рекомендации Консорциума Всемирной паутины открыты, то есть не защищены патентами и могут внедряться
любым человеком без всяких финансовых отчислений консорциуму. В отличие от других организаций, занимающихся
разработкой стандартов для Интернета, Консорциум Всемирной паутины не имеет программ сертификации (на
соответствие Рекомендациям консорциума) и не планирует их вводить, поэтому Рекомендации W3C получили гораздо
большее распространение, нежели стандарты любых других организаций. В то же время, из-за отсутствия сертификации
многие производители следуют Рекомендациям лишь частично. Рекомендации консорциума построены таким образом,
что частичное внедрение не нарушает общих стандартов. Некоторые популярные Рекомендации имеют несколько
степеней внедрения — кому как удобнее. Степени внедрения — это новое слово в сетевых стандартах, которое принесло
Консорциуму Всемирной паутины и его Рекомендациям заслуженную популярность.

Рекомендации W3C зачастую хорошо проработаны и детализированы. С другой стороны, большинство Рекомендаций
доступны для любых категорий пользователей — от экспертов-программистов до начинающих веб-мастеров. Кроме
технических спецификаций, Консорциум также публикует много руководств и советов, облегчающих внедрение
Рекомендаций. За последнее время W3C провѐл огромную работу по популяризации своих стандартов, особенно в
Европе.
Процесс стандартизации
 Любой стандарт W3C проходит 4 стадии согласования:
 Рабочий проект (англ. Working Draft);
 Последний созыв (англ. Last Call);
 Возможная рекомендация (англ. Candidate Recommendation);
 Предлагаемая рекомендация (англ. Proposed Recommendation);
и только после этого официально становится Рекомендацией W3C.
Рекомендации могут время от времени обновляться. К Рекомендациям публикуются сообщения о выявившихся
ошибках и неточностях (англ. errata). Когда накапливается достаточный запас выявленных ошибок, выходит новая,
исправленная и доработанная редакция (англ. edition) Рекомендации (например, «редакция 1.1»). В исключительных
случаях вся Рекомендация может быть отозвана Консорциумом для переработки.
62
Для удобства пользователей Консорциумом созданы специальные программы-валидаторы (англ. Online Validation
Service), которые доступны по Сети и могут за несколько секунд проверить документы на соответствие популярным
Рекомендациям W3C. Консорциумом также созданы многие другие утилиты для облегчения работы веб-мастеров и
программистов. Большинство утилит — это свободные программы, все они бесплатные. В последнее время, следуя
мировым тенденциям, Консорциум в целом гораздо больше внимания уделяет проектам с открытым исходным кодом.
История
Консорциум был создан в 1994 году как консультативный орган для лидеров компьютерной индустрии. Крупнейшие
мировые компании и корпорации договаривались в W3C об обеспечении совместимости своих продуктов и внедрении
новых технологических стандартов.
Первым крупным успехом Консорциума стала стандартизация языка гипертекстовой разметки HTML (англ.
HyperText Markup Language) в 1996 году. Дело в том, что в середине 1990-х годов ряд крупнейших производителей
программного обеспечения планировал выпустить каждый свою версию языка HTML со своими названиями тегов.
Разумеется, это привело бы к хаосу в Интернете, и в результате веб-страница одной компании была бы размечена
совершенно не так, как страница другой компании. Из-за этого веб-браузер одной компании не мог бы отображать
страницы, созданные по правилам другой компании. Именно W3C принадлежит заслуга в том, что HTML был выпущен с
единым базовым набором тегов и атрибутов и веб-страницы стали такими, какими мы их знаем сейчас. Хотя полного
совпадения тегов и атрибутов HTML достичь не удалось до сих пор.
Перспективы
С тех пор Консорциум Всемирной паутины проделал огромную работу, выпустив более 110 Рекомендаций за 10 лет.
Членами Консорциума ныне являются более 350 организаций из 28 стран мира. На Рекомендациях W3C основаны
тысячи программ и сотни миллионов файлов в сети Интернет. В настоящее время Консорциум является, пожалуй, самой
авторитетной организацией в области стандартизации Всемирной паутины.
Дальнейшее развитие Интернета Консорциум Всемирной паутины связывает с концепцией семантической паутины.
Семантическая паутина — это надстройка над существующей Всемирной паутиной, которая призвана сделать
размещѐнную в Сети информацию более понятной для компьютеров. Тогда программы смогут сами находить нужные
ресурсы, обрабатывать информацию, обобщать данные, выявлять логические связи, делать выводы и даже принимать
решения на основе этих выводов. При широком распространении и грамотном внедрении семантическая паутина может
вызвать революцию в Интернете.
Структура консорциума
Общую администрацию Консорциума Всемирной паутины осуществляют 3 организации:
Массачусетсский технологический институт (англ. Massachusetts Institute of Technology, MIT) в США;
Европейский консорциум по исследованиям в области информатики и математики (англ. European Research
Consortium for Informatics and Mathematics, ERCIM) во Франции;
Университет Кейо (англ. Keio University) в Японии.
Членом Консорциума может стать юридическое или частное лицо, занимающееся веб-технологиями и
заинтересованное в развитии Интернета. Основным источником финансирования Консорциума являются членские
взносы. Членами Консорциума уже являются более 350 организаций.
Международную координацию осуществляют так называемые «офисы W3C» (англ. W3C Offices), которые созданы
уже в 14 странах мира. Время от времени Консорциум Всемирной паутины также устраивает международные
конференции.
Процесс выработки Рекомендаций проходит в специальных группах. Рабочие и исследовательские группы
Консорциума включают штатный персонал, представителей организаций-членов и приглашѐнных экспертов. С
предложениями в адрес рабочих групп может выступить любое лицо, даже не члены W3C.
Принципы и концепции, утверждѐнные W3C
Общедоступность (Accessibility). Особый упор при реализации данного принципа делается на обеспечение
доступности ресурсов Всемирной паутины для людей с ограниченными физическими возможностями.
Аппаратная независимоть (Device Independence). Этот принцип утверждает, что ресурсы и протоколы не должны быть
рассчитаны на конкретное физическое оборудование, а должны работать на любой аппаратуре.
Интернационализация (Internationalization). Здесь речь идѐт, прежде всего, о доступности информации на всех языках
мира, а не только на английском, а так же возможность и равноправие использования национальных шрифтов в
документах и системах разработанных на основе стандартов.
Патентная политика (Patent Policy). Здесь речь идѐт о патентовании Рекомендаций W3C таким образом, чтобы их
можно было внедрять бесплатно, на основе лицензии W3C Royalty-Free License.
Многоформенное взаимодействие (Multimodal Interaction). Принцип утверждает, что у программ должно
существовать много форм и режимов взаимодействия с пользователем.
Семантическая паутина (Semantic Web). Это новая концепция развития Всемирной паутины, которая призвана сделать
размещѐнную в Сети информацию более понятной для компьютеров. Иногда также упоминается как семантический веб.
Семантическая паутина сейчас реализуется как надстройка над существующей Всемирной паутиной.
Мобильная паутина (Mobile Web Initiative, W3C-MWI). Этот принцип определяет, что ресурсы Всемирной сети
должны быть доступны для мобильных устройств.
Программы и утилиты, созданные W3C
Amaya (браузер и WYSIWYG-редактор)
CSS Validator
HTML Tidy

63
HTML Validator
Jigsaw (сервер)
Libwww (Web API, больше не поддерживается)
Quality Assurance, QA (утилиты для проверки качества)
и другие
10. Основные элементы HTML страницы
Каждый HTML документ должен иметь название. Оно обычно располагается отдельно от документа и используется
преимущественно для идентификации документа ( например, WAIS поиск). Можно обходиться полудюжиной слов для
описания цели (сути) документа.
В версиях NCSA Mosaic для X Window System and Microsoft Windows, поле названия документа находится в верху
экрана, прямо под строкой меню. В NCSA Mosaic for Macintosh, текст определенный, как <TITLE> появляется в
заголовоке окна.
Заголовки html
HTML имееет 6 уровней заголовков, пронумерованных от 1 до 6, где первый выделен наиболее сильно. Заголовки
показываются фонтами типа Large или Bold чаще, чем применяемыми для обычногог текста. Первый заголовок каждого
документа нужно обозначать <H1>. Синтаксис tag-а заголовка :
<Hy>Текст заголовка </Hy >
где y это число между 1-им и 6-ю, определяющими уровень заголовка.
Например, код для строки заголовка ``Заголовок'' определяется так :
<h2>Заголовок</h2>
Название документа в сравнении с первым заголовком
Во многих документах первый заголовок идентичен названию. В сложных документах текст первого заголовка
должен быть понятен читателю, который уже просмотрел соответствующую информацию (например, название глав), в то
время, как название должно определять документ в более широком контексте (например, включать и название книги и
название главы), также оно можен становиться слишком длинным.
Параграфы html
В отличие от большинства текстовых процессоров, в HTML файлах разбиение на строки не принципиально. Переход
на новую строку может произойти в любой точке Вашего файла, последовательные пробелы превращаются в один. (Есть
пара исключений, например, пробел который следует за <P> или <Hy> tag, игнорируется.) Заметьте, что в нашем
примере первый параграф записывается как :
Добро пожаловать в HTML.
Это первый параграф. <P>
В исходном файле html между предложениями есть перевод строки. А Web просмотрщик игнорирует этот перевод
строки и начинает новый параграф только когда достигается <P> tag.
Это важно: Вы должны отделять параграфы с помощью <P>. Просмотрщик игнорирует пробелы и пустые строки в
исходном тексте. HTML почти всегда полагается на инструкции форматирования и без <P> tag-а весь документ
становится одним большим параграфом. (Исключение составляет текст, определенный как ``предформатированный'',
который описан ниже). Например :
<TITLE>Это простейший HTML пример</TITLE><H1>Заголовок первого
уровня</H1>Добро пожаловать в мир HTML. Это первый параграф.<P>
А это второй.<P>
будет давать тот же результат, что и наш первый пример.
Однако, чтобы сохранить читаемость HTML файлов, заголовки должны быть на различных строках и параграфы
отделены пустой строкой (В дополнении к <P> tag-у).
NCSA Mosaic берет <P> в конце текущего параграфа и вставляет пустую строку.
HTML+, развивает текущий стандарт HTML, где <P> становится ``контейнером'' текста, также как текст заголовков
первого уровня ``содержится'' внутри <H1> ... </H1>:
<P>
Это параграф в HTML+.
</P>
Вся разница заключается в том, что </P> заключительный tag может быть всегда пропущен. ( То есть, если
просмотрщик видит <P>, то он предполагает существование </P> в конце предыдущего параграфа.) Другими словами, в
HTML+, <P> является указателем начала параграфа.
Преимуществом этого изменения в том, что Вы можете устанавливать параметры форматирования параграфа.
Например, в HTML+, Вы можете отцентрировать параграф, определив:
<P ALIGN=CENTER>
Это центрированных параграф. Это HTML+, пока Вам это не доступно.
Это изменение сейчас не дадут никакого эффекта, разница проявится только когда Вы будете использовать HTML+
просмотрщик.
Основные элементы.!.
Объекты
EMBED — вставка различных объектов: не-HTML документов и media-файлов
APPLET — вставка Java-апплетов
SCRIPT — вставка скриптов.
64
Изображения
IMG - вставка изображения. Этот тег не закрывается.
SRC - имя или URL
ALT - альтернативное имя (отобразится, если в браузере запретить отображать картинки)
TITLE - краткое описание изображения (отобразится при наведении курсора на картинку)
WIDTH, HEIGHT - размеры (если не совпадают с истинными размерами картинки, то изображение
"растянется"/"сожмется")
ALIGN - задает параметры обтекания текстом (top, middle, bottom, left, right)
VSPACE, HSPACE - задают размеры вертикального и горизонтального пространства вокруг изображения
Текстовые блоки
<H1> … </H1>, <H2> … </H2>, … ,<H6> … </H6> — заголовки 1, 2, … 6 уровня.
<P> — новый абзац. Можно в конце абзаца поставить </P>, но это не обязательно.
<BR> — новая строка. Этот тег не закрывается (то есть не существует тега </BR>)
<HR> — горизонтальная линия
<BLOCKQUOTE> … </BLOCKQUOTE> — цитата. Обычно текст сдвигается вправо.
<PRE> … </PRE> — режим preview. В этом режиме текст заключается в рамку и никак не форматируется (то есть
теги, кроме </PRE>, игнорируются, и переводы строки ставятся там, и только там, где они есть в оригинальном
документе).
<DIV> … </DIV> — блок (обычно используется для применения стилей CSS)
<SPAN> … </SPAN> — строка (обычно используется для применения стилей CSS)
Гиперссылки
<A HREF="filename" target="_self">текст ссылки</A>
Атрибут HREF задает значение адреса документа, на который указывает ссылка.
filename — имя файла или адрес Internet, на который необходимо сослаться.
текст_ссылки — текст гипертекстовой ссылки, который будет непосредственно показан в HTML-документе.
TARGET — задает значение окна или фрейма, в котором будет открыт документ, на который указывает ссылка.
Возможные значения атрибута:
_top — открытие документа в текущем окне
_blank — открытие документа в новом окне
_self — открытие документа в текущем фрейме
_parent — открытие документа в родительском фрейме Значение по умолчанию: _self
11. Работа с графическими изображениями в HTML.
Для вставки изображений в HTML документ используется следующая конструкция (представлена полная):
<IMG SRC="Рисунок" BORDER="0" ALIGN="Выравнивание" WIDTH="Ширина" HEIGHT="Высота"
HSPACE="Отступ_1" VSPACE="Отступ_2" ALT="Подсказка" NAME="Имя" LOWSRC="Рисунок_2">
В таблице находится описание каждого параметра данной конструкции:
Имя графического файла с расширением (поддерживаются *.jpg, *.gif, *.png). Если файл находится
SRC
в другом каталоге, укажите к нему путь. Вы можете перейти на закладку, в которой идет речь о путях.
Выравнивание изображения в документе:
left - по левому краю.
right - по правому краю.
top или texttop - выравнивают верхнюю кромку изображения с верхней линией текущей текстовой
строки.
ALIGN
middle - выравнивает базовую линию текущей текстовой строки с центром изображения.
absmiddle - выравнивает центр текущей текстовой строки с центром изображения.
bottom или baseline - выравнивают нижнюю кромку изображения с базовой линией текущей текстовой
строки.
absbottom - выравнивает нижнюю кромку изображения с нижней кромкой текущей текстовой строки.
BORDER Рамка вокруг рисунка. Значение по умолчанию - 0 (без рамки).
WIDTH Ширина изображения в пикселях.
HEIGHT Высота изображения в пикселях.
HSPACE Горизонтальный отступ графического изображения в пикселях. Не обязательный параметр.
VSPACE Вертикальный отступ в пикселях. Не обязательный параметр.
Это сообщение, которое выводится вместо картинки, если она не показывается (не найдена или
ALT пользователь настроил свой Обозреватель так, что тот не показывает картинки). Кроме того, вы
увидите этот текст в виде подсказки, когда курсор мыши находится на рисунке.
NAME Определяет имя изображения. Для обычного изображения, не связанного ни с чем, этот параметр

65
совсем не обязательный.
Имя графического файла с расширением с альтернативным изображением более низкого качества
(и, соответственно, меньшего объема), чем изображение, указанное в параметре SRC. Обозреватели,
LOWSRC
поддерживающие данный параметр, сначала загрузят картинку из LOWSRC, а затем заменят ее
картинкой из SRC. Не обязательный параметр.
Пример обычной вставки изображения в электронный документ Вы можете наблюдать ниже. Вместо названия файла
я вставил изображения папки. Подведите курсор к рисунку, чтобы увидеть подсказку.
<IMG SRC=" " BORDER="0" ALT="Папка" WIDTH="17" HEIGHT="16">
Всегда задавайте размеры картинки в параметрах height и width, резервируя тем самым место в окне Обозревателя
еще до загрузки изображения. Параметр alt можно не указывать, но вдруг у человека не загрузилась картинка, он хоть
будет знать, что она собой представляет.
Карты - это способ сделать различные части одного графического изображения гиперссылками. Они позволяют
выделить отдельные области изображений и определить для каждой из них свое действие.
Здесь приводится HTML код данного примера. В нем исключены ссылки на script, который использовался в примере
для вывода сообщений.
<IMG SRC="Map_example.jpg" BORDER="0" WIDTH="200" HEIGHT="160" ALT="Пример изображения-
карты" USEMAP="#Map_example">
<MAP NAME="Map_example">
<AREA SHAPE="rect" COORDS="11,11,70,24" TITLE="Ссылка 1" HREF="URL">
<AREA SHAPE="rect" COORDS="70,72,128,83" TITLE="Ссылка 2" HREF="URL">
<AREA SHAPE="rect" COORDS="190,136,128,149" TITLE="Ссылка 3" HREF="URL">
Как видите, чтобы создать карту нужно вставить в тег <IMG SRC=""> атрибут USEMAP="#name", где name - имя
карты (значок # обязателен). В примере использовалось название Map_example. Я пропускаю остальные атрибуты в этом
теге, Вы их должны знать, т.к. о них уже рассказывалось в предыдущей статье
Далее описываем активные области карты. Начинаем с открывающегося тега <MAP NAME="name"> (здесь
повторяется имя, но уже без значка #), а заканчиваем закрывающимся тегом </MAP>.
Между этими тегами помещаем описание каждой активной области изображения: <AREA SHAPE="форма"
COORDS="координаты" HREF="адрес" TITLE="альтернативный текст">. Элемент <AREA> имеет следующие
аттрибуты и их значения:
Описывает форму выделяемой области, возможные значения:
RECT - прямоугольник
SHAPE CIRCLE - круг
POLY - многоугольник
DEFAULT - определяет всю область, т.е весь рисунок может стать ссылкой.
Координаты, определяющие размеры и положение области на изображении. Все координаты
отсчитываются в пикселях от левого верхнего угла изображения. Количество и порядок значений
зависит от значения аттрибута SHAPE:
RECT: - левый-X, верхний-Y, правый-X, нижний-Y (т.е. сначала координаты левого верхнего угла,
COORDS затем правого нижнего)
CIRCLE: - центр-X, центр-Y, радиус (т.е. горизонтальная и вертикальная координаты центра круга
и радиус)
POLY: - X1, Y1, X2, Y2, ..., Xn, Yn (просто перечисляются координаты всех вершин
многоугольника).
Определяет, что данной области не соответствует никакая ссылка. Где это может пригодиться?
NOHREF
Ну, например, если вы хотите сделать ссылку не в виде круга, а в виде кольца
ALT Альтернативный текст для выделенной области, используется невизуальными браузерами.
Название выделенной области, выводится в виде подсказки, всплывающей при наведении
TITLE
курсора на область рисунка.
Значение этого аттрибута ("_top", "_blank", "_self" или "_parent") определяет, в каком окне будет
TARGET
открыт документ
Для того, чтобы рассчитать точно координаты нужной части изображения существуют специальные программы. Одна
из них называется MapEdit.
Хороший пример навигации с помощью изображений-карт Вы можете посмотреть здесь.

Используя таблицы, можно создавать такие эффекты, как верстка в несколько колонок, применение эффектов
состыковки картинки и фона, тонкие линии на всю ширину или высоту странички и т.д.
Чтобы разобраться в устройстве таблицы, Такая таблица реализуется следующим кодом:
66
расмотрим простой пример: <TABLE BORDER="2" WIDTH="200"
BGCOLOR=”WHITE”>
Ячейка 1 Ячейка 2
<TR>
Ячейка 3 Ячейка 4 <TD>Ячейка 1</TD>
Примечание: В данном примере создана таблица с <TD>Ячейка 2</TD>
фиксированой шириной (WIDTH="200" пикселей), но </TR>
лучше использовать проценты, т.к. в этом случае размер <TR>
таблицы будет изменятся в зависимости от размера <TD>Ячейка 3</TD>
окна. <TD>Ячейка 4</TD>
</TR>
</TABLE>
Таблица начинается открывающимся тегом <TABLE> и завершается закрывающимся </TABLE>.
Тег <TABLE> может включать следующие аттрибуты:
Определяет ширину таблицы в пикселях или процентах, по умолчанию
WIDTH="n"
ширина таблицы определяется содержимым ячеек.
Устанавливает толщину рамки. По умолчанию n=0 - таблица рисуется без
BORDER="n"
рамки.
Устанавливает цвет окантовки, где #FFFFFF (белый) - шестнадцатиричное
BORDERCOLOR="#FFFFFF"
значение цвета.
Устанавливает цвет фона для всей таблицы, где #FFFFFF -
BGCOLOR="#FFFFFF"
шестнадцатиричное число.
BACKGROUND="image.gif" Заполняет фон таблицы изображением.
CELLSPACING="n" Определяет расстояние между рамками ячеек таблицы в пикселях.
CELLPADDING="n" Определяет расстояние в пикселях между рамкой ячейки и текстом.
Определяет расположение таблицы в документе. По умолчанию таблица
ALIGN=LEFT прижата к левому краю страницы. Допустимые значения аттрибута: LEFT (слева),
CENTER (по центру страницы) и RIGHT (справа).
Управляет внешней окантовкой таблицы, может принимать следующие
значения:
VOID - окантовки нет (значение по умолчанию).
ABOVE - только граница сверху.
BELOW - только граница снизу.
FRAME="значение" HSIDES - границы сверху и снизу.
VSIDES - только границы слева и справа.
LHS - только левая граница.
RHS - только правая граница.
BOX - рисуются все четыре стороны.
BORDER - также все четыре стороны.
Управляет линиями, разделяющими ячейки таблицы. Возможные значения (n):
NONE - нет линий (значение по умолчанию).
GROUPS - линии будут только между группами рядов.
RULES="n"
ROWS - только между рядами.
COLS - только между колонками.
ALL - между всеми рядами и колонками.
Таблица может включать заголовок, который распологается между тегами <CAPTION></CAPTION>. Он должен быть
непосредственно после тега <TITLE>. К заголовку возможно применение аттрибута ALIGN, определяющего его
положение относительно таблицы:
TOP - значение по умолчанию, заголовок над таблицей по центру.
LEFT - заголовок над таблицей слева.
RIGHT - заголовок над таблицей справа.
BOTTOM - заголовок под таблицей по центру.
Теперь о строках и ячейках таблицы. Строки таблицы начинаются открывающимся тэгом <TR> и завершаются
закрывающимся </TR>, а каждая ячейка таблицы начинается тегом <TD> и завершается </TD>. Данные теги могут иметь
такие аттрибуты:
Следующие атрибуты могут применятся для строк и ячейек.

67
Устанавливает горизонтальное выравнивание текста в ячейках строки.
ALIGN=LEFT Может принимать значение LEFT (выравнивание влево), CENTER
(выравнивание по центру) и RIGHT (вправо).
Устанавливает вертикальное выравнивание текста в ячейках строки.
Допустимые значения: TOP (выравнивание по верхнему краю), CENTER
VALIGN=CENTER
(выравнивание по центру - это значение принимается по умолчанию),
BOTTOM (по нижнему краю).
BGCOLOR="#FFFFFF" Устанавливает цвет фона строки или ячейки.
BACKGROUND="image.gif" Заполняет фон строки или ячейки изображением.
Следующие атрибуты могут применятся только для ячейек.
WIDTH="n" Определяет ширину ячейки в n пикселях.
HEIGHT="n" Определяет высоту ячейки в n пикселях.
Растягивание ячейки по горизонтали. Например, <TD COLSPAN="2">
COLSPAN="n"
означает, что ячейка будет растянута на 2 колонки.
Растягивание ячейки по строке. Например, <TD ROWSPAN="2" означает,
ROWSPAN="n"
что ячейка будет растянута на две строки таблицы.
Присутствие этого аттрибута показывает, что текст должен размещаться в
NOWRAP
одну строку
BACKGROUND="image.gif" Заполняет фон ячейки изображением.
Кроме этого, любая ячейка таблицы может быть определена не тегами <TD></TD>, а тегами <TH></TH> - Table
Header (заголовок таблицы). В принципе, это обычная ячейка, но текст внутри этих тегов будет выделен полужирным
шрифтом и отцентрирован.
Если ячейка пустая, то вокруг нее рамка не рисуется. Если рамка все же нужна вокруг пустой ячейки, то в нее надо
ввести символьный объект &nbsp; (non-breaking space - неразрывающий пробел). Ячейка по-прежнему будет пуста, а
рамка вокруг нее будет (&nbsp; - обязательно должен набираться строчными буквами и закрыватся точкой с запятой).
И еще - имейте ввиду, что теги, устанавливающие шрифт (<B>, <I>, <FONT SIZE="n", FONT COLOR="#FFFFFF"),
необходимо повторять для каждой ячейки.
12. Язык гипертекстовой разметки HTML. META-данные.
HTML (HyperText Markup Language) - язык гипертекстовой разметки документов. Назначение HTML в том, чтобы
сделать документы пригодными для чтения с экрана монитора.
Для создания HTML документов используют текстовые редакторы (например Блокнот), текстовые процессоры
(Word), редакторы тегов HTML и визуальные HTML-редакторы. Вы можете создать HTML документ в простом
Блокноте. Придерживаясь определѐнного стандарта и записав в текстовом файле HTML код, сохранив на жѐстком диске
и изменив расширение на .html или .htm вы получите полноценную web страничку.
Структура HTML документа
Теги - это инструменты разметки текста. Теги могут прописываться как строчными, так и прописными буквами,
разницы никакой нет. Теги бывают парными и не парными. В качестве примера парного тега можно привести тег
<html></html>, этот тег начинает и заканчивает любой HTML документ. Вторая часть парного тега отличается от первой
только наличием символа "/", однако первая часть тега может содержать и дополнительные параметры. Например в теге
<font size="4"></font>, параметр size="4" определяет размер текста. Примером непарного тега является <hr> - тег вставки
в HTML документ горизонтальной линии, такой как в конце этого абзаца.
Обязательные теги языка HTML
Любой HTML документ должен содержать следующие теги <html></html>, <head></head>, <body></body>,
<title></title>. Порядок расположения тегов в HTML документе представлен ниже
<html>
<head>
<title>Название вашей страницы</title>
</head>
<body>
Тело вашего документа
</body>
</html>
Внутри тега <head></head> располагается название вашего HTML документа (чаще всего именно его вы видите в
качестве ссылки в результатах поиска поисковыми машинами), помимо этого тега внутри конструкции <head></head>
могут располагаться так называемые Мета Теги. Их назначение и описание смотри в справочнике по Мета Тегам.
Тело HTML документа

68
Заголовки
Заголовки в языке HTML выделяются тегами <h1></h1>, <h2></h2>, ... , <h6></h6>. Таким образом существует 6
уровней заголовков. Можете поэкспериментировать - Вставьте вместо "Тело документа" предыдущем примере
<h1>HTML - это просто</h1>, сохраните в текстовом формате, измените расширение документа с .txt на .html и откройте
его в браузере. Ну как? По моему приятно когда начинает получаться, можете попробовать то же самое с заголовками
других уровней.
Абзацы в языке HTML
Абзац в HTML документе заключается в тег <P></P>. Таким образом конструкция <p> - Как настроение?</p><p> - Не
плохо.</p> будет выглядеть следующим образом
- Как настроение?
- Не плохо.
Выделение текста в HTML
Для выделения текста, или области текста в HTML используют теги <b></b>, <i></i>, <u></u>, таким образом строка
<b>жирный</b> <i>курсив</i> <u>подчѐркнутый</u> <u><i><b>жирный подчѐркнутый курсив</b></i></u>
Ненумерованные списки в HTML
Ненумерованные списки прописывают в HTML коде следующим образом <UL><LI>пункт 1<LI>пункт 2<LI>пункт
3</UL>
Нумерованные списки в HTML
Нумерованные списки прописывают следующими тегами <OL><LI>пункт 1<LI>пункт 2<LI>пункт 3</OL>
Вложенные списки списки в HTML
Посмотрите пример вложенного списка
<ul>
<li>Глава 1
<ul><li>Раздел 1<li>Раздел 2</ul>
<li>Глава 2
<ul><li>Раздел 1<li>Раздел 2</ul>
</ul>
Специальные символы в тексте документа
Специальные символы в тексте документа прописываются следующим образом
&lt; - левая скобка (<)
&gt; - правая скобка (>)
&amp; - (&)
&quot; - кавычки (")
Прерывание строки в тексте HTML документа
Прерывание строки осуществляется тегом <BR>.
Гиперссылки
Гиперссылка в языке HTML прописывается тегом <a></a>. Например запись вида
<a href="html.rar">Скачать учебник языка HTML</a>
Параметр href определяет место документа на который ссылается ссылка, в нашем примере ссылка относительная она
ссылается на документ html.rar расположенный в той же директории что и страница HTML. Абсолютная ссылка
прописывается следующим образом
<a href="http://webdesign.net-soft.ru/html.rar">Скачать учебник языка HTML</a>
Выглядит она аналогично предыдущей ссылке, но определяет точное местоположение документа.
Правила расстановки относительных ссылок в языке HTML
Если документ на который ссылается ссылка расположен в директории (папке) на уровень ниже, скажем dir, то
ссылка параметр href будет иметь вид href="dir/html.rar" , а если документ расположен в директории на уровень выше, то
нам необходимо будет записать href="../html.rar".
Вставка рисунков в HTML страницу
Рисунок в HTML документ вставляется следующим образом <img src="ris.jpg" width="100" height="140" alt="Учебник
по языку HTML">. Разберем, каково значение параметров тега <img>. Как видите, это одиночный тег. Параметр src
задаѐт путь к изображению (абсолютный или относительный). Правила указания относительного пути, такие же как и для
ссылки. Параметры width и height определяют ширину и высоту рисунка в пикселях в HTML документе. Параметр alt
задаѐт альтернативный текст - тот текст который отображается в браузере если отключена загрузка графики.
Фреймы в HTML документе
Фрейм - это рамка, в которую загружается другой HTML документ. Многие сайты имеют фреймовую структуру, наш
не исключение. Меню нашего сайта загружается во фрейм. Как это делается? Смотрите
<iframe name="I2" src="menu.htm" width="200" scrolling="no" height="500" marginwidth="2" marginheight="2">Ваш
браузер не поддерживает фреймы</iframe>
Параметр name - имя фрейма, src - путь к загружаемой во фрейм странице width, height соответственно ширина и
высота рамки. Параметр scrolling определяет отображаются ли полосы прокрутки во фрейме, если этот параметр не
прописан в HTML коде, то полосы прокрутки отображаются при необходимости, если он равен "no", то полосы
прокрутки не отображаются, если - "yes", то - отображаются в любом случае. Параметр name используется для задания
конечной рамки по умолчанию - рамки в которую будут загружаться страницы при переходе по гиперссылкам HTML

69
документа. Это осуществляется добавлением в HTML код тега <base> между тегами <head></head>. Для нашей рамки
<base target="I2">.
Таблицы в языке HTML
Таблицы в HTML документ вставляются следующим образом
<table border="1" style="border-collapse: collapse" bordercolor="#111111">
<tr><td>Ячейка11<td>Ячейка12</tr>
<tr><td>Ячейка21<td>Ячейка22</tr>
</table>
Таблицу открывает и закрывает тег <table></table>, тег <tr></tr> - определяет столбец, одиночный тег <td> определяет
ячейку в столбце, таким образом представленный код прописывает таблицу размером 2х2
Теги style и bordercolor определяют соответственно стиль отображения таблицы и цвет границы. Более подробно
смотрите в учебнике по HTML.
Теперь вы знакомы с основами языка HTML, более подробно изучит этот язык вам поможет учебник по HTML. Вы
также можете поэкспериментировать в визуальных HTML редакторах. Начинайте создавать простые HTML документы,
меняйте свойства их элементов и смотрите, что изменяется в HTML коде.

Мета-данные это информация о чем-либо. Она может быть о ресурсах, контенте, профиле пользователя, вопросах и
тестах. Мета-данные не могут существовать сами по себе. Основные задачи мета-данных - описание, структура,
администрирование.
Мета-данные - это есть данные о данных - это тот цемент, который скрепляет отдельные блоки здания
информационного склада и превращает его в одно работоспособное целое. Это информация об исходных данных: что
они собой представляют, где они хранятся, что они означают и как их можно разыскать и обновить.
Практически любая рабочая программа информационного склада использует мета-данные при соей работе.
Моделирующие программы используют их для того, чтобы установить взаимосвязи между данными. Программы
извлечения и транспортировки информации тоже используют их, чтобы найти правильную информацию, преобразовать
ее и поместить на предназначенное ей место в информационном складе.
Инструменты очистки, стандартизации и объединения данных тоже не могут работать без мета-данных. И только
благодаря семантическому уровню, который построен из мета-данных, инструменты доступа к исходной информации
позволяют скрыть от конечного пользователя всю сложность ее структуры. Благодаря этим программам пользователь
может осуществлять доступ к данным и работать с ними, не испытывая затруднений.
Главная задача для автора гипертекстового документа, если он хочет донести свое послание до читающей публики -
"отметиться" наиболее удачным способом во всех каталогах и поисковых системах, куда захаживает потенциальный
читатель в поисках информации по интересующей его теме.
Для этой цели в набор команд языка HTML включена специальная группа инструкций META, предназначенных в
основном для описания и индексирования документа поисковыми машинами.
Прежде чем начать регистрацию Вашего сайта в поисковых системах и каталогах, его необходимо к этому
подготовить. Иначе эффект от затраченных сил и времени будет минимальным. На данных примерах мы рассмотрим
МЕТА-теги. Их роль не заметна при отображении странички. Это лишь команды для web-сервера или броузера, но
команды важные, и правильное использование META-тегов дает Вам некоторые преимущества.
Поисковые системы при регистрации страницы используют информацию, хранящуюся в Мета дескрипторах, которые
помещаются между тегами заголовка head> и /head> в html страницах Вашего сайта. Мета используются хотя и не всеми
поисковыми системами, однако без них не обойтись. Элемент META определяет переменную=значение, описывающую
некоторое свойство документа: информацию об авторе, список ключевых слов и т.п. Атрибут name - переменная, а
content - ее значение. Запомните! Все META-теги не несут визуальной информации и должны располагаться только в
секции head>/head> документа.
Необязательно использовать весь набор Мета, но необходимость базовых очевидна. К ним отнесем Title, Keywords,
Description, Charset (многие сервера эту информацию сообщают в HTTP заголовке), Author.
Title - заголовок документа.
Хороший осмысленный заголовок может заставить пользователя из множества других выбрать именно Вашу ссылку.
пример: TITLE>Здесь Вы пишите заголовок документа. /TITLE>
Description - описание.
Нельзя переоценить значение хорошего описания, которое точно отражает преимущества вашего сайта. Description
отвечает за описание сайта, которое будет выводиться при ответе на запрос.
Для указания краткого описания используется:
meta name="description" content="описание_страницы">
Если хотите указать описание на русском, то надо указать атрибут lang
meta name="description" lang="ru" content="описание_страницы">
Content-Language
Еще одно частое использование META-тега - это указание языка, на которой написана страничка. Например, для того,
чтобы сказать браузеру, что Ваша страничка содержит текст на русском языке, Вы должны написать следующий код:
META HTTP-EQUIV="Content-Language" CONTENT="ru">
Charset - кодировка
Это указание кодировки, на которой написана страничка. Например, для того, чтобы сказать броузеру, что Ваша
страничка содержит текст в кодировке Win-1251, Вы должны написать следующий код:

70
meta http-equiv="content-type" content="text/html; charset=Windows-1251">
Robots - робот.
Управление индексацией для поисковых серверов. Основные значения : ALL - индексировать все, NONE - не
индексировать. Значение по умолчанию (в случае отсутствия данного тэга) - индексация всего:
meta name="robots" content="ALL">
Revisit - ревизия.
Указывается промежуток времени через которое система заново проиндексирует документ, в данном примере это 7
дней.
meta name="revisit-after" content="7 days">
refresh - автоматическое перенаправление (URL - переадресация).
Author - автор.
META-тег с параметром "author" служит для указания автора странички и учитывается некоторыми поисковыми
системами. И вообще у каждой странички должен быть автор, так что имеет смысл пользоваться этим тегом. Также
можно вписать e-mail и адрес вашего сайта, это полезно в тех случаях, когда документ оказывается вне сайта, легко
можно определить откуда он. Можно использовать Owner указав в нем отдельно e-mail владельца.
meta name="author" content="Vasa Pupkin">
Если хотите указать имя на русском, то надо указать атрибут lang
meta name="author" lang="ru" content="Вася Пупкин">
Похожий META-тег с параметром "generator" автоматически проставляется различными HTML-редакторами и
содержит информацию о программе, в которой была сделана страничка. Смысла от этого тега немного, это чистая
реклама. Некоторые авторы в его описании дублируют информацию META-тега "author".
Copyright - авторские права.
Для указания авторских прав:
Expires - срок действия или запрет кэширования страничек.
13. CSS: способы определения стилей.
CSS (англ. Cascading Style Sheets — каскадные таблицы стилей) — технология описания внешнего вида документа,
написанного языком разметки. Преимущественно используется как средство оформления веб-страниц в формате HTML и
XHTML, но может применяться с любыми видами документов в формате XML, включая SVG и XUL.
CSS используется создателями веб-страниц для задания цветов, шрифтов, расположения и других аспектов
представления документа. Основной целью разработки CSS являлось разделение содержимого (написанного на HTML
или другом языке разметки) и представления документа (написанного на CSS). Это разделение может увеличить
доступность документа, предоставить большую гибкость и возможность управления его представлением, а также
уменьшить сложность и повторяемость в структурном содержимом. Кроме того, CSS позволяет представлять один и тот
же документ в различных стилях или методах вывода, таких как экранное представление, печать, чтение голосом
(специальным голосовым браузером или программой чтения с экрана), или при выводе устройствами, использующими
Шрифт Брайля.
1) <LINK REL=STYLESHEET TYPE="text/css" HREF="URL">
Третий параметр – HREF= «URL» – указывает на файл, который содержит описания стилей. Этот параметр должен
содержать либо относительный путь к файлу – в случае, если он находится на том же сервере, что и документ, из
которого к нему обращаются – или полный URL («http://...») в случае, если файл стилей находится на другом сервере.
2) Описание стилей располагается в коде Web-странички, внутри тега <BODY>, в теге <STYLE type="text/css">...
</STYLE>. В этом случае вы можете использовать эти стили для элементов, располагающихся в пределах странички.
Параметр type="text/css" является обязательным и служит для указания броузеру использовать CSS.
3) Описание стиля располагается непосредственно внутри тега элемента, который вы описываете. Это делается с
помощью параметра STYLE, используемого при применении CSS с большинством стандартных тегов HTML. он
приводит к потере одного из основных преимуществ CSS – возможности отделения информации от описания
оформления информации.
СПОСОБЫ ОПРЕДЕЛЕНИЯ СТИЛЕЙ.
Стиль можно определить внутри какого-либо HTML-тэга. Выглядит это следующим образом:

<P style=”text-align: center; font-style: italic; font-size: 5pt;”>

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

<Link href=”style.css” type=”text/css” rel=”stylesheet”>

Последний атрибут дает понять браузеру, что содержимое файла style.css – ничто иное, как таблицы стилей. Такой
способ очень удобен и является одним из самых предпочтительных. Style.css – это текстовый файл, содержащий только
описания элементов. Здесь не должно быть никаких контейнеров и тэгов. Могу привести пример:
________________________________________
P {text-indent: 15;
71
font-size: 20;}
________________________________________

Как видите, ничего сложного тут нет. Свойство text-indent определяет красную строку, которая в нашем случае равна
15 пикселям.
Установку стилей для одного тэга можно применять многократно. Если мои слова для вас – пустой звук, то взгляните
на очередной пример:
________________________________________
Font, P {font-size: 20;}
P, H1 {color: darkgreen;}
________________________________________
Предположим, что в некотором файле style.css, вы определили свойство P {color: blue;}, но вам необходимо сделать
цвет абзаца другим. В таком случае, при постановке стилей в контейнере <Style> и разметке P{color: red;}, цвет будет
одинаково красным во всех абзацах, то есть свойство, определенное в файле замещается. На этом урок завершен. Все
встали, перемена!
14. Инструментальные средства создания клиентской части: их характеристика и
назначение.
Одной из главных концепций WWW является обеспечение возможности получения доступа и организации работы
с информационными объектами различных типов с помощью одной клиентской программы. Именно поэтому с самого
начала на клиентское программное обеспечения накладывалось требование универсальности, как с точки зрения
представления пользователю различных информационных объектов (Web-документов, тестовых файлов, графических
файлов и т.п.), так и с точки зрения обеспечения доступа к различным серверам по различным протоколам (например, к
FTP-серверам).
Функции современных Web-клиентов можно разделить на две группы:
 стандартные функции, которые поддерживаются всеми клиентами и обеспечивают основные механизмы
работы с WWW
 дополнительные, которые являются не обязательными и поддерживаются всеми развитыми клиентами для
повышения удобства работы пользователей.
Стандартные функции Web-клиентов обеспечивают возможность использования WWW как
интегрирующего сервиса. К ним относятся:
 обеспечение доступа к различным информационным ресурсам Интернет;
 обеспечение работы с информационными объектами различного типа;
 обеспечение навигации в информационном пространстве WWW;
 обеспечение кэширования и управление загрузкой объектов.

1. В настоящее время Web-клиенты позволяют непосредственно осуществлять доступ к Web-серверам (протоколы


HTTP и HTTPS), FTP-серверам (протокол FTP) и Gopher-серверам (протокол Gopher). При необходимости обращения к
ресурсам, доступным через другие протоколы, Web-клиенты передают управление соответствующим программным
клиентам, которые могут быть реализованы либо как отдельные приложения, либо как дополнительно встраиваемые
программные расширения Web-клиентов (plugins). Такая программная интеграция позволяет осуществлять доступ к
ресурсам следующих сервисов:
 WWW;
 FTP;
 Электронная почта;
 Телеконференции;
 Telnet;
 мультимедиа ресурсы (например, RealAudio и RealVideo).
2. работа с объектами предполагает выполнение следующих действий:
 получение по запросу пользователя объекта от сервера;
 корректное отображение объекта, печать и обеспечение интерактивного взаимодействия с объектом, если
это требуется;
 сохранение объекта в виде отдельного файла или набора файлов на диске;
 перенос объекта из окна клиента в другое приложение через буфер обмена.

На практике невозможно создать программный продукт, который позволит работать с объектами любого типа.
Поэтому при разработке Web-клиентов обычно реализуется трехуровневый подход обеспечения универсальности
работы:
1. Первый уровень предполагает, что ряд информационных объектов отображается и управляется
непосредственно Web-клиентом. К числу таких объектов относятся:
 HTML-файлы;
 графические изображения в форматах GIF, JPEG и PNG, входящие в состав Web-документа (или как
независимые файлы);

72
 неформатированный текст.
2. Второй уровень предполагает, что часть объектов с помощью дополнительных программных расширений Web-
клиента (plugins). Примером таких объектов являются объекты Macromedia Flash.
3. Третий уровень предполагает, что для ряда объектов Web-клиент не может обеспечить полноценную
обработку. В этом случае может быть привлечено дополнительное программное обеспечение, специально
предназначенное для работы с такими объектами, либо объекты могут быть просто сохранены в виде отдельного файла
или набора файлов на диске пользовательского компьютера. В качестве примера можно привести документы Microsoft
Office
….
3. Механизм навигации предполагает обеспечение возможности перехода от одного информационного объекта к
другому, т.е. своеобразного "путешествия" по информационному пространстве. Современные клиенты позволяют
выполнять такое перемещение несколькими способами:
 путем непосредственного задания адреса объекта;
 путем перехода по гиперссылкам от одного к другому;
 путем отката назад по "пройденному пути" и перемещения вперед после отката;
 путем использования "истории" или "журнала", где регистрируются последние посещения.

Дополнительные функции, которые присущи практически существующим всем Web-клиентам:


 поддержка маркеров "cookie";
 поддержка Java-апплетов и технологии ActiveX;
 поддержка механизмов обеспечения безопасности

1. Современные Web-клиенты поддерживают работу с маркерами cookie в различных режимах. Возможны


следующие варианты:
 Web-клиент автоматически сохраняет файлы cookie по запросу сервера;
 Web-клиент выборочно сохраняет файлы cookie по какому-либо условию, например, по разрешению
пользователя или только связанные с определенными узлами;
 Web-клиент не сохраняет файлы cookie ни при каких обстоятельствах.
Для решения этой проблемы в свое время был предложен механизм, основанный на использовании специальных
маркеров cookie. Маркер cookie - это небольшой файл, который сохраняется Web-клиентом на локальном диске по
запросу Web-сервера, содержащий информацию о просмотренных страницах, о клиенте, а также настройках и
параметрах, установленных пользователем для этих страниц. При повторном обращении информация, сохраненная в
соответствующем файле cookie, передается серверу.
2. Поддержка Java-апплетов и технологии ActiveX
Для обеспечения работы с Java-апплетами и объектами ActiveX Web-клиент должен отвечать определенным
требованиям:
 в составе Web-клиента должна входить "Java-машина", обеспечивающая исполнение Java-апплетов, либо
Web-клиент должен уметь взаимодействовать с внешней Java-машиной, например, входящей в состав
операционной системы (см. раздел "Java-апплеты");
 для поддержки технологии ActiveX Web-клиент должен быть реализован как ActiveX-контейнер,
обеспечивая тем самым функционирования управляющих элементов ActiveX (см. раздел "Технология
ActiveX");
3. Поскольку поддержка Java-апплетов и технологии ActiveX связана с исполнением внешних программ,
полученных из сети Интернет, то Web-клиент должен с целью обеспечения безопасности пользовательского узла
контролировать действия и ограничивать возможности этих программ. Современные Web-клиенты позволяют работать с
Java-апплетами и управляющими элементами ActvaX в следующих режимах:
 в режиме, когда функционирование программного объекта позволяется;
 в режиме, когда работа программного объекта в целом или выполнение определенных действий
блокируется;
 в режиме, когда Web-клиент запрашивает у пользователя возможность выполнения определенных
действий или функционирования объекта в целом.

Страницы можно генерировать как на стороне клиента, так и на стороне сервера. В 1995 году специалисты
компании Netscape создали механизм управления страницами на клиентской стороне, разработав язык программирования
JavaScript.
Инструментальные средсва создания клиентской части:
1. Сценарии JavaScript и VBScript
Сценарии (scripts) являются еще одним расширением языка HTML. Сценарии представляют собой небольшие
программы, текст которых включается в голову HTML-файла с помощью специальных тегов. При загрузке документа
Web-клиент выделяет сценарии и передает их специальному модулю - интерпретатору языка, на котором написан
сценарий, для проверки правильности программного кода и его подготовки к последующему исполнению. Исполнение
программы может осуществляться непосредственно при загрузке документа или же при выполнении определенных
условий (например, при поступлении команды пользователя) - это определяется самим сценарием.

73
Сценарии широко используются для повышения функциональности документа, поскольку позволяют:
 придать динамику элементам Web-документа, например, организовать движение картинок;
 организовать динамическое обновление части Web-документа в зависимости от определенных условий,
например, через определенные промежутки времени или по командам пользователя;
 организовать интерактивное взаимодействие с пользователем путем обработки определенных событий,
например перемещения указателя "мыши" или нажатия каких-либо клавиш на клавиатуре.
Для создания подобных сценариев используются специальные языки программирования. Наиболее
распространенными являются два: язык JavaScript, разработанный компанией Netscape, и язык VBScript - разработка
фирмы Microsoft.

Таким образом, JavaScript - это язык управления сценариями просмотра гипертекстовых страниц Web на стороне
клиента.
Основная идея JavaScript состоит в возможности изменения значений атрибутов HTML-контейнеров и свойств
среды отображения в процессе просмотра HTML-страницы пользователем. При этом перезагрузки страницы не
происходит.
На практике это выражается в том, что можно, например, изменить цвет фона страницы или интегрированную в
документ картинку, открыть новое окно или выдать предупреждение.
Название "JavaScript" является собственностью Netscape. Реализация языка, осуществленная разработчиками
Microsoft, официально называется Jscript. JavaScript является подмножеством языка JScript.
JavaScript стандартизован ECMA (European Computer Manufacturers Association - Ассоциация европейских
производителей компьютеров). Соответствующие стандарты носят названия ECMA-262 и ISO-16262.
2. Java-апплеты
Java-апплет - это небольшая программа, написанная на языке программирования Java. Подобные программы
используются для придания динамического характера Web-документу. Классическим примером использования Java-
апплетов является придание статическим картинкам определенных эффектов (падающего снега, движения волн по
поверхности воды и т.п.), а также различные способы анимации динамически задаваемых текстовых надписей.
Язык программирования Java обладает рядом особенностей, упрощающих его использование в Интернет. К их
числу следует отнести следующие два:
Исходный текст программы преобразуется не в машинные команды, а в специальный код, который не может
напрямую исполнятся процессором. Это обеспечивает аппаратную независимость программы и позволяет использовать
ее на компьютерах различных типов. Однако такой подход требует наличия на компьютере, где исполняется Java-апплет,
специального модуля (так называемой "Java-машины"), обеспечивающего преобразование независимого кода в
машинные команды и их выполнение процессором.
В языке отсутствуют средства, позволяющие организовать прямое взаимодействие с устройствами и, прежде
всего, с оперативной памятью. Это исключает возможность появления в тексте программ большого числа ошибок,
которые могут привести к сбою компьютерной системы, а, следовательно, обеспечивает повышенную стабильность
работы программ.
Java-апплеты реализуются в виде отдельных файлов и хранятся на Web-серверах. Возможность использования
апплетов в Web-документах обеспечивается тем, что: механизмами:
 На клиентском компьютере имеется программный компонент "Java-машина", обеспечивающий
исполнение апплета (Java-машина может включаться либо в состав Web-клиента, либо - в состав
операционной системы, управляющей работой Web-клиента);
 в состав языка HTML включен специальный тег, позволяющий подключить апплет к Web-документу и
указать его адрес в Сети и входные параметры.
3. Технология ActiveX
Технология ActiveX - это еще одно средство расширения возможностей WWW. Принцип этой технологии основан
на том, что для каждого типа информационных объектов (например, HTML-документов, документов Microsoft Office и
т.п.) создаются специальные управляющие элементы. Управляющий элемент ActiveX (ActiveX-control) - это
программный модуль, обеспечивающий корректное отображение объекта и интерфейс, позволяющий пользователю
работать этим с объектом. Управляющие элементы не могут функционировать как самостоятельные независимые
программы. Они выполняются в пределах некоторой программной оболочки - ActiveX-контейнера. Важно отметить, что
активизация и выполнение управляющего элемента происходит только при обращении к соответствующему объекту.
Такой подход позволяет строить программные средства, способные путем использования управляющих элементов
ActiveX, осуществлять работу с большим количеством различных информационных объектов, а также с составными
документами, объединяющими внутри себя различные объекты. В частности, именно благодаря этой технологии имеется
возможность "встраивать" в Web-документы таблицы, подготовленные в Microsoft Excel или слайды презентаций
Microsoft PowerPoint.
Технология ActiveX - это общая технология построения программных комплексов. Она не является
специализированной технологией World Wide Web. WWW - одна из областей применения ActiveX.
Возможность использования технологии ActiveX в WWW обеспечивается двумя механизмами:
Web-клиент, поддерживающий технологию ActiveX, реализуется как контейнер, позволяющий при обращении к
тому или иному информационному объекту динамически встраивать и выполнять "внутри себя" соответствующий
управляющий элемент ActiveX;
74
в состав языка HTML включен специальный тег, позволяющий устанавливать связи с объектами, доступными с
помощью ActiveX
15. Модели web-систем, их характеристика и назначение.
Web-система
Система на основе технологии Web (web-система) — это система гипертекстовых документов, поскольку ее ресурсы
связаны между собой.Базовыми элементами web-системы являются браузер клиента, сеть и web-сервер.
С помощью специальной программы — браузера, работающем на клиентском компьютере, пользовательможет
запрашивать документы web с других
компьютеров сети и отображать их на
экранесвоего компьютера. Для просмотра
документа необходимо запустить браузер, затем
ввести имя документа и имякомпьютера, на
котором он находится. Браузер отправляет этому
компьютеру запрос на документ, который
обрабатывается программным приложением,
получившим название web-сервер.Web-сервер
обычно работает какслужба, отслеживающий
сетевую активность через специальный порт. Рисунок 1. Базовая web-система
Браузер отправляет через этот порт запросы на
документ (web-страницу) в специальном формате.
Web-сервер получает запрос, находит документ и отправляет его обратно браузеру.
Web-приложение — это web-система, обеспечивающая возможность динамического изменения содержания web-
страниц и позволяющая пользователям изменять бизнес-логику приложения на сервере через браузер. Во всех подобных
приложениях пользователь не просто просматривает информацию, он еще и вводит данные, которые изменяют состояние
системы. Web-сайт можно рассматривать как видимую часть web-приложения.
Браузерами и web-серверами используется протокол HTTP, который определяет, как браузер должен форматировать и
отправлять запросы web-серверу.
Помимо установки сетевых соединений и применения протоколов, для обмена документами браузеры также
выполняют функцию обработки и отображения документов. Основным языком форматирования web-страниц является
языкразметки гипертекста HTML. Он содержит тэги, определяющие способ форматированиятекста в окне браузера —
шрифт, размер, цвет, а также тэги для определения ссылки на другую web-странницу.
Важным элементом HTML является форма. Именно наличие формы отличает web-приложение от web-сайта. Форма
— это часть web-страницы, в которой пользователь может вводить свою информацию. Общий принцип обработки форм
состоит в том, что исполняемая страница используются web-сервером для обработкизначений, введенных в форму и
генерирования новой страницы HTML, которую необходимо отправить браузеру. Чаще всего в процессе обработки этих
значений объекты сервера взаимодействуютс базами данных.
16. Данные в PHP: переменные и константы. Приведение типов.
Типы данных составляют основу любого языка программирования и являются средством, с помощью которого
программист представляет разные типы информации. В РНР поддерживаются шесть основных типов данных:
 целые числа;
 вещественные числа;
 строки;
 массивы;
 объекты;
 логические величины.
Одним из столпов любого языка программирования является поддержка числовых данных. В РНР поддерживаются
как целые, так и вещественные числа (двойной точности). Разные числовые форматы подробно описываются в
следующих разделах.
Целые числа
Целое число не имеет дробной части и представляется последовательностью из одной или нескольких цифр. Примеры
целых чисел:
5
591
52
Восьмеричная и шестнадцатеричная запись
В РНР поддерживается запись целых чисел в восьмеричной (по основанию 8) и шестнадцатеричной (по основанию
16) системах счисления. Восьмеричные числа начинаются с цифры 0, после которой следует серия цифр от 0 до 7.
Примеры:
0422
0534
Шестнадцатеричные целые числа имеют префикс 0х или 0Х и могут состоять из цифр от 0 до 9 и букв от а (А) до f
(F). Примеры:

75
0x3FF
0x22abc
Вещественные числа
Вещественные числа (числа с плавающей точкой) отличаются от целых наличием дробной части. Они используются
для представления значений, требующих повышенной точности, — например, температур или денежных величин. В РНР
поддерживаются два вещественных формата: стандартная и научная (экспоненциальная) запись.
Стандартная запись
Стандартная запись удобна для представления типичных вещественных чисел — скажем, денежных величин.
Примеры:
12.45
98.6
Научная запись
Научная запись лучше подходит для представления очень больших и очень малых чисел — скажем, межпланетных
расстояний или размеров атомов. Примеры:
Зе8
5.9736е24
Строковые значения
Строкой (string) называется последовательность символов, которая рассматривается как единое целое, но при этом
обеспечивает доступ к отдельным символам. Примеры строк:
thesaurus
49ers
abc
&%/$#
Последовательность Смысл
\n Новая строка
\r Возврат курсора
\t Горизонтальная табуляция
\\ Обратная косая черта
\$ Знак доллара
\" Кавычка
\[0-7]{1,3} Восьмеричная запись числа (в виде регулярного выражения)
\x[0-9A-Fa-f]{l,2} Шестнадцатиричная запись числа (в виде регулярного выражения)

Массивы
Массив представляет собой список однотипных элементов. Существует два типа массивов, различающиеся по
способу идентификации элементов. В массивах первого типа элемент определяется индексом в последовательности.
Массивы второго типа имеют ассоциативную природу, и для обращения к элементам используются ключи, логически
связанные со значениями. Впрочем, на практике операции с массивами обоих типов выполняются сходным образом. По
размерности массивы делятся на одномерные и многомерные.
Одномерные индексируемые массивы
При обращении к элементам одномерных индексируемых массивов используется целочисленный индекс,
определяющий позицию заданного элемента.
Обобщенный синтаксис элементов одномерного массива:
$имя[индекс1];
Одномерные массивы создаются следующим образом:
$meat[0] = "chicken";
$meat[l] = "steak";
$meat[2] = "turkey";
Одномерные ассоциативные массивы
Ассоциативные массивы особенно удобны в ситуациях, когда элементы массива удобнее связывать со словами, а не с
числами.
Предположим, вы хотите сохранить в массиве лучшие сочетания вин и блюд. Проще всего было бы хранить в массиве
пары «ключ/значение» — например, присвоить сорт вина названию блюда. Самым разумным решением будет
использование ассоциативного массива:
Spairings["zinfandel"] = "Broiled Veal Chops";
$pairings["merlot"] = "Baked Ham";
$pairings["sauvignon"] = "Prime Rib";
$pairings["sauternes"] = "Roasted Salmon";
Многомерные индексируемые массивы

76
Многомерные индексируемые массивы работают практически так же, как и их одномерные прототипы, однако
элементы в них определяются несколькими индексами вместо одного. Теоретически размерность индексируемого
массива не ограничивается, хотя в большинстве приложений практически не встречаются массивы с размерностью выше
3.
Обобщенный синтаксис элементов многомерного массива:
$имя[индекс1][индекс2]..[индексN];
Пример ссылки на элемент двухмерного индексируемого массива:
$position = $chess_board[5][4];
Многомерные ассоциативные массивы
Многомерные ассоциативные массивы также существуют в РНР (и приносят определенную пользу). Допустим, в
массиве $раirings из предыдущего примера должна храниться информация не только о сорте, но и о производителе вина.
Это можно сделать следующим образом:
$pairings["Martinelli"]["zinfandel"] = "Broiled Veal Chops";
$pairings["Beringer"]["merlot"] = "Baked Ham";
$pairings["Jarvis"]["sauvignon"] = "Prime Rib";
$pairings["Climens"]["sauternes"] = "Roasted Salmon";
Смешанное индексирование
В многомерных массивах допускается смешанное индексирование (числовое и ассоциативное). Допустим, вы хотите
расширить модель одномерного ассоциативного массива для хранения информации об игроках первого и второго состава
футбольной команды. Решение может выглядеть следующим образом:
$Buckeyes["quarterback"] [1] = "Bellisari";
$Buckeyes["quarterback"] [2] = "Moherman":
$Buckeyes["quarterback"] [3] = "Wiley";
В РНР существует множество функций для создания массивов
Объекты
К пятому типу данных РНР относятся объекты. Объект представляет собой переменную, экземпляр которой
создается по специальному шаблону, называемому классом. Концепции объектов и классов являются неотъемлемой
частью парадигмы объектно-ориентированного программирования (ООП).
В отличие от других типов данных, поддерживаемых в языке РНР, объекты должны объявляться явно. Необходимо
понимать, что объект — всего лишь конкретный экземпляр класса, используемого в качестве шаблона для создания
объектов с конкретными характеристиками и функциональными возможностями. Следовательно, объявление класса
должно предшествовать объявлению объектов, создаваемых на их основе. Пример объявления класса и последующего
создания объектов на его основе:
class appliance {
var power:
function set_power($on_off) {
$this->power = $on_off;
}
}
...
$blender = new appliance;
Логические величины (истина/ложь)
Логический тип данных принимает всего два значения: истинное (true) и ложное (false). Логические величины
создаются двумя способами: при проверке условий и в виде значений переменных. Обе ситуации достаточно просты.
Сравнения существуют в нескольких формах. Чаще всего они встречаются при использовании оператора = в условной
команде if. Пример:
if ($sum == 40) :
...
Результатом проверки является либо истина, либо ложь: переменная $sum либо равна 40, либо не равна. Если
переменная $sum равна 40, проверка дает истинный результат. В противном случае результат равен false.
Переменные
В примерах, приведенных выше, я попутно показал, как происходит присваивание и изменение значений переменных.
И все же стоит четко сформулировать правила объявления переменных и выполнения операций с ними. Ниже
приводится подробное описание этих правил.
Объявление переменных
Переменная представляет собой именованную область памяти, содержащую данные, с которыми можно выполнять
операции во время выполнения программы.
Имена переменных всегда начинаются со знака доллара, $. Ниже приведены примеры допустимых имен переменных:
$соlоr
$operating_system
$_some_variable
$model

77
Имена переменных должны соответствовать тем же условиям, что и идентификаторы. Другими словами, имя
переменной начинается с буквы или символа подчеркивания и состоит из букв, символов подчеркивания, цифр или
других ASCII-символов в интервале от 127 до 255.
Константы
Константой называется именованная величина, которая не изменяется в процессе выполнения программы.
Константы особенно удобны при работе с заведомо постоянными величинами — например, числом π (3,141592) или
количеством футов в миле (5280).
В РНР константы определяются функцией define( ). После того как константа будет определена, вы не сможете
изменить (или переопределить) ее в этой программе.
Например, определение числа я в сценарии РНР может выглядеть так:
define("'PI", "3.141592");
Определенную константу можно использовать в программе:
print "The value of pi is". PI."<br>";
$pi2 - 2 * PI:
print "Pi doubled equals $pi2.";
Результат работы этого фрагмента будет таким:
The value of pi is 3.141592.
Pi doubled equals 6.283184.
17. Циклические конструкции в PHP.
Циклы позволяют повторять определенное (и даже неопределенное - когда работа цикла зависит от условия)
колличество раз различные операторы. Данные операторы называются телом цикла. Проход цикла называется итерацией.
PHP поддерживает три вида циклов:
Цикл с предусловием (while);
Цикл с постусловием (do-while);
Цикл со счетчиком (for);
Специальный цикл перебора массивов (foreach).
При использовании циклов есть возможность использования операторов break и continue. Первый из них прерывает
работу всего цикла, а второй - только текущей итерации.
Рассмотрим циклы PHP:
Цикл с предусловием while
Цикл с предусловием while работает по следующим принципам:
Вычисляется значение логического выражения.
Если значение истинно, выполняется тело цикла, в противном случае - переходим на следующий за циклом оператор.
Синтаксис цикла с предусловием:
while (логическое_выражение)
инструкция;
В данном случае телом цикла является инструкция. Обычно тело цикла состоит из большого числа операторов.
Приведем пример цикла с предусловием while:
<?php
$x=0;
while ($x++<10) echo $x;
// Выводит 12345678910
?>
Обратите внимание на последовательность выполнения операций условия $x++<10. Сначала проверяется условие, а
только потом увеличивается значение переменной. Если мы поставим операцию инкремента перед переменной
(++$x<10), то сначала будет выполнено увеличение переменной, а только затем - сравнение. В результате мы получим
строку 123456789. Этот же цикл можно было бы записать по-другому
<?php
$x=0;
while ($x<10)
{
$x++; // Увеличение счетчика
echo $x;
}
// Выводит 12345678910
?>
Если мы увеличим счетчик после выполнения оператора echo, мы получим строку 0123456789. В любом случае, мы
имеем 10 итераций. Итерация - это выполение операторов внутри тела цикла.
Подобно конструкции условного оператора if, можно группировать операторы внутри тела цикла while, используя
следующий альтернативный синтаксис:
while (логическое_выражение):
инструкция;
...
endwhile;
78
Пример использования альтернативного синтаксиса:
<?php
$x = 1;
while ($x <= 10):
echo $x;
$x++;
endwhile;
?>
Цикл с постусловием do while
В отличие от цикла while, этот цикл проверяет значение выражения не до, а после каждого прохода (итерации). Таким
образом, тело цикла выполняется хотя бы один раз. Синтаксис цикла с постусловием такой:
do
{
тело_цикла;
}
while (логическое_выражение);
После очередной итерации проверяется, истинно ли логическое_выражение, и, если это так, управление передается
вновь на начало цикла, в противном случае цикл обрывается.
Альтернативного синтаксиса для do-while разработчики PHP не предусмотрели (видимо, из-за того, что, в отличие от
прикладного программирования, этот цикл довольно редко используется при программировании web-приложений).
Пример скрипта, показывающего работу цикла с постусловием do-while:
<?php
$x = 1;
do {
echo $x;
} while ($x++<10);
?>
Рассмотренный сценарий выводит: 12345678910
Цикл со счетчиком for
Цикл со счетчиком используется для выполнения тела цикла определенное число раз. С помощью цикла for можно (и
нужно) создавать конструкции, которые будут выполнять действия совсем не такие тривиальные, как простая переборка
значения счетчика.
Синтаксис цикла for такой:
for (инициализирующие_команды; условие_цикла; команды_после_итерации) { тело_цикла; }
Цикл for начинает свою работу с выполнения инициализирующих_команд. Данные команды выполняются только
один раз. После этого проверяется условие_цикла, если оно истинно (true), то выполняется тело_цикла. После того, как
будет выполнен последний оператор тела, выполняются команды_после_итерации. Затем снова проверяется
условие_цикла. Если оно истинно (true), выполняется тело_цикла и команды_после_итерации, и.т.д.
<?php
for ($x=0; $x<10; $x++) echo $x;
?>
Данный сценарий выводит: 0123456789
Есть вариант вывода строки 12345678910:
<?php
for ($x=0; $x++<10;) echo $x;
// Выводит 12345678910
?>
В данном примере мы обеспечили увеличение счетчика при проверке логического выражения. В таком случае нам не
нужны были команды, выполняющиеся после итерации.
Если необходимо указать несколько команд, их можно разделить запятыми, пример:
<?php
for ($x=0, $y=0; $x<10; $x++, $y++) echo $x;
// Выводит 0123456789
?>
Приведем еще один, более практичный пример использования нескольких команд в цикле for:
<?php
for($i=0,$j=0,$k="Точки"; $i<10; $j++,$i+=$j) { $k=$k."."; echo $k; }
// Выводит Точки.Точки..Точки...Точки....
?>
Рассмотренный пример (да и вообще любой цикл for) можно реализовать и через while, только это будет выглядеть не
так изящно и лаконично.
Для цикла for имеется и альтернативный синтаксис:
for(инициализирующие_команды; условие_цикла; команды_после_итерации):
операторы;

79
endfor;
Цикл перебора массивов foreach
В PHP4 появился еще один специальный тип цикла - foreach. Данный цикл предназначен специально для перебора
массивов.
Синтаксис цикла foreach выглядит следующим образом:
foreach (массив as $ключ=>$значение)
команды;
Здесь команды циклически выполняются для каждого элемента массива, при этом очередная пара ключ=>значение
оказывается в переменных $ключ и $значение. Приведем пример работы цикла foreach:
<?php
$names["Иванов"] = "Андрей";
$names["Петров"] = "Борис";
$names["Волков"] = "Сергей";
$names["Макаров"] = "Федор";
foreach ($names as $key => $value) {
echo "<b>$value $key</b><br>";
}
?>
Рассмотренный сценарий выводит:
Андрей Иванов
Борис Петров
Сергей Волков
Федор Макаров
У цикла foreach имеется и другая форма записи, которую следует применять, когда нас не интересует значение ключа
очередного элемента. Выглядит она так:
foreach (массив as $значение)
команды;
В этом случае доступно лишь значение очередного элемента массива, но не его ключ. Это может быть полезно,
например, для работы с массивами-списками:
<?php
$names[] = "Андрей";
$names[] = "Борис";
$names[] = "Сергей";
$names[] = "Федор";
foreach ($names as $value) {
echo "<b>$value</b><br>";
}
?>
Внимание: Цикл foreach оперирует не исходным массивом, а его копией. Это означает, что любые изменения, которые
вносятся в массив, не могут быть "видны" из тела цикла. Что позволяет, например, в качестве массива использовать не
только переменную, но и результат работы какой-нибудь функции, возвращающей массив (в этом случае функция будет
вызвана всего один раз - до начала цикла, а затем работа будет производиться с копией возвращенного значения).
Конструкция break
Очень часто для того, чтобы упростить логику какого-нибудь сложного цикла, удобно иметь возможность его
прервать в ходе очередной итерации (к примеру, при выполнении какого-нибудь особенного условия). Для этого и
существует конструкция break, которая осуществляет немедленный выход из цикла. Она может задаваться с одним
необязательным параметром - числом, которое указывает, из какого вложенного цикла должен быть произведен выход.
По умолчанию используется 1, т. е. выход из текущего цикла, но иногда применяются и другие значения. Синтаксис
конструкции break:
break; // По умолчанию
break(номер_цикла); // Для вложенных циклов (указывается номер прерываемого цикла)
Приведем примеры:
<?php
$x=0;
while ($x++<10) {
if ($x==3) break;
echo "<b>Итерация $x</b><br>";
}
// Когда $x равен 3, цикл прерывается
?>
Рассмотренный сценарий выводит:
Итерация 1
Итерация 2

80
Если нам нужно прервать работу определенного (вложенного) цикла, то нужно передать конструкции break параметр
- номер_цикла, например, break(1). Нумерация циклов выглядит следующим образом:
for (...) // Третий цикл
{
for (...) // Второй цикл
{
for (...) // Первый цикл
{
}
}
}

Конструкция continue
Конструкция continue так же, как и break, работает только "в паре" с циклическими конструкциями. Она немедленно
завершает текущую итерацию цикла и переходит к новой (конечно, если выполняется условие цикла для цикла с
предусловием). Точно так же, как и для break, для continue можно указать уровень вложенности цикла, который будет
продолжен по возврату управления.
В основном continue позволяет вам сэкономить количество фигурных скобок в коде и увеличить его удобочитаемость.
Это чаще всего бывает нужно в циклах-фильтрах, когда требуется перебрать некоторое количество объектов и выбрать
из них только те, которые удовлетворяют определенным условиям. Приведем пример использования конструкции
continue:
<?php
$x=0;
while ($x++<5) {
if ($x==3) continue;
echo "<b>Итерация $x</b><br>";
}
// Цикл прервется только на третьей итерации
?>
18. PHP: Строки и функции для работы со строками.
Возможности эффективной организации, поиска и распространения информации давно представляли интерес для
специалистов в области компьютерных технологий. Поскольку информация в основном представляет собой текст,
состоящий из алфавитно-цифровых символов, разработка средств поиска и обработки информации по шаблонам,
описывающим текст, стала предметом серьезных теоретических исследований.
Поиск по шаблону позволяет не только находить определенные фрагменты текста, но и заменять их другими
фрагментами. Одним из стандартных примеров поиска по шаблону являются команды поиска/замены в текстовых
редакторах — например, в MS Word, Emacs и в моем любимом редакторе vi. Всем пользователям UNIX хорошо известны
такие программы, как sed, awk и grep; богатство возможностей этих программ в значительной степени обусловлено
средствами поиска по шаблону. Механизмы поиска по шаблону решают четыре основные задачи:
 поиск строк, в точности совпадающих с заданным шаблоном;
 поиск фрагментов строк, совпадающих с заданным шаблоном;
 замену строк и подстрок по шаблону;
 поиск строк, с которыми заданный шаблон не совпадает.
Появление Web породило необходимость в более быстрых и эффективных средствах поиска данных, которые бы
позволяли пользователям со всего мира находить нужную информацию среди миллиардов web-страниц. Поисковые
системы, онлайновые финансовые службы и сайты электронной коммерции — все это стало бы абсолютно бесполезным
без средств анализа гигантских объемов данных в этих секторах. Действительно, средства обработки строковой
информации являются жизненно важной составляющей практически любого сектора, так или иначе связанного с
современными информационными технологиями. В этой главе основное внимание посвящено средствам обработки строк
в РНР. Мы рассмотрим некоторые стандартные строковые функции (в языке их больше 60!), а из приведенных
определений и примеров вы получите сведения, необходимые для создания web-приложений. Но прежде чем переходить
к специфике РНР, я хочу познакомить вас с базовым механизмом, благодаря которому становится возможным поиск по
шаблону. Речь идет о регулярных выражениях.
Регулярные выражения
Регулярные выражения лежат в основе всех современных технологий поиска по шаблону. Регулярное выражение
представляет собой последовательность простых и служебных символов, описывающих искомый текст. Иногда
регулярные выражения бывают простыми и понятными (например, слово dog), но часто в них присутствуют служебные
символы, обладающие особым смыслом в синтаксисе регулярных выражений, — например, <(?)>.*<\/.?>.
В РНР существуют два семейства функций, каждое из которых относится к определенному типу регулярных
выражений: в стиле POSIX или в стиле Perl. Каждый тип регулярных выражений обладает собственным синтаксисом и
рассматривается в соответствующей части главы. На эту тему были написаны многочисленные учебники, которые можно
найти как в Web, так и в книжных магазинах. Поэтому я приведу лишь основные сведения о каждом типе, а дальнейшую
информацию при желании вы сможете найти самостоятельно. Если вы еще не знакомы с принципами работы регулярных

81
выражений, обязательно прочитайте краткий вводный курс, занимающий всю оставшуюся часть этого раздела. А если вы
хорошо разбираетесь в этой области, смело переходите к следующему разделу.
Синтаксис регулярных выражений (POSIX)
Структура регулярных выражений POSIX чем-то напоминает структуру типичных математических выражений —
различные элементы (операторы) объединяются друг с другом и образуют более сложные выражения. Однако именно
смысл объединения элементов делает регулярные выражения таким мощным и выразительным средством. Возможности
не ограничиваются поиском литерального текста (например, конкретного слова или числа); вы можете провести поиск
строк с разной семантикой, но похожим синтаксисом — например, всех тегов HTML в файле.
Простейшее регулярное выражение совпадает с одним литеральным символом — например, выражение g совпадает в
таких строках, как g, haggle и bag. Выражение, полученное при объединении нескольких литеральных символов,
совпадает по тем же правилам — например, последовательность gan совпадает в любой строке, содержащей эти символы
(например, gang, organize или Reagan).
Оператор | (вертикальная черта) проверяет совпадение одной из нескольких альтернатив. Например, регулярное
выражение php | zend проверяет строку на наличие php или zend.
Квадратные скобки
Квадратные скобки ([ ]) имеют особый смысл в контексте регулярных выражений — они означают «любой символ из
перечисленных в скобках». В отличие от регулярного выражения php, которое совпадает во всех строках, содержащих
литеральный текст php, выражение [php] совпадает в любой строке, содержащей символы р или h. Квадратные скобки
играют важную роль при работе с регулярными выражениями, поскольку в процессе поиска часто возникает задача
поиска символов из заданного интервала. Ниже перечислены некоторые часто используемые интервалы:
 [0-9] — совпадает с любой десятичной цифрой от 0 до 9;
 [a-z] — совпадает с любым символом нижнего регистра от а до z;
 [A-Z] — совпадает с любым символом верхнего регистра от А до Z;
 [a -Z] — совпадает с любым символом нижнего или верхнего регистра от а до Z.
Конечно, перечисленные выше интервалы всего лишь демонстрируют общий принцип. Например, вы можете
воспользоваться интервалом [0-3] для обозначения любой десятичной цифры от 0 до 3 или интервалом [b-v] для
обозначения любого символа нижнего регистра от b до v. Короче говоря, интервалы определяются совершенно
произвольно.
Квантификаторы
Существует особый класс служебных символов, обозначающих количество повторений отдельного символа или
конструкции, заключенной в квадратные скобки. Эти служебные символы (+, * и {...}) называются квантификаторами.
Принцип их действия проще всего пояснить на примерах:
 р+ означает один или несколько символов р, стоящих подряд;
 р* означает ноль и более символов р, стоящих подряд;
 р? означает ноль или один символ р;
 р{2} означает два символа р, стоящих подряд;
 р{2,3} означает от двух до трех символов р, стоящих подряд;
 р{2,} означает два и более символов р, стоящих подряд.
Прочие служебные символы
Служебные символы $ и ^ совпадают не с символами, а с определенными позициями в строке. Например, выражение
р$ означает строку, которая завершается символом р, а выражение ^р — строку, начинающуюся с символа р.
 Конструкция [^a-zA-Z] совпадает с любым символом, не входящим в указаные интервалы (a-z и A-Z).
 Служебный символ . (точка) означает «любой символ». Например, выражение р.р совпадает с символом р, за
которым следует произвольный символ, после чего опять следует символ р.
Объединение служебных символов приводит к появлению более сложных выражений. Рассмотрим несколько
примеров:
 ^.{2}$ — любая строка, содержащая ровно два символа;
 <b>(.*)</b> — произвольная последовательность символов, заключенная между <Ь> и </Ь> (вероятно, тегами
HTML для вывода жирного текста);
 p(hp)* — символ р, за которым следует ноль и более экземпляров последовательности hp (например, phphphp).
Иногда требуется найти служебные символы в строках вместо того, чтобы использовать их в описанном специальном
контексте. Для этого служебные символы экранируются обратной косой чертой (\). Например, для поиска денежной
суммы в долларах можно воспользоваться выражением \$[0-9]+, то есть «знак доллара, за которым следует одна или
несколько десятичных цифр». Обратите внимание на обратную косую черту перед $. Возможными совпадениями для
этого регулярного выражения являются $42, $560 и $3.
Стандартные интервальные выражения (символьные классы)
Для удобства программирования в стандарте POSIX были определены некоторые стандартные интервальные
выражения, также называемые символьными классами (character classes). Символьный класс определяет один символ из
заданного интервала — например, букву алфавита или цифру:
 [[:alpha:]] — алфавитный символ (aA-zZ);
 [[:digit:]]-цифра (0-9);
 [[:alnum:]] — алфавитный символ (aA-zZ) или цифра (0-9);
 [[:space:]] — пропуски (символы новой строки, табуляции и т. д.).
82
Функции РНР для работы с регулярными выражениями (POSIX-совместимые)
В настоящее время РНР поддерживает семь функций поиска с использованием регулярных выражений в стиле
POSIX:
 еrеg( );
 еrеg_rерlасе( );
 eregi( );
 eregi_replace( );
 split( );
 spliti( );
 sql_regcase( ).

ereg( )
Функция еrеg( ) ищет в заданной строке совпадение для шаблона. Если совпадение найдено, возвращается TRUE, в
противном случае возвращается FALSE. Синтаксис функции ereg( ):
ereg_replace( )
Функция ereg_replace( ) ищет в заданной строке совпадение для шаблона и заменяет его новым фрагментом.
Синтаксис функции ereg_replace( ):
string ereg_replace (string шаблон, string замена, string строке)
Функция ereg_replace( ) работает по тому же принципу, что и ereg( ), но ее возможности расширены от простого
поиска до поиска с заменой. После выполнения замены функция возвращает модифицированную строку. Если
совпадения
отсутствуют, строка остается в прежнем состоянии. Функция ereg_replace( ), как и еrеg( ), учитывает регистр
символов.
eregi( )
Функция eregi( ) ищет в заданной строке совпадение для шаблона. Синтаксис функции eregi( ):
int eregi (string шаблон, string строка [, array совпадения])
Поиск производится без учета регистра алфавитных символов. Функция eregi( ) особенно удобна при проверке
правильности введенных строк (например, паролей).
eregi_replace( )
Функция eregi_replасе( ) работает точно так же, как ereg_replace( ), за одним исключением: поиск производится без
учета регистра символов. Синтаксис функции ereg_replace( ):
string eregi_replace (string шаблон, string замена, string строка)
split( )
Функция split( ) разбивает строку на элементы, границы которых определяются по заданному шаблону. Синтаксис
функции split( ):
array split (string шаблон, string строка [, int порог])
Необязательный параметр порог определяет максимальное количество элементов, на которые делится строка слева
направо. Если шаблон содержит алфавитные символы, функция spl it( ) работает с учетом регистра символов.
spliti( )
Функция spliti( ) работает точно так же, как ее прототип split( ), за одним исключением: она не учитывает регистра
символов. Синтаксис функции spliti( ):
array spliti (string шаблон, string строка [, int порог])
Разумеется, регистр символов важен лишь в том случае, если шаблон содержит алфавитные символы. Для других
символов выполнение spliti( ) полностью аналогично split( ).
sql_regcase( )
Вспомогательная функция sql_regcase( ) заключает каждый символ входной строки в квадратные скобки и добавляет к
нему парный символ. Синтаксис функции sql_regcase( ):
string sql_regcase (string строка)
Если алфавитный символ существует в двух вариантах (верхний и нижний регистры), выражение в квадратных
скобках будет содержать оба варианта; в противном случае исходный символ повторяется дважды. Функция sql_regcase(
) особенно удобна при использовании РНР с программными пакетами, поддерживающими регулярные выражения в
одном регистре.
19. Протокол HTTP: способы передачи данных на сервер.
Internet построен по многоуровневому принципу, от физического уровня, связанного с физическими аспектами
передачи двоичной информации, и до прикладного уровня, обеспечивающего интерфейс между пользователем и сетью.
HTTP (HyperText Transfer Protocol, протокол передачи гипертекста) – это протокол прикладного уровня,
разработанный для обмена гипертекстовой информацией в Internet.
HTTP предоставляет набор методов для указания целей запроса, отправляемого серверу. Эти методы основаны на
дисциплине ссылок, где для указания ресурса, к которому должен быть применен данный метод, используется
универсальный идентификатор ресурсов (Universal Resource Identifier) в виде местонахождения ресурса (Universal
Resource Locator, URL) или в виде его универсального имени (Universal Resource Name, URN).
Сообщения по сети при использовании протокола HTTP передаются в формате, схожем с форматом почтового
сообщения Internet (RFC-822) или с форматом сообщений MIME (Multiperposal Internet Mail Exchange).

83
HTTP используется для коммуникаций между различными пользовательскими программами и программами-
шлюзами, предоставляющими доступ к существующим Internet-протоколам, таким как SMTP (протокол электронной
почты), NNTP (протокол передачи новостей), FTP (протокол передачи файлов), Gopher и WAIS. HTTP разработан для
того, чтобы позволять таким шлюзам через промежуточные программы-серверы (proxy) передавать данные без потерь.
Протокол реализует принцип запрос/ответ. Запрашивающая программа – клиент инициирует взаимодействие с
отвечающей программой – сервером и посылает запрос, содержащий:
метод доступа;
адрес URI;
версию протокола;
сообщение (похожее по форме на MIME) с информацией о типе передаваемых данных, информацией о клиенте,
пославшем запрос, и, возможно, с содержательной частью (телом) сообщения.
Ответ сервера содержит:
строку состояния, в которую входит версия протокола и код возврата (успех или ошибка);
сообщение (в форме, похожей на MIME), в которое входит информация сервера, метаинформация (т.е. информация о
содержании сообщения) и тело сообщения.
В протоколе не указывается, кто должен открывать и закрывать соединение между клиентом и сервером. На практике
соединение, как правило, открывает клиент, а сервер после отправки ответа инициирует его разрыв.
Давайте рассмотрим более подробно, в какой форме отправляются запросы на сервер.
Форма запроса клиента
Клиент отсылает серверу запрос в одной из двух форм: в полной или сокращенной. Запрос в первой форме называется
соответственно полным запросом, а во второй форме – простым запросом.
Простой запрос содержит метод доступа и адрес ресурса. Формально это можно записать так:
<Простой-Запрос> := <Метод> <символ пробел>
<Запрашиваемый-URI> <символ новой строки>
В качестве метода могут быть указаны GET, POST, HEAD, PUT, DELETE и другие. О наиболее распространенных из
них мы поговорим немного позже. В качестве запрашиваемого URI чаще всего используется URL-адрес ресурса.
Пример простого запроса:
GET http://phpbook.info/
Здесь GET – это метод доступа, т.е. метод, который должен быть применен к запрашиваемому ресурсу, а
http://phpbook.info/ – это URL-адрес запрашиваемого ресурса.
Полный запрос содержит строку состояния, несколько заголовков (заголовок запроса, общий заголовок или заголовок
содержания) и, возможно, тело запроса. Формально общий вид полного запроса можно записать так:
<Полный запрос> := <Строка Состояния>
(<Общий заголовок>|<Заголовок запроса>|
<Заголовок содержания>)
<символ новой строки>
[<содержание запроса>]
Квадратные скобки здесь обозначают необязательные элементы заголовка, через вертикальную черту перечислены
альтернативные варианты. Элемент <Строка состояния> содержит метод запроса и URI ресурса (как и простой запрос) и,
кроме того, используемую версию протокола HTTP. Например, для вызова внешней программы можно задействовать
следующую строку состояния:
POST http://phpbook.info/cgi-bin/test HTTP/1.0
В данном случае используется метод POST и протокол HTTP версии 1.0.
В обеих формах запроса важное место занимает URI запрашиваемого ресурса. Чаще всего URI используется в виде
URL-адреса ресурса. При обращении к серверу можно применять как полную форму URL, так и упрощенную.
Полная форма содержит тип протокола доступа, адрес сервера ресурса и адрес ресурса на сервере
В сокращенной форме опускают протокол и адрес сервера, указывая только местоположение ресурса от корня
сервера. Полную форму используют, если возможна пересылка запроса другому серверу. Если же работа происходит
только с одним сервером, то чаще применяют сокращенную форму.
20. Взаимодействие PHP и СУБД, совместимой с ODBC.
Доступ ODBC
PHP обеспечивает поддержку ODBC (Open DataBase Connectivity), что позволяет обращаться к любой совместимой с
ODBC системе управления базами данных (СУБД), если в системе или сети доступно Имя источника данных (DSN —
Data Source Name) или доступна строка соединения без DSN. Это включает доступ к таким реляционным базам данных,
как Oracle, DB2, MS SQL Server, MySQL, и MS Access. Так как PHP включает функции доступа к базам данных MySQL
без DSN, которые не требуют ODBC, в этом разделе для демонстрации методов ODBC будет применяться MS Access.
Примеры можно использовать также с другими СУБД, совместимыми с ODBC.
Соединения ODBC с помощью DSN
Чтобы соединиться с базой данных, используя ODBC, сначала необходимо создать системное имя источника данных.
Вот как создается соединение ODBC с базой данных MS Access
1. Откройте в Панели управления значок Администрирование.
2. Сделайте в раскрывшемся окне двойной щелчок на значке Источники данных (ODBC).
3. Выберите вкладку Системный DSN.
4. На вкладке Системный DNS щелкните на кнопке Добавить.
84
5. Выберите Microsoft Access Driver. Щелкните на кнопке Готово.
6. В следующем окне щелкните на кнопке Выбрать, чтобы найти базу данных.
7. Задайте для базы данных Имя источника данных (DSN).
8. Щелкните на кнопке OK.
Конфигурация DSN должна задаваться на компьютере, на котором размещен сайт Web. Если сайт располагается на
удаленном сервере, необходимо задать конфигурацию на этом сервере.
После установления соединения ODBC можно использовать специальные функции PHP для соединения с базой
данных и извлечения записей. Эти функции PHP описаны ниже.
Соединения ODBC без DSN
Соединения без DSN не требуют создания DSN системного уровня для соединения с базами данных и предоставляет
некоторую альтернативу DSN.
В Microsoft Access для создания соединений без DSN используется следующая строка соединения:
Driver={Microsoft Access Driver (*.mdb)}; DBQ=c:\path\to\database.mdb
odbc_connect(dsn/строка соединения без dsn,имя_пользователя,пароль) – функция, используемая для соединения с
источником данных ODBC. Функция получает четыре параметра: имя источника данных (dsn) или строку соединения без
dsn, имя пользователя, пароль и необязательный тип курсора. В тех случаях, когда имя пользователя, пароль, и тип
курсора не требуются, параметры можно заменить пустой строкой — ''. id соединения, возвращаемый этой функцией,
требуется другим функциям ODBC. Можно иметь одновременно открытыми несколько соединений, если они либо
имеют различные id, либо используют различные имя пользователя и пароль.
odbc_exec(id_соединения, строка_запроса SQL) – функция, используемая для выполнения оператора SQL. Функция
получает два параметра: объект соединения id, созданный функцией odbc_connect(), и оператор SQL. При возникновении
ошибки возвращает FALSE. Возвращает множество записей, если команда SQL выполняется успешно.
odbc_fetch_array(имя множества записей) – используется для извлечения записей или строк из множества записей как
ассоциативного массива. Имя множества записей создается при вызове функции odbc_exec(). Эта функция возвращает
TRUE, если может вернуть строки, иначе — FALSE.
odbc_num_rows(имя множества записей) – возвращает число строк в множестве результатов ODBC. Функция
возвращает -1, если возникает ошибка. Для операторов INSERT, UPDATE и DELETE функция odbc_num_rows()
возвращает число затронутых строк. Для предложения SELECT это может быть число доступных строк. Примечание:
использование odbc_num_rows() для определения числа доступных строк после оператора SELECT возвращает -1 для
драйверов MS Access.
odbc_close(id соединения) – закрывает соединение с сервером базы данных, связанное с данным идентификатором
соединения.
Добавление записей
Вместе с языком SQL можно добавлять записи в таблицы базы данных. Записи добавляют в таблицу базы данных с
помощью формы, представляющей поля ввода данных. Затем с помощью кнопки вызывается сценарий PHP для записи
новой информации в таблицу с помощью команды SQL INSERT.
Синтаксис оператора SQL INSERT:
INSERT INTO TableName (FieldName1 [,FieldName2]...) VALUES (Value1 [,Value2]...)
Выбор записей
Можно также извлекать записи из таблицы базы данных с помощью оператора SQL SELECT.
Оператор SQL SELECT показан ниже:
SELECT * | [DISTINCT] field1 [,field2]... FROM TableName WHERE criteria
ORDER BY FieldName1 [ASC|DESC] [,FieldName2 [ASC|DESC] ]...
Удаление записей
Оператор SQL DELETE используется для удаления существующих в базе данных записей.
Синтаксис оператора SQL DELETE показан ниже:
DELETE FROM Имя_таблицы WHERE критерий
Изменение записей
Оператор SQL UPDATE используется для изменения или обновления существующих записей базы данных.
Синтаксис оператора SQL UPDATE показан ниже:
UPDATE ИмяТаблицы SET (FieldName1=value1 [,FieldName2=value2]...)
WHERE критерий
В дистрибутив PHP входит расширение, содержащее встроенные функции для работы с базой данных MySQL.
Построение интерфейса для добавления информации
 установка соединения с БД;
 выбор рабочей БД;
 получение списка полей таблицы;
 отображение полей в html-форму.
После этого данные, введенные в форму, нужно записать в базу данных. Рассмотрим все эти задачи по порядку.
Установка соединения
Итак, первое, что нужно сделать, - это установить соединение с базой данных. Воспользуемся функцией
mysql_connect.

85
Синтаксис mysql_connect
ресурс mysql_connect ( [строка server
[, строка username [, строка password
[, логическое new_link
[, целое client_flags]]]]])
Данная функция устанавливает соединение с сервером MySQL и возвращает указатель на это соединение или FALSE
в случае неудачи. Для отсутствующих параметров устанавливаются следующие значения по умолчанию:
Итак, устанавливаем соединение с базой данных на локальном сервере для пользователя nina с паролем "123":
<?
$conn = mysql_connect(
"localhost", "nina","123")
or die("Невозможно установить
соединение: ". mysql_error());
echo "Соединение установлено";
mysql_close($conn);
?>
Выбор базы данных
После установки соединения нужно выбрать базу данных, с которой будем работать. Наши данные хранятся в
базе данных book. В MySQL выбор базы данных осуществляется с помощью команды use:
mysql>use book;
В PHP для этого существует функция mysql_select_db.
Синтаксис mysql_select_db:
логическое mysql_select_db (
строка database_name
[, ресурс link_identifier])
Эта функция возвращает TRUE в случае успешного выбора базы данных и FALSE - в противном случае.
Сделаем базу данных book рабочей:
<?
$conn = mysql_connect(
"localhost","nina","123")
or die("Невозможно установить
соединение: ". mysql_error());
echo "Соединение установлено";
mysql_select_db("book");
?>
Получение списка полей таблицы
Теперь можно заняться собственно решением задачи. Как получить список полей таблицы? Очень просто. В PHP и на
этот случай есть своя команда - mysql_list_fields.
Синтаксис mysql_list_fields
ресурс mysql_list_fields (
строка database_name,
строка table_name
[, ресурс link_identifier])
Эта функция возвращает список полей в таблице table_name в базе данных database_name.

Функция mysql_field_name возвращает имя поля, полученного в результате выполнения запроса. Функция
mysql_field_len возвращает длину поля.
Функция mysql_field_type возвращает тип поля,
Функция mysql_field_flags возвращает список флагов поля, записанных через пробел.
Типы поля могут быть int, real, string, blob и т.д. Флаги могут быть not_null, primary_key, unique_key, blob,
auto_increment и т.д.
Синтаксис у всех этих команд одинаков:
строка mysql_field_name (
ресурс result, целое field_offset)
строка mysql_field_type (
ресурс result, целое field_offset)
строка mysql_field_flags (
ресурс result, целое field_offset)
строка mysql_field_len (
ресурс result, целое field_offset)
Здесь result - это идентификатор результата запроса, а field_offset - порядковый номер поля в результате.
Отображение списка полей в html-форму
86
Теперь немножко подкорректируем предыдущий пример. Будем не просто выводить информацию о поле, а
отображать его в подходящий элемент html-формы. Так, элементы типа BLOB переведем в textarea (заметим, что поле
description, которое мы создавали с типом TEXT, отображается как имеющее тип BLOB), числа и строки отобразим в
текстовые строки ввода <input type=text>, а элемент, имеющий метку автоинкремента, вообще не будем отображать,
поскольку его значение устанавливается автоматически.
Все это решается довольно просто, за исключением выделения из списка флагов флага auto_increment. Для этого
нужно воспользоваться функцией explode.
Синтаксис explode:
массив explode( строка separator,
строка string [, int limit])
Эта функция разбивает строку string на части с помощью разделителя separator и возвращает массив полученных
строк.
В нашем случае в качестве разделителя нужно взять пробел " ", а в качестве исходной строки для разбиения - строку
флагов поля.
Итак, создадим форму для ввода данных в таблицу Artifacts:
Запись данных в базу данных
Итак, форма создана. Теперь нужно сделать самое главное - отправить данные из этой формы в нашу базу данных.
Как вы уже знаете, для того чтобы записать данные в таблицу, используется команда INSERT языка SQL. Например:
mysql> INSERT INTO Artifacts
SET title='Петров';
Возникает вопрос, как можно воспользоваться такой командой (или любой другой командой SQL) в PHP скрипте. Для
этого существует функция mysql_query().
Синтаксис mysql_query
ресурс mysql_query ( строка query
[, ресурс link_identifier])
mysql_query() посылает SQL-запрос активной базе данных MySQL сервера, который определяется с помощью
указателя link_identifier (это ссылка на какое-то соединение с сервером MySQL). Если параметр link_identifier опущен,
используется последнее открытое соединение. Если открытые соединения отсутствуют, функция пытается соединиться с
СУБД, аналогично функции mysql_connect() без параметров. Результат запроса буферизируется.
Замечание: строка запроса НЕ должна заканчиваться точкой с запятой.
Только для запросов SELECT, SHOW, EXPLAIN, DESCRIBE, mysql_query() возвращает указатель на результат
запроса, или FALSE, если запрос не был выполнен. В остальных случаях mysql_query() возвращает TRUE, если запрос
выполнен успешно, и FALSE - в случае ошибки. Значение, не равное FALSE, говорит о том, что запрос был выполнен
успешно.
Отображение данных, хранящихся в MySQL
Чтобы отобразить какие-то данные в браузер с помощью PHP, нужно сначала получить эти данные в виде
переменных PHP. При работе с MySQL без посредника (такого, как PHP) выборка данных производится с помощью
команды SELECT языка SQL:
mysql> SELECT * FROM Artifacts;
Синтаксис mysql_result
смешанное mysql_result (ресурс result,
целое row [, смешанное field])
mysql_result() возвращает значение одной ячейки результата запроса. Аргумент field может быть порядковым
номером поля в результате, именем поля или именем поля с именем таблицы через точку tablename.fieldname. Если для
имени поля в запросе применялся алиас ('select foo as bar from...'), используйте его вместо реального имени поля.
Работая с большими результатами запросов, следует задействовать одну из функций, обрабатывающих сразу целый
ряд результата (например, mysql_fetch_row(), mysql_fetch_array() и т.д.). Так как эти функции возвращают
значение нескольких ячеек сразу, они НАМНОГО быстрее mysql_result(). Кроме того, нужно учесть, что указание
численного смещения (н