Нужно измерить расстояние между двумя точками на экране компьютера? Надо знать точное местоположение и размеры элементов на веб-странице? Необходимо измерить растояние в точках или миллиметрах, как по горизонтали и по вертикали?
Экранная линейка позволяет точно мерить любой элемент на экране вашего компьютера, применима в тех случаях когда вам нужно определить ширину или высота любого объекта на экране.
Основные возможности
Мера в пикселях,
Мера в миллиметрах,
Настраиваемость прозрачности,
Память последнего состояния,
и многое другое.
Эта книга является полным справочником, в котором содержится самая последняя информация об атаках в Web и защите от них. Эксперты в области обеспечения безопасности Стюарт Мак-Клар (ведущий автор серии книг "Секреты хакеров"), а также Саумил Шах и Шрирай Шах предлагают описание большого количества атак и способов защиты. К рассматриваемым в книге технологиям относятся языки для создания Web-приложений, протоколы, серверы баз данных и Web-серверы, а также подсистемы обработки платежей и выбора товаров. Кроме того, здесь обсуждаются серьезные изъяны, связанные с адресами URL. Авторы книги показывают, как провести линию между отдельными точками, т.е. как соединить отдельные этапы атак вместе, реализовав таким образом оптимальную защиту против них. Удачно изложенный материал и последовательное описание проверенных методов анализа помогут защититься от потенциальной угрозы нарушения безопасности и атак взломщиков. Как начинающие, так и опытные читатели смогут лучше понять природу атак в Web и получат новые знания в области защиты от подобных атак.
Поиск по шаблону является настолько обычным занятием в разработке программного обеспечения, что для облегчения этой задачи была создана специальная технология — регулярные выражения. Узнайте, как можно использовать ее при написании кода, прочитав эту статью.
Все устройства получают входную информацию, выполняют какие-либо операции и выдают результат. Например, телефон во время разговора преобразует звуковую энергию в электрический сигнал и обратно. Двигатель потребляет топливо (пар, расщепление атомных ядер, бензин, мышечные усилия) и преобразует его в энергию. Блендер поглощает ром, лед, лайм и кюрасао и взбалтывает их в коктейль Mai Tai. (Или, если вам хочется чего-то изысканного, сделайте Bellini из шампанского и грушевого сока. Блендер – замечательное универсальное устройство.)
Так как программное обеспечение преобразует данные, то каждое приложение фактически является устройством (хоть и виртуальным, так как у него нет физических составляющих). Например, компилятор в качестве входной информации получает исходную программу и преобразует ее в двоичный исполняемый код. Программа прогнозирования погоды генерирует предсказания на основе результатов прошлых (исторических) замеров, а графический редактор обрабатывает пикселы, применяя правила к отдельным пикселам или их группам, чтобы, например, сделать изображение более четким или изменить его стиль.
Так же, как и любое другое устройство, программное обеспечение предназначено для работы с определенным исходным материалом, например, набором чисел, данными XML-схемы или протоколом. Если программе задать некорректную входную информацию — неподходящую по форме или типу, то существует большая вероятность того, что результат будет непредсказуемым и, возможно, даже катастрофическим. Как говорится: "Мусор заложишь - мусор получишь".
На самом деле для решения всех нетривиальных задач необходимо отделять правильные данные от некорректных и отклонять некорректные данные во избежание ошибок в результатах. Это, конечно же, актуально и для Web-приложений, написанных на языке PHP. Неважно, получены ли входные данные из формы для ввода с клавиатуры или в результате выполнения программного запроса Asynchronous JavaScript + XML (Ajax), прежде чем начать какие-либо вычисления, программа должна проверить входную информацию. Возможно, что числовые значения должны находиться в пределах определенного диапазона чисел или представлять собой только целые числа. Возможно, значение должно соответствовать определенному формату, например, почтового индекса. Например, почтовый индекс в США представляет собой пять цифр плюс дополнительный префикс "Plus 4", состоящий из дефиса и 4 дополнительных цифр. Возможно, другие строки также должны состоять из определенного количества символов, например, две буквы для указания аббревиатуры штата США. Строковые данные доставляют особенно много проблем: PHP-приложение должно быть начеку по отношению к злонамеренным программам-агентам, вложенным в SQL-запросы, код JavaScript или любой другой код, которые способны изменить поведение приложения или обойти защиту.
Однако каким образом программа может определить, являются ли входные данные числом или соответствуют ли определенным требованиям, например, к почтовому индексу? На самом деле для реализации проверки путем сопоставления с шаблоном необходим небольшой парсер, создающий конечный автомат, считывающий входные данные, обрабатывающий маркеры, отслеживающий состояние и выдающий результаты. Однако создание и обслуживание даже самого простого парсера может оказаться непростым делом.
К счастью, анализ на основе сопоставления с шаблоном настолько широко распространен в компьютерных технологиях, что с течением времени (примерно с момента появления UNIX®) были разработаны специальные технологии и, конечно же, механизмы обработки, чтобы облегчить рутинную работу. Регулярное выражение (regex) описывает шаблоны посредством лаконичных и удобочитаемых обозначений. Получив регулярное выражение и данные, механизм regex сообщает, совпадают ли эти данные с шаблоном, и если совпадение было обнаружено, что именно совпало.
Вот небольшой пример использования регулярного выражения, взятый из UNIX-утилиты, работающей в режиме командной строки, которая ищет заданный шаблон в содержимом одного или нескольких текстовых файлов UNIX. Команда grep -i -E '^Bat' ищет последовательность символов beginning-of-line (начало строки), обозначаемое "крышкой", [^]), за которым следуют буквы b, a, и t верхнего или нижнего регистра (ключ -i указывает на то, что при сопоставлении с шаблоном регистр не учитывается, таким образом, например, B и b - тождественны). Следовательно, для файла heroes.txt:
Листинг 1. heroes.txt
Вышеупомянутая команда grep выдаст два совпадения:
Batman
Batgirl
Регулярные выражения
PHP предлагает два программных интерфейса регулярных выражений: один -- для интерфейса переносимых операционных систем (POSIX), а второй - для регулярных выражений, совместимых с языком Perl (PCRE). В общем и целом второй интерфейс является более предпочтительным, так как PCRE сам по себе мощнее, чем POSIX, и предоставляет все операторы, используемые в языке Perl. Более подробная информация по обращению к regex-функциям POSIX представлена в документации по языку PHP (см. раздел Ресурсы). В данной статье мы сосредоточим свое внимание на свойствах PCRE.
Регулярные выражения PHP PCRE содержат операторы, позволяющие путем сопоставления находить конкретные символы или другие операторы, определенные местоположения, например, начало и конец строки, начало или конец слова. Регулярные выражения также позволяют описывать альтернативы, которые можно задать альтернативы типа "или"-"или"; повторения фиксированной, изменяемой или неопределенной длины; наборы символов (например, "любая буква от a до m"); и классы, или типы символов (печатаемые символы, знаки препинания). Специальные операторы также разрешают использовать группировку — возможность применить оператор к целой группе других операторов.
В таблице 1 показаны некоторые типичные операторы регулярных выражений. Для создания сложных выражений можно последовательно объединять элементарные операторы из таблицы 1 (и другие).
Таблица 1. Типичные операторы регулярных выражений
Оператор Значение
. (точка) Любой одиночный символ
^ (крышка) Пустая последовательность в начале строки или цепочки
$ (знак доллара) Пустая последовательность в конце строки
A Буква A верхнего регистра
a Буква a нижнего регистра
\d Любая цифра
\D Любой нецифровой символ
\w Любая буква или цифра; синоним - [:alnum:]
[A-E] Любая заглавная буква из A, B, C, D или E
[^A-E] Любой символ, за исключением заглавных букв A, B, C, D или E
X? Найти совпадение по отсутствию или наличию одной заглавной буквы X
X* Ни одной или любое количество заглавных букв X
X+ Одна или несколько заглавных букв X
X{n} Ровно n заглавных букв X
X{n,m} Не менее n и не более m заглавных букв X; если опустить m, то выражение будет искать не менее n заглавных букв X
(abc|def)+ По меньшей мере одно вхождение последовательности abc и def
В следующем примере показано типичное использование регулярного выражения. Например, для web-сайта необходимо, чтобы каждый пользователь регистрировался. Имя пользователя должно начинаться с буквы и содержать от 3 до 10 буквенно-цифровых символов. Для проверки имени пользователя на соответствие ограничениям при отправке данных в приложение можно использовать следующее регулярное выражение: ^[A-Za-z][A-Za-z0-9_]{2,9}$.
Знак "крышка" соответствует началу строки. Первый набор [A-Za-z] соответствует любой букве. Второй набор [A-Za-z0-9_]{2,9} соответствует последовательности, содержащей от 2 до 9 букв, цифр или символов подчеркивания. Знак доллара ($) соответствует концу строки.
На первый взгляд, знак доллара может показаться лишним, однако его использование важно. Если его пропустить, то условиям данного регулярного выражения будет отвечать любая строка, которая начинается с буквы, содержит от 2 до 9 буквенно-цифровых символов и любое количество других символов. Иными словами, если бы не было знака доллара как привязки к концу строки, то подошла бы недопустимо длинная строка с подходящим началом, например, "martin1234-cruft" .
Программирование на языке PHP и регулярные выражения
В PHP есть функции для поиска совпадений в тексте, замены каждого совпадения на другой текст (похоже на операцию "найти и заменить") и поиска совпадений среди элементов списка. Вот эти функции:
Чтобы показать, как работают эти функции, давайте создадим небольшое PHP-приложение, которое будет просматривать список слов на соответствие определенному шаблону. Слова и регулярные выражения будут вводиться из обычной web-формы, а результаты отображаться в браузере посредством функции simple print_r(). Эта программка пригодится, если возникнет желание проверить или отладить регулярное выражение.
PHP-код показан в листинге 2. Все входные данные берутся из обычной HTML-формы. (Для краткости эту форму и PHP-код, отслеживающий ошибки, опустим.)
Листинг 2. Сравнение текста с шаблоном
Вначале с помощью функции preg_split() строка из слов, разделенных запятыми, преобразуется в отдельные элементы. Данная функция разбивает строку в тех местах, которые соответствуют условиям регулярного выражения. В данном случае регулярное выражение представляет собой просто "," , (запятая - разделитель списка слов, указанных через запятую). Слэш в начале и в конце просто показывает начало и конец regex.
Третий и четвертый аргументы функции preg_split() необязательны, но полезны. Добавьте в третий аргумент число n целого типа, если необходимо вернуть только первые n совпадений, или -1, если необходимо вернуть все совпадения. Если в качестве четвертого аргумента задать идентификатор PREG_SPLIT_NO_EMPTY, то функция preg_split() не будет возвращать пустые результаты.
Затем каждый элемент списка слов, разделенных запятыми, корректируется (убираются начальные и конечные пробелы) с помощью функции trim() и сравнивается с заданным регулярным выражением. Функция preg_grep() существенно упрощает процесс обработки списка: просто укажите в качестве первого аргумента шаблон, а в качестве второго - массив слов для сравнения. Функция возвращает массив совпадений.
Например, если в качестве шаблона задать регулярное выражение ^[A-Za-z][A-Za-z0-9_]{2,9}$ и список слов разной длины, то можно получить результат, показанный в листинге 3.
Листинг 3. Результат работы простого регулярного выражения
Кстати, с помощью дополнительного маркера PREG_GREP_INVERT можно инвертировать операцию preg_grep() и найти элементы, которые не совпадают с шаблоном (аналогично оператору grep -v в командной строке). Заменяя 22 строку на $matches = preg_grep( "/${_REQUEST[ 'regex' ]}/", $words, PREG_GREP_INVERT ) и используя входные данные из листинга 3, мы получим Array ( [1] => 1happy [2] => hermanmunster ).
Разбор строк
Функции preg_split() и preg_grep() очень удобны. Первая из них может разбирать строку на подстроки, если подстроки разделяются определенным шаблоном. Функция preg_grep() позволяет быстро отфильтровать список.
Но что произойдет, если строку нужно разобрать на составные части, используя одно или несколько сложных правил? Например, в США номера телефонов обычно выглядят следующим образом: "(305) 555-1212," "305-555-1212," или "305.555.1212." Если убрать пунктуацию, то количество символов сократится до 10 цифр, что легко можно определить с помощью регулярного выражения \d{10}. Однако код и префикс (каждый из которых состоит из трех цифр) телефонного номера США не могут начинаться с нуля или единицы (так как нуль и единица используются как префиксы для междугородных звонков). Вместо того чтобы разбивать числовую последовательность на отдельные цифры и создавать сложный код, для верификации можно использовать регулярное выражение.
Фрагмент кода позволяющий решить эту задачу, показан в листинге 4.
Листинг 4. Проверка американского телефонного номера
Давайте пройдем по этому коду:
* Как показано в таблице 1, в регулярных выражениях используется ограниченный набор специальных символов, например, квадратные скобки ([ ]) для наименования последовательности. Если надо найти такой символ в тексте, необходимо "выделить" специальный символ в регулярном выражении, поставив перед ним обратный слэш (\). Когда символ выделен, можно задать его посик, как и любого другого символа. Если нужно найти символ точки, например, в полном составном имени хоста, то напишите \.. При желании строку можно подать в функцию preg_quote() которая выполняет автоматическую изоляцию всех специальных символов регулярных выражений, как показано в строке 1. Если поставить echo() $punctuation после первой строки, то вы должны увидеть \(\)\.-.
* В строке 2 из телефонного номера убираются все знаки пунктуации. Функция preg_replace() заменяет все символы из $punctuation — операторы из набора [ ] - пустой строкой, эффективно устраняя такие символы. Возвращаемая новая строка присваивается переменной $number.
* В строке 4 определен шаблон верифицируемого телефонного номера США.
* Строка 5 реализует сопоставление, сравнивая телефонный номер, который теперь состоит только из цифр, с шаблоном. Функция preg_match() возвращает 1, если есть совпадение. Если совпадения нет, функция preg_match() возвращает нулевое значение. Если во время обработки возникла ошибка, то функция возвращает значение False (ложно). Таким образом, чтобы проверить удачное завершение, необходимо посмотреть, было ли возвращено значение 1. В противном случае проверьте итоговое значение функции preg_last_error() (если используется PHP версии 5.2.0 или выше). Если оно не равно нулю, то, возможно, был превышен лимит вычислений, например, разрешенная глубина рекурсии регулярного выражения. Обсуждение констант и ограничений, применяемых в регулярных выражениях PHP, представлено на странице, посвященной функциям регулярных выражений PCRE (см. раздел Ресурсы).
Извлечение данных
Во многих случаях необходимо только получить ответ на вопрос: "Соответствуют ли данные шаблону?" – например, при проверке данных. Однако чаще регулярные выражения используются для подтверждения соответствия и получения информации о совпадении.
Вернемся к примеру с телефонным номером. Пусть при соответствии шаблону нам необходимо сохранить код, префикс и номер линии в отдельных полях базы данных. Регулярные выражения могут запоминать совпадающие с шаблоном данные с помощью оператора capture. Оператор capture обозначается круглыми скобками и может использоваться в любой части регулярного выражения. Операции capture можно делать вложенными для поиска подсегментов в извлеченных сегментах данных. Например, чтобы из 10-значного номера телефона извлечь код города, префикс и номер линии, можно использовать следующую строку:
/([2-9][0-9]{2})([2-9][0-9]{2})([0-9]{4})/
Если входные данные соответствуют шаблону, первые три цифры захватываются первой парой круглых скобок, следующие три цифры - второй парой, а последние 4 цифры - последним оператором. Модификация вызова функции preg_match() возвращает извлеченные данные.
Листинг 5. Возврат извлеченных данных функцией preg_match()
Если в качестве третьего аргумента функции preg_match() указать переменную, например, в нашем коде, $matches, то в качестве ее значения будет выступать список извлеченных результатов. Нулевой элемент списка (с индексом 0) - это все совпадение целиком; первый элемент - совпадение, относящееся к первой паре круглых скобок, и так далее.
Вложенные операторы capture извлекают сегменты и подсегменты фактически любой глубины. Сложность с вложенными операторами capture состоит в том, чтобы определить, в какой части массива соответствий находится каждое соответствие, например, $matches. Действует следующее правило: подсчитайте порядковый номер открывающей скобки в регулярном выражении — этот номер и будет индексом нужного совпадения в массиве соответствий.
В листинге 6 показан пример (немного надуманный) извлечения частей городского адреса.
Листинг 6. Код для извлечения городского адреса
Опять все совпадение целиком хранится по индексу 0. А где хранится номер улицы? Если считать слева направо, номер улицы проверяется \d+. Это вторая открывающая круглая скобка слева, следовательно, значением $matches[2] будет 123. В $matches[4] оказывается название города, а в $matches[6] - почтовый индекс.
Продвинутые технологии
Обработка текста – широко распространенная задача, и PHP предоставляет ряд функций, упрощающих выполнение большого числа операций. Обратите внимание на следующее:
* Функция preg_replace() может работать как с одной строкой, так и с массивом строк. Если вызвать preg_replace() для массива строк, замена будет выполнена во всех элементах массива. В этом случае код preg_replace() возвращает массив измененных строк.
* Как и во всех остальных реализациях PCRE, здесь для осуществления замены можно прибегать к сравнению с вложенным шаблоном. Для наглядности давайте рассмотрим проблему стандартизации формата телефонного номера. Заменим все знаки пунктуации точками. Наше решение показано в листинге 7.
Листинг 7. Замена знаков пунктуации точками
Сопоставление с шаблоном и, в случае совпадения, перевод в стандартный телефонный номер выполняется за один шаг.
Мне нужно записать серию чисел в файл Paradox в blob-поле. Числа получаются из значений компонент, размещенных на форме. Затем мне нужно будет считывать числа из blob-поля и устанавливать согласно им значения компонент. Как мне сделать это?
Вы можете начать свое исследование со следующего модуля:
Как мне в таблице Paradox скопировать массив целочисленных чисел в TBlobField и наоборот? Элементы массива являются точками графика данных, который я хочу выводить, если запись доступна.
Запишите массив в поток памяти и затем используйте метод TBlob LoadFromStream. Для извлечения данных используйте метод TBlob SaveToStream (сохранение и извлечение массива из потока памяти).
Доступность оборудования и простота организации делают беспроводные локальные сети всё более популярными. Даже небольшие компании стараются идти в ногу со временем и избавляются от традиционных кабельных "локалок". Использование беспроводных сетей не ограничивается небольшими офисами и домашними системами - крупные же фирмы применяют Wi-Fi для подключения к корпоративным сетевым ресурсам в тех местах, где технически невозможна прокладка кабелей.
Однако решение об устройстве беспроводной сети далеко не всегда оправданно, тем более что во многих случаях безопасности таких сетей уделяется слишком мало внимания. По оценкам специалистов, почти 70 процентов удачных хакерских атак через беспроводные сети связаны с неправильной настройкой точек доступа и клиентского программного обеспечения, а также с установкой чересчур низкого уровня безопасности при слишком сильном сигнале, с лёгкостью "пробивающего" стены офиса.
По каким-то необъяснимым причинам организаторы беспроводных сетей нередко считают, что при их включении автоматически обеспечивается надлежащий уровень безопасности. Производители оборудования, в свою очередь, устанавливают низкие настройки безопасности "по умолчанию", либо вовсе отключают их, чтобы при развёртывании сети клиенты случайно не столкнулись с невозможностью доступа. При минимальных настройках безопасность оборудование лучше всего совместимо с самым широким спектром других устройств и практически с любым современным программным обеспечением. Поэтому после настройки и проверки сети на совместимость с существующей инфраструктурой системный администратор должен изменить настройки безопасности, для того чтобы предотвратить несанкционированное проникновение в корпоративную сеть.
В отличие от проводных сетей, беспроводные требуют повышенного внимания к безопасности, поскольку проникнуть в них гораздо проще, поскольку для этого не нужен физический доступ к каналу. Радиоволны можно принимать на любое совместимое устройство, а если данные не защищены, то их сможет перехватить любой желающий. Разумеется, не стоит отказываться от паролей прочих традиционных средств авторизации, однако их явно недостаточно для защиты от несанкционированного доступа. Рассмотрим вкратце несколько способов повышения защищённости беспроводных сетей.
Отключаем передачу SSID
Последовательность цифр и букв, называемая SSID (Service Set Identifier) - это уникальный идентификатор вашей беспроводной сети. Передача идентификатора сети является встроенным средством защиты, по умолчанию включённым в большей части продающегося сегодня оборудования, и оно позволяет с лёгкостью обнаружить имеющиеся точки доступа в процессе развёртывания сети. Передача SSID требуется именно для того, чтобы ваше оборудование смогло подключиться к сети.
Точки доступа, которые являются базовыми станциями для подключаемых к сети компьютеров, являются потенциальным слабым местом, через которое злоумышленник может проникнуть в сеть. На уровне точек доступа отсутствует система авторизации по умолчанию, что делает внутренние сети незащищёнными, поэтому системные администраторы должны реализовать существующую корпоративную систему в беспроводных базовых станциях.
Для обеспечения повышенной безопасности можно запретить трансляцию точками доступа идентификатора сети. При этом возможность подключения к сети остаётся только у тех, кто знает правильный SSID, то есть, у сотрудников вашей компании, а случайные пользователи, обнаружившие вашу сеть при помощи сканирования, просто не смогут получить к ней доступ. Отключение передачи SSID возможно в подавляющем большинстве устройств ведущих производителей, что позволяет фактически скрыть вашу сеть от чужих. Если ваша сеть не передаёт идентификаторов, и если вы не афишируете использование беспроводной технологии, то этим вы осложните задачу злоумышленников. Подробные инструкции по отключению SSID обычно приводятся в руководствах по эксплуатации беспроводных точек доступа или маршрутизаторов.
Включаем средства шифрования
Уже давно используемое при пересылке важной электронной корреспонденции шифрование данных нашло применение и в беспроводных сетях. Для защиты данных от чужих глаз, в аппаратуре для беспроводной связи реализованы различные криптографические алгоритмы. При покупке оборудования важно убедиться в том, что оно поддерживает не только низкоуровневое 40-разрядное шифрование, но и 128-битный шифр повышенной стойкости.
Чтобы включить криптографическую защиту можно задействовать системы WEP (Wired Equivalent Privacy - "эквивалент проводной безопасности") или WPA (Wi-Fi Protected Access - "защищённый доступ к Wi-Fi"). Первая система менее стойкая, поскольку в ней используются статические (постоянные) ключи. Защищённые по этому протоколу сети взламываются хакерами без особого труда - соответствующие утилиты нетрудно найти в интернете. Тем не менее, по оценкам специалистов, даже этот протокол не задействован в более половины работающих корпоративных беспроводных сетей. Одним из средств повышения действенности WEP является регулярная автоматическая смена ключей, но даже в этом случае сеть не получает стопроцентной защиты. Попытки проникнуть в такую сеть оставят лишь случайные люди, обнаружившие её, но злонамеренных специалистов WEP не остановит, поэтому для полноценной защиты корпоративных сетей данный протокол использоваться не может.
В недалёком прошлом у организаторов беспроводных сетей не было иного выбора, как использовать протокол WEP, поддержка которого сохраняется в современных устройствах как в целях обеспечения совместимости оборудования, так и для обеспечения хотя бы минимального уровня безопасности в случае невозможности использования более современных протоколов. Сегодня WEP реализуется в двух модификациях: с 64- и 128-разрядным шифрованием. Однако корректнее было бы говорить о ключах длиной 40 и 104 бит, поскольку 24 бит из каждого ключа содержат служебную информацию и никак не влияют на стойкость кода. Однако это не столь важно, поскольку главным недостатком WEP являются статические ключи, для подбора которых злоумышленникам необходимо лишь в течение определённого времени сканировать сеть, перехватывая передаваемую информацию.
Повторим, что более-менее приемлемый уровень безопасность можно лишь при помощи регулярной смены ключей и при использовании 128-битного шифрования. Частота смены ключей зависит от частоты и длительности соединений, при этом необходимо обеспечить отработанную защищённую процедуру передачи новых ключей тем сотрудникам, которые пользуются доступом в беспроводную сеть.
Более эффективное шифрование обеспечивает протокол WPA, в котором реализовано динамическое создание ключей, что исключает возможность перехвата или подбора ключа, а также система идентификации (логин-пароль) при подключении к сети на основе протокола EAC (Extensible Authentication Protocol - "расширяемый протокол аутентификации"). В протоколе WPA 128-разрядные ключи генерируются автоматически при передаче каждых десяти килобайт данных, причём число этих ключей достигает сотен миллиардов, что делает практически невозможным подбор при помощи сканирования даже при отработанной методике перехвата информации. Кроме того, в этом протоколе реализован алгоритм проверки целостности данных MIC (Message Integrity Check), предотвращающий возможность злонамеренного изменения передаваемых данных. А вот выбору паролей следует уделять особое внимание: по мнению экспертов, для обеспечения высокого уровня безопасности длина пароля должна составлять не менее 20 знаков, причём он не должен представлять собой набор слов или какую-то фразу, поскольку такие пароли легко вскрываются методом словарного подбора.
Проблема с WPA заключается в том, что официально он был внесён в спецификации IEEE 802.11 лишь в середине 2004 года, поэтому далеко не всё беспроводное оборудование, выпущенное более полутора лет назад, способно работать по этому стандарту. Более того, если в сети есть хотя бы одно устройство, не поддерживающее WPA, будет применяться простое шифрование WEP, даже если WPA включён в настройках всего прочего оборудования.
Тем не менее, оборудование постоянно совершенствуется и в современных устройствах поддерживается новая, ещё более защищённая версия WPA2, работающая с динамическими ключами длиной 128, 192 и 256 бит. К таким устройствам, относится, например, трёхдиапазонный контроллер Intel PRO/Wireless 2915ABG.
Регулируем силу сигнала и его направленность
Технология беспроводной связи сама по себе по своей природе меньше защищена от постороннего вмешательства, поэтому при организации таких сетей особенно важно максимально затруднить несанкционированное проникновение в них. Среди чисто технических способов самым эффективным является снижение мощности транслируемого сигнала, ведь радиоволны с лёгкостью преодолевают стены зданий, а в сельской равнинной местности могут преодолевать весьма большие расстояния. Злоумышленники могут поставить свой автомобиль рядом со зданием, в котором расположен ваш офис, и в комфортной обстановке неторопливо подбирать ключ к вашей сети. Поэтому важно отрегулировать мощность сигнала, чтобы он не проникал за границы вашей территории. Кроме того, точки доступа следует располагать вдалеке от окон, внешних стен зданий, общих коридоров, холлов и лестниц.
Беспроводные сети являются очень удобным средством связи быстрого развёртывания, позволяющим объёдинить в сеть компьютеры даже в тех местах, где по тем или иным причинам невозможна прокладка кабеля. Однако поскольку незащищённые беспроводные сети куда проще поддаются взлому, чем проводные, следует уделять повышенное внимание защите от постороннего проникновения. Разумеется, стопроцентной гарантии безопасности дать невозможно, но некоторые действенные способы затруднения несанкционированного доступа в беспроводные сети мы описали в данном материале. Более подробные инструкции по реализации этих методов на практике обычно приводятся в документации к сетевому оборудованию, поэтому мы не ставили перед собой цели описать конкретные действия, тем более что они различаются в зависимости от модели и производителя беспроводных точек доступа и маршрутизаторов. Надеемся, что этот материал привлечёт внимание к проблеме обеспечения защиты беспроводных сетей.
Flash и трехмерная графика, становятся всё более популярными и востребованными. Программа Swift 3D совместила в себе обе популярные технологии. В пятой версии возможности программы вплотную приблизилась к настоящему 3D-редактору и при этом она не стала громоздкой. Программа не требует от пользователя знаний программирования так же, разработчикам удалось сделать ее легкой в освоении даже для того, кто никогда не имел дело с 3D.
Два в одном, флеш и 3D.
Flash и трехмерная графика, становятся всё более популярными и востребованными. Программа Swift 3D совместила в себе обе популярные технологии. В пятой версии возможности программы вплотную приблизилась к настоящему 3D-редактору и при этом она не стала громоздкой. Программа не требует от пользователя знаний программирования так же, разработчикам удалось сделать ее легкой в освоении даже для того, кто никогда не имел дело с 3D.
Для того чтобы начать работу с программой, необходимо знать «азбуку» создания трехмерной графики. Во-первых, на основе простейших трехмерных объектов строятся трехмерные модели. Затем, для этих моделей настраивается освещение, подбираются материалы. На следующем этапе, если это необходимо, создается анимация и, наконец, последний этап – сохранение визуализированного изображения или анимации в файл.
Scene Editor.
На этапе работы с редактором сцены, выполняется общая настройка объектов, задаются геометрические размеры, выбирается их положение и освещение.
В программе можно использовать стандартный набор простейших шаблонов. Помимо этого, в сцену можно импортировать трехмерные модели в формате 3ds, а также изображения в векторном формате. Такие изображения будут автоматически открываться как трехмерные объекты.
Один из самых востребованных типов объектов, который часто используется при создании логотипов это текст. Для получения объемного текста в каком-нибудь полноценном 3D-редакторе (например, в 3ds Max) сначала нужно создать 2D-форму, а затем придать ей объемность при помощи модификатора Bevel или Extrude. В Swift 3D этот процесс упрощен – текст становится объемным сразу же после нажатия кнопки Create Text. Используя панель свойств, можно выбрать профиль фаски, подходящую гарнитуру шрифта и задать другие параметры.
Несмотря на то, что в программе есть базовый набор 3D-объектов, разработчики также предоставили пользователю возможность создавать трехмерные модели самостоятельно. В зависимости от того, какой метод будет выбран, можно использовать одну из вкладок - Extrusion Editor, Lathe Editor или Advanced Modeler.
Extrusion Editor.
Принцип работы редактора выдавливания, прост: создается некоторая сплайновая форма, которая используется для создания трехмерного объекта с заданным сечением. Такой метод очень удобен для моделирования предметов, имеющих постоянное поперечное сечение вдоль одной из осей.
Принцип построения сплайна по точкам мало чем отличается от создания кривой в любой программе для векторной графики. Для каждой точки можно выбрать один из трех типов излома, а форму линии можно корректировать с помощью касательных. На панели инструментов редактора выдавливания можно найти инструмент для замыкания кривой, а также кнопки для быстрого создания 2D-форм самых распространенных типов: звездочки, стрелки, значка "плюс" и прочих.
Чтобы увидеть результат работы с этим инструментом, нужно вернуться на этап работы с редактором сцены.
Выдавливание можно также производить со скосом, что даст возможность получить несколько иной профиль конечной модели.
Lathe Editor
Еще один инструмент для создания трехмерных поверхностей, на этот раз образованных вращением профиля вокруг некоторой оси. Lathe Editor напоминает редактор выдавливания. Тут опять требуется создать кривую определенной формы, основные инструменты те же самые, разве что нет кнопок для быстрого создания кривых часто используемой формы.
В окне редактора поверхностей вращения следует нарисовать профиль, который будет иметь будущая трехмерная модель. Затем нужно перейти на вкладку Scene Editor и при необходимости настроить параметры созданного объекта, например, указать угол поворота профиля модели или определить число радиальных сегментов. Если в строке Sweep Angle изменить угол, заданный по умолчанию, поверхность вращения будет незамкнутой.
Интересно, что и при работе с редактором выдавливания, и при использовании редактора поверхностей вращения можно анимировать форму кривой.
Advanced Modeler
Режим Advanced Modeler – это настоящая гордость Swift 3D. Главная особенность этого режима – редактирование оболочки трехмерных объектов. Перед вами раскрываются неограниченные возможности управления их формой.
Для перехода в режим редактирования оболочки используется кнопка Edit Mesh. После этого на панели инструментов становятся активными кнопки для редактирования модели на разных уровнях подобъектов.
Можно выделять вершины, ребра, поверхности, а затем выполнять с выделенными подобъектами разные действия, такие как выдавливание, уплотнение сетки, зеркальное отражение, округление и пр.
Возможность работы в режиме редактирования поверхности дает еще одно преимущество – появляется возможность использовать разные материалы для разных частей объекта.
Добавление материалов
После завершения работы над формой объекта нужно выбрать для него материал. Материалы в Swift 3D выбираются исходя из имеющихся в наличии заготовок, которые находятся в палитре материалов. Библиотека пестрит разнообразием. Материалы разделены на несколько категорий: с прозрачностью, блестящие, имитирующие дерево, кирпич, мрамор, камень и т.д.
Назначается материал очень просто: нужно перетащить выбранный образец на объект. При необходимости, настройки материала можно подкорректировать. Для этого нужно дважды щелкнуть по образцу. Можно создать и собственный материал, используя для этого растровое изображение.
Освещение и камеры
Разработчики Swift 3D уделили достаточно много внимания системе освещения. По умолчанию, в виртуальном пространстве используется двухточечная система освещения, причем, положение источников света, добавленных программой по умолчанию, можно изменять (в большинстве 3D-редакторов такой возможности нет). Для этого используется схематический трекбол с двумя отметками источников света. Центр трекбола соответствует центру сцены. С его помощью также удобно подбирать угол освещения объектов трехмерной сцены новыми источниками.
Несмотря на то, что для такой нереалистичной визуализации, как «рисованный» флэш, освещение не очень важно, авторы Swift 3D добавили в программу четыре разных типа источника. Комбинируя их, можно имитировать освещение в разное время суток.
Для того чтобы иметь возможность точно и гибко выбрать угол съемки, в сцене можно использовать виртуальные камеры. Камеры могут быть двух видов – свободные и направленные, с мишенью.
Анимация объектов
Работа с анимацией выполняется на вкладке Scene Editor. Оживление трехмерных объектов происходит благодаря режиму автоматического создания ключей анимации. Этот режим активируется на временной шкале кнопкой Animate. Для того чтобы заставить двигаться объекты сцены, достаточно в этом режиме передвинуть ползунок на нужный кадр и попробовать изменить положение объекта в сцене, например, повернуть его на некоторый угол.
Если выделить в сцене объект, на шкале анимации отобразится список анимируемых параметров. При дальнейшем создании анимации выбранного объекта напротив каждого параметра, который будет анимироваться, будут появляться метки – ключи анимации. Ключи анимации можно перемещать и копировать. Кроме этого, есть возможность изменять характер протекания анимации.
Анимацию объектов можно также создавать, устанавливая траекторию их движения. Для этого служит режим Animation Path Mode, который также активируется кнопкой на временной шкале. Траекторию движения можно установить вручную, хотя в большинстве случаев удобнее использовать готовые варианты движений, находящиеся в библиотеке предварительных заготовок, о которой мы говорили выше.
Поскольку флэш-анимация в большинстве случаев используется для создания анимированного логотипа, как правило, движения такой эмблемы можно заранее предвидеть – логотип может вращаться, перемещаться вдоль окружности или другой геометрической фигуры.
Чтобы воспользоваться заранее заданными параметрами анимации, достаточно перетащить образец анимации из библиотеки на объект в сцене.
Сохранение проекта
Последний этап работы в Swift 3D – предварительный просмотр анимации и экспорт в выбранный формат. Все это выполняется на вкладке Preview And Export Editor. Тут можно покадрово просмотреть анимацию, задать параметры экспорта и выбрать формат файла.
Программа работает с большим числом форматов и дает возможность сохранить анимацию как файл Mov, Flv, Swf, Avi. Кроме этого, возможно сохранение в виде графического файла или в один из форматов векторной графики – Ai или Eps.
Сразу хотим отметить, что при помощи демонстрационной версии программы сохранить проект не удастся. Она дает возможность оценить все функции Swift 3D, однако результат работы можно просматривать только в окне предварительного просмотра, сохранение в файл не работает. Кроме этого, не удастся экспортировать созданные в программе модели в 3ds.
Триал-версию программы можно скачать с официального сайта. Полная версия Swift 3D оценивается в $250. Кроме версии для Windows, существует также версия для Mac OS.
На примере создания иллюстрации можно понять основные приемы работы с Blend Tool, а также некоторые нюансы, которые следует учитывать для достижения положительных результатов. Это не прямое руководство, это лишь способ, один из многих, который позволяет понять алгоритм основных действий и решать в дальнейшем более сложные и конкретные задачи.
Не обычное применение Blend Tool.
На примере создания иллюстрации можно понять основные приемы работы с Blend Tool, а также некоторые нюансы, которые следует учитывать для достижения положительных результатов. Это не прямое руководство, это лишь способ, один из многих, который позволяет понять алгоритм основных действий и решать в дальнейшем более сложные и конкретные задачи.
Свеча на рисунке выглядит достаточно реалистичной, для ее создания использовалась техника описания ниже. Забегая вперед, скажу что время, затраченное автором не превышает одного часа, в рисунке использовалось шестнадцать нарисованных вручную элементов, все остальное сделано автоматически инструментом Blend Tool.
Для начала определимся с основными формами. В данном случае это пламя, ореол света, фитиль и собственно свеча. Те самые шестнадцать элементов это парные объекты, начальные и конечные, между которыми и производится операция перетекания, благодаря чему цвета плавно распределяются и рисунок выглядит реалистично. Это не маловажный аспект, цвет конечного (в данном случае внешнего) объекта языка пламени должен совпадать с цветом начального (внутреннего) объекта ореола, а цвет конечного объекта ореола с цветом фона.
Инструментом Bezier Tool по контрольным точкам нарисуем кривую. Следует отметить, что операции с кривыми требующие определенной точности нужно проводить именно Bezier Tool или Pen Tool, и изначально рисовать прямыми линиями, то есть определить на глаз где должны находится узлы и соединить их прямыми линиями. Инструмент Freehand Tool здесь не подойдет из-за неточности. Итак, когда линия проведена, делаем двойной клик на инструменте Shape Tool, двойной клик выделит все узлы элемента и все линии легко сделать кривыми командой Convert Line To Curve на панели свойств (Property Bar) активной при выбранном инструменте. Оставив активным инструмент Shape Tool отредактируем кривую до нужного вида, для хорошего перетекания важно чтоб все было плавно.
Не торопитесь с построением следующего объекта, здесь есть один важный нюанс. В идеале начальный объект дублируется и путем редактирования превращается в конечный. Дублируем кривую нажатием «+» на цифровой клавиатуре и инструментом Shape Tool тянем узлы на нужные позиции, с помощью направляющих линии доводятся до нужной степени изогнутости. Таким образом, получается кривая с тем же количеством схожих по свойствам узлов, что обеспечивает бес проблемное выполнение операции перетекания (Blend).
Далее руководствуясь теми же принципами рисуются остальные элементы рисунка. Язык пламени достаточно сложный объект, в нем используется три пары кривых, три последовательных перетекания.
Когда все пути готовы можно приступать к выбору цветовой гаммы. Здесь тоже следует обратить внимание на некоторые нюансы. Например не следует осуществлять переход от темно-желтого к светло-желтому в системе CMYK таким образом: из C0:M20:Y100:K20 в C0:M0:Y60:K0, так как в промежутке появятся «грязные» цвета типа C0:M11:Y81:K11, что значительно испортит вид рисунка. Такой переход лучше осуществить в два этапа: из C0:M20:Y100:K20 в C0:M0:Y100:K0, а из последнего в C0:M0:Y60:K0. Это стоит запомнить, руководствуясь таким принципом строятся и качественные градиенты, программные средства не идеальны, не следует полностью доверять им в таком важном аспекте как работе с цветом. Здесь не стоит ленится и жалеть времени, это один из завершающих этапов создания иллюстрации, следует уделить ему внимание, по экспериментировать и получить впоследствии картинку с яркими и сочными цветами, достойную глянцевой обложки.
Подготовительный, рутинный и самый сложный этап работы закончен. Теперь осталось самая приятная часть – создание переходов между объектами, превращение набора плашек в фотореалистичную иллюстрацию.
Выбираем инструмент Interactive Blend Tool или открываем докер Effects>Blend, делаем переход от объекта к объекту вручную или выбираем пару и нажимаем кнопку Apply в докере. В зависимости от исходного размера рисунка устанавливаем количество шагов (Steps).
Проблем возникнуть не должно если все сделано правильно, но все же если что-то упущено вместо ровного перехода может возникнуть цепочка из непонятных «рваных» объектов, не имеющих на первый взгляд никакого отношения к оригинальным и тем более к задуманному. Не стоит отчаиваться, для настоящего профессионала нет проблем которые нельзя решить. Такая ситуация может возникнуть в двух случаях: пути объектов имеют разное направление или несовпадающие узлы (даже если узлов одинаковое количество). Первая проблема решается просто, инструментом Shape Tool выделяется один объект и инвертируется направление кривой командой Reverse curve direction на панели свойств. Если не помогло придется самому назначить начальные и конечные узлы перетекания (предварительно убедившись что их одинаковое количество), для этого у инструмента есть набор опций Miscellaneous Blend Options (иконка с плюсиком на Property Bar, или последняя в докере), а в нем функция Map Nodes. После клика по ней курсор превратится в изогнутую стрелку и на одном из исходных объектов отобразятся узлы в виде увеличенных квадратиков, после клика на одном из таких квадратиков активируется второй объект с аналогичным отображением узлов, теперь следует кликнуть по узлу соответствующему первому выбранному, и повторить если потребуется на всех контрольные точки, хотя на практике все стает на свои места после «синхронизации» двух-трех узлов. Функция Split тоже достаточно интересна, она позволяет выделить любой объект из уже сделанного перетекания и сделать его третьим (средним) исходным и произвести над ним манипуляции (изменить цвет, размер, форму и т.д.) таким образом изменив все перетекание, в некоторых случаях достаточно удобно.
И на последок хотелось бы отметить. Данная статья лишь иллюстрирует на небольшом примере возможности программы и ее инструментов. Многие пользователи CorelDRAW недооценивают возможности Blend Tool и пренебрегают ее использованием, но при хорошо освоенной технике и достаточной практике с помощью инструмента без особого труда можно создавать сложные фотореалистичные, технически грамотные иллюстрации и элементы дизайна. Пламя, хромовые, матовые и глянцевые поверхности, объемные предметы и фигуры, тени – все это далеко не полный перечень того что можно изобразить этой техникой.
Эта первая статья, которая открывает цикл статей о работе с графическим редактором Corel Draw. Думаю, они помогут всем желающим обучится работать с векторной графикой. Раскрыть для себя все возможности вектора.
Попробуем нарисовать время, а верней его оболочку в виде песочных часов.
Corel Draw. Рисуем часы.
Эта первая статья, которая открывает цикл статей о работе с графическим редактором Corel Draw. Думаю, они помогут всем желающим обучится работать с векторной графикой. Раскрыть для себя все возможности вектора.
Попробуем нарисовать время, а верней его оболочку в виде песочных часов.
1. Инструментом Ellipse Tool (F7) рисуем круг, для ровного круга зажимаем Ctrl, затем конвертируем круг в кривую Arrange-Convert to curves(Ctrl+Q)
взяв нижнюю точку, приспустим её вниз, как на рисунке!
2. Копируем этот овал (Shift+ тащим Pick Tool к середине объекта) и немного дорабатываем его форму, сделаем его немного тупее (кстати, скопируйте этот внутренний овал и положите его в уголок, он нам еще пригодится!).
3. выделим первые два объекта и скопируем их вниз (выделяем Pick tool, зажимаем Ctrl и тащим)
полученные объекты немного вытянем из верхней точки, как рисунке. На нём, кстати, не очень видно у вас должно быть поострее! Делаем мы это специально потому, что на наши будущие часы мы будем смотреть немного сверху!
4. Теперь инструментом Elipse Tool (F7) нарисуем овал, скопируем его и расположим как на рисунке, сверху инструментом Rectangle Tool рисуем прямоугольник!
5. Обрезаем кружками квадрат, для этого сначала выделяем круг, затем квадрат (зажав Shift) и щелкаем по кнопке Trim.
Повторяем это всё со вторым кругом.
6. Теперь выделим два больших овала и нажмем Weld! Смотрим, что получилось!
кстати, на этом этапе при объединении могут получиться лишние точки их надо удалить, и если надо поменять тип точки
7. Такой же трюк проделываем с внутренними овалами.
У нас уже есть колба для песка она конечно одна но будем называть её двумя объектами большой колбой и малой (внутренней).
Возьмите внутреннюю "колбу" и вырежьте отверстие. Но её не удаляйте!
8. Теперь берем опять инструмент Elise Tool (F7), рисуем овал, затем копируем его и размещаем две копии наверху,
чем выше круг тем он должен быть уже! Дорисуем два прямоугольника, как на рисунке!
9. Выделим пять последних фигур, скопируем и утащим вниз объекта ( отзеркалив их) и забудем о них на некоторое время!
10. Сосредоточим внимание на верхней части!
Объединим нижний овал с большим прямоугольником. Как объединять объекты вы уже знаете.
Теперь объединим средний овал и небольшой прямоугольник. Если вы зальёте эти объекты, получится как на рисунке.
11. Заливаем объекты инструментом Fountain Fill Dialog (F11) или кликаем по палитре сбоку левой кнопкой мыши.
Если вдруг у вас объекты будут расположены в другой последовательности, то для того что бы верхний овал был самым верхним, жмем Shift+Page Up (самым нижним Shift+Page Down) если надо сместить только на один слой Ctrl+Page Up (Down)
Не уделяйте сейчас внимание заливке, о ней поговорим потом.
12. Теперь пошли вниз. Почему мы просто не копируем верхнюю часть? Потому что линия горизонта над предметом низ нам видно больше и вид там будет совершенно другой.
Рисуем заново все объекты или используете то, что вначале утащили вниз в запасник!
Берем овал, обратите внимание, как он расположен и растяните его по высоте, теперь мы видим его больше. Смело копируйте его в середину!
Вырежьте меньшим дырку в большем. Он обозначен желтым цветом! Меньший положим сбоку, потом еще попользуем!
13. Скопируем колечко и уменьшим его немного, смотрите как на рисунке. Для того, что бы было понятнее, назовём колечки 1(большее) и 2(меньшее).
Берем колечко 1-нарисуйте любую форму и обрежьте им колечко, можно обрезать тем овалом, что мы отложили. Обратите внимание на уголки!
14. Берем запасное кольцо 2, располагаем, как на рисунке затем рисуем овал и обрезаем им колечко, с помощью Intersectin. Полученная форма выделена зеленым. Теперь совместим их.
Это будет наше преломление стеклом. Если бы у нас был фон с узорами, он бы тоже должен был преломиться!
15. Дальше уже известным нам методом объединения и обрезки, получаем из прямоугольника и овала, нижнюю часть подставки. Помним что овал у нас теперь очень широкий.
16. Дорисовываем основание подставки тем же методом, что и верх. Здесь используется объединение готовых форм потому что нам важно сделать симметричный объект. Возьмем отложенный овал и подложим его в самый низ!
17. Вот почти всё готово! Меньшую "колбу" заливаем и делаем ей прозрачность инструментом Interactive transparenci Tool
Заливаем все, чтоб нам было понятно, что это у нас такое! А это часы без песка!
18. Теперь рисуем сам песок. Сначала рисуем овал, наклоняем его, на рисунке песок сыплется немного наклонно.
Затем рисуем прямоугольник. Сначала выделяем малую ”колбу”, затем новоиспеченный прямоугольник и жмем Intersect!
Подгоняем точки по узкой форме и заливаем цветом песка. Можно продлить этот объект вниз и нарисовать как бы падающую струйку песка. Добавим несколько песчинок для декоративности.
19.На самом верхнем овале песка нарисуем поменьше, зальем более темным цветом и применим интерактивное перетекание Interactive Blend Tool.
Ниже нарисуем небольшую горку упавшего песка. И заливаем просто градиентной заливкой.
20. А теперь самое важное - рисуем блики. Чем больше бликов, тем лучше! Мы можем скопировать меньшую колбу и деформируя её по нескольким точкам также добавить блики. Очень удобно брать её как основу, потому что блики должны идти именно по её форме. Здесь нам пригодится отложенный в начале овал, его тоже удобней подгонять по форме колбы.
Рисуем мелкие блики, деформируя круги по точкам! Затем заливаем и применяем прозрачность.
21. Теперь дорабатываем заливку.
Добавим тени!
Рисуем овал, добавляем тень инструментом Interactive Droр Shadow Tool. Отделим тень от объекта Ctrl+K, удалим овал.
Таким же способом нарисуем тень на верхней подставке.
Еще можно добавить опорные ножки. Рисуют их так же как всё, объединяя квадрат и овал.
В этом уроке изложен принцип рисования подобной формы вы можете усложнить или облегчить саму форму, добавить красивых деталей, прорисовать блики, инкрустировать корпус камушками... В общем, фантазируйте!
В наше время почти у каждого есть цифровая камера. Однако не все знают всех возможностей своего аппарата. Найдется мало желающих экспериментировать с настройками выдержки, чувствительности ISO и другими параметрами съемки, пользователи предпочитают делать цифровые фотографии в режиме – автоматической съемки.
2D – графика. Создаем панораму в редакторе PTGui Pro 8.
В наше время почти у каждого есть цифровая камера. Однако не все знают всех возможностей своего аппарата. Найдется мало желающих экспериментировать с настройками выдержки, чувствительности ISO и другими параметрами съемки, пользователи предпочитают делать цифровые фотографии в режиме – автоматической съемки.
Но почти в каждом современном фотоаппарате есть еще один режим, режим создания панорам. Этот режим позволяет избавится от некоторых ограничений фотоаппарата, такие как максимально допустимое разрешение снимка и максимальный угол обзора. Если же в вашем цифровике такого режима нет - не беда. Создать панораму можно и без специальной функции фотокамеры. Даже используя камеру мобильного телефона, можно получить широкоугольный снимок высокого разрешения. Все что нужно сделать – это выполнить несколько снимков в обычном режиме и установить специальную программу, с помощью которой кадры будут сшиваться в один снимок. Об одной из таких программ и пойдет речь в этом обзоре.
Свое название программа PTGui Pro получила в результате сокращения Graphical User Interface for Panorama Tools (Графический интерфейс для Panorama Tools).
Для создания панорамы, предлагается пройти несколько шагов с помощью мастера создания панорам Project Assistant. Наличие пошагового мастера в программе не означает, что PTGui Pro создаст панораму после нескольких щелчков мыши. Напротив, программа имеет огромное количество средств для настройки панорамы, в чем можно убедиться, включив режим Advanced. В этом режиме будет отображены дополнительные вкладки, каждая из которых содержит настройки для того или иного инструмента, например, для обрезки изображения, компенсации искажений, вызванных конструктивными особенностями объектива фотокамеры, для выбора способа проецирования панорамы и пр.
Шаг первый – загрузка изображений для будущей панорамы. Нажимаем кнопку Load images и указываем на диске заранее подготовленные фотографии.
Открытые в программе снимки отобразятся в виде ленты.
Если щелкнуть по этой ленте, откроется дополнительное окно Source Images, в котором можно установить порядок размещения изображений.
Нажав кнопку Correct в этом окне, можно выполнить коррекцию изображения, искаженного в результате паразитной дисперсии света, проходящего через оптическую систему объектива, или вследствие других причин.
Шаг второй – выравнивание кадров относительно друг друга. После нажатия кнопки Align images программа запустит свой алгоритм и определит для каждого изображения свое место в панорамном снимке. После автоматического выравнивания на экране появится окно Panorama Editor, в котором можно изменять ориентацию отдельных частей панорамы или всей панорамы целиком.
Если составляющие элементы панорамы сделаны максимально аккуратно, то есть, из одной точки, и имеют небольшую площадь перекрытия, скорее всего, создание панорамы на этом может быть завершено, и файл можно сохранять, нажав кнопку Create Panorama.
Если же снимки были не совсем удачные, и программа неточно определила места их "сшивания", необходимо вручную выполнить процедуру соединения изображений. Для склейки изображений PTGui Pro использует набор контрольных точек. Эти контрольные точки представляют собой пары отметок на соединяемых изображениях, которые обозначают совпадающие детали на снимках. Чем точнее расположены контрольные точки и чем больше будет их число, тем правильнее будет составлен шов между изображениями.
Для управления контрольными точками фотографий следует перейти на вкладку Control Points. В двух окнах показаны объединяемые снимки, на которых видны пары контрольных точек. Все эти точки пронумерованы и выделены цветом. Ниже, под изображениями показана таблица, в которой представлена подробная информация о координатах правых и левых контрольных точек.
Алгоритм программы несовершенен, поэтому иногда контрольные точки могут определяться недостаточно верно. В этом случае нужно щелкнуть правой кнопкой мыши на проблемной точке и удалить неудачную отметку, выбрав команду Delete. После этого можно вручную проставить контрольные точки, щелкая по изображению. Парную контрольную точку программа создаст сама, останется лишь проследить за правильностью ее расположения и, в случае необходимости, передвинуть ее на правильную позицию.
PTGui Pro может также сохранять результат соединения частей панорамы в файл Photoshop со слоями, что дает возможность редактировать изображение в популярном графическом редакторе. Изображение может также сохраняться в формате Tiff или Jpeg.
Панорамные снимки делают не только для того чтобы хранить память о местах, в которых побывал фотограф, они имеют и другое практическое применение. Круговые панорамы на 360 градусов могут использоваться разработчиками компьютерных игр для имитации естественного окружения. При помощи PTGui Pro можно получить интерактивную панораму в формате QuickTime VR (*.mov). Запустив такой файл, пользователь сможет совершить виртуальный осмотр местности из той точки, откуда производилась съемка панорамы. Панорамы QuickTime VR можно внедрять в веб-страницы. Для конвертирования панорамы в формат QuickTime VR нужно выполнить команду Utilities > Convert to QTVR.
Для 3D-дизайнеров программа PTGui Pro предлагает создание панорамных изображений в формате HDR, то есть с широким динамическим диапазоном. Использование технологии HDR при создании панорам может быть реализовано двумя методами коррекции изображения - True HDR и Exposure Fusion. Первый вариант позволяет создавать HDR-панораму на основе группы фотографий, сделанных с разной выдержкой, а также из HDR-изображений.
Второй вариант следует использовать в тех случаях, когда HDR-панорама не является конечной целью и необходимо лишь получить изображение с правильной экспозицией. В некоторых случаях, подобрать правильную выдержку довольно сложно. В основном это связано с тем, что на момент съемки освещение объектов неудобно для фотографа. В этом случае можно сделать несколько одинаковых снимков с разной выдержкой. Важно, чтобы они были сделаны с одной точки. Объединив информацию из всех этих снимков в формат HDR, можно получить изображение с более выгодным освещением. Затем выполняется преобразование диапазона яркостей HDRI к диапазону яркостей, отображаемых монитором (tone mapping), и на выходе мы имеем улучшенное изображение. Именно это и можно сделать в режиме Exposure Fusion.
Улучшить конечное изображение можно также, поэкспериментировав с настройками алгоритма PTGui Pro. Вызвать окно настроек можно, выполнив команду Tools > Options. Среди параметров, при помощи которых можно управлять тонкой настройкой программы: количество контрольных точек на паре сшиваемых изображений, настройки чувствительности при определении одинаковых фрагментов на частях панорамы и т.д.
Для создания одной панорамы требуется три, четыре и более снимков. А если панорам несколько то снимков получается очень много. Объединение кадров панорамы в один снимок требует много времени. Чтобы упростить задачу, в PTGui Pro предусмотрена пакетная обработка файлов.
Для того чтобы обработать сразу несколько панорамных изображений, необходимо сохранить проекты, которые должны быть обработаны, в формате программы (*.pts). После этого необходимо запустить утилиту Batch Stitcher, которая устанавливается вместе с PTGui Pro и доступна из меню "Пуск", составить в ней список заданий и запустить их выполнение.
Вы можете подумать, а для чего вообще нужна эта программа, ведь есть Photoshop, с прекрасным инструментом Photomerge? Однако его применение далеко не всегда позволяет получить идеальное изображение. Часто, особенно при склеивании ночных панорам, можно получить неприятное сообщение о том, что слои не могут быть корректно выровнены относительно друг друга. И тут PTGui Pro может стать хорошей альтернативой средствам популярного графического редактора.
С одной стороны, PTGui Pro достаточно проста в использовании, с другой – содержит множество настроек для коррекции снимков вручную, благодаря чему можно гибко управлять результатом.
Ниже приведены несколько панорам, которые были созданы при помощи программы.
Триал-версию PTGui Pro для Windows и Mac OS X можно скачать с официального сайта.
Как правило, формулировка «фирменный стиль» вызывает недоумение или недопонимание: зачем это собственно нужно, и вообще, что это такое?
Само слово «стиль» определяется, как общность образной системы, средств художественной выразительности, творческих приемов, обусловленных единством идейно-художественного содержания. Соответственно, сочетание слов «фирменный» и «стиль» будет интерпретироваться как совокупность мероприятий и ряд приемов (графических, цветовых, языковых и т.д.), которые, с одной стороны, обеспечивают узнаваемость фирмы, ее изделий и воспринимаются наблюдателем (не только потенциальным покупателем), а с другой стороны, противопоставляют фирму и ее изделия конкурентным товарам.
Исходя из этого определения, специалисты понимают, что фирменный стиль не является абстрактным понятием, напротив, он может стать важным конкурентным преимуществом и существенно повысить прибыль компании.
Компоненты фирменного стиля:
1. Логотип - это специально разработанная, стилизованная сокращенная форма названия фирмы, часто в оригинальном начертании. Примерами удачных логотипов могут являться логотипы таких компаний, как «Мегафон», «Самсунг», «Найк».
2. Фирменные цвета (цветовая гамма). Очень важно подобрать два или три основных цвета, которые бы постоянно использовались в деятельности компании. Примерами могут служить такие компании, как «М-видео», «Техносила», «Dixis», «Куда.ру»
3. Фирменный шрифт. Шрифты различаются характером рисунка, наклоном, насыщенностью, размером. Шрифт прорабатывается индивидуально, также как и логотип. Наличие фирменного шрифта выгодно отличит вашу компанию от других, но не является обязательным компонентом фирменного стиля.
4. Фирменная визитка. Это неотъемлемый атрибут современного делового общения. Первое представление, как правило, начинается с обмена визитными карточками. Особое значение они имеют при общении с иностранными парнерами, людьми, не говорящими на вашем родном языке. На деловой визитной карточке должны быть четко обозначены ваши фамилия и имя (отчество), название вашей фирмы или организации и ваша должность, полный почтовый адрес и другие сведения. Визитка по своей сути является мини представительством вас и вашей компании, поэтому она должна отражать фирменный стиль компании.
5. Бланк – это лист бумаги с напечатанным названием учреждения, фирмы или с частично напечатанным текстом, предназначенный для составления документа по определенной форме. Так как письма и другие документы, как правило, предназначены второй стороне, то бланк неприменно должен отражать специфику вашей компании, а именно фирменный стиль.
В компоненты фирменного стиля также можно включить слоган и наличие какого-либо, специально разработанного запоминающегося персонажа для компании.
Слоган – это рекламный лозунг, девиз, направленный на создание имиджа фирмы или на рекламу товара; заголовок рекламного послания, отличающийся от обычного заголовка повышенной эмоциональностью и сильным подтекстом, призывающим к немедленному действию — вступлению в контакт с производителем товара или покупке товара.
По нашему мнению, очень удачными слоганами являются девизы таких компаний, как Комбелга – «Связь в удовольствие», Iru – «закажи друга», Nokia – «connecting people».
Удачными персонажами являются персонаж Масяни студии мульт.ру, Рональд Макдональд компании Макдоналдс, персонажи рекламы конфет M&Ms, персонаж рекламной компании пива «Пит» - Иван Таранов.
Компания также может иметь свои конверты, календари, буклеты, сувенирную продукцию, папки, упаковку, прайс-листы, плакаты и пакеты. Наличие такой продукции определяется финансовыми возможностями компании, а также необходимостью компании в этой продукции. В любом случае, эти изделия окажут позитивное влияние на мнение окружающих. Единственное, что должно объединять эти изделия - это наличие единого стиля, иначе смысла в них не будет.
Цель фирменного стиля – обеспечение запоминаемости вашей компании потребителями, потенциальными клиентами и партнерами и предоставление конкурентного преимущества.
Отдельно стоит сказать о веб-сайте. На основании того, что сайт является вашим представительством в сети интернет, он должен максимально соответствовать вашей компании, содержать логотип, придерживаться цветовой палитры и иметь всю остальную атрибутику фирменного стиля. Лучше не допускать принципиального отличия стиля сайта от общей политики компании.
Рекомендуется разрабатывать фирменный стиль в одной компании на основании нескольких объективных факторов: во-первых, комплексные работы всегда обходятся дешевле, нежели чем делать все по отдельности. Во-вторых, когда одна компания полностью ведет проект по созданию фирменного стиля, она максимально и точно отражает его на всей продукции. Если же создание фирменного стиля происходит в разных компаниях, то это может привести к тому, что Ваш фирменный стиль на разной продукции будет отражен по-разному. В-третьих, это просто экономия вашего времени и лучший контроль над этапами работ.
Фирменный стиль, по рекомендациям специалистов, лучше всего разрабатывать один раз и на всю жизнь. На основании этого очень ответственно и серьезно отнеситесь к его разработке, не пускайте на самотек, от этого зависит ваша конкурентная способность и запоминаемость вашей компании клиентами и партнерами.
Напомним, что IP относится к группе протоколов TCP/IP. Протокол TCP реализует транспортные функции модели OSI (Open Systems Interconnection), ее четвертого уровня. Его основная обязанность - обеспечение надежной связи между начальной и конечной точками пересылки данных. IP располагается в OSI на сетевом, или третьем, уровне; он должен поддерживать передачу маршрутизаторам адресов отправителя и получателя каждого пакета на всем пути его следования.
Маршрутизаторы и коммутаторы третьего уровня считывают записанную в пакетах по правилам IP и других протоколов третьего уровня информацию и используют ее совместно с таблицами маршрутизации и некоторыми другими интеллектуальными средствами поддержки работы сети, пересылая данные по сетям TCP/IP любого масштаба - от "комнатной" до глобальной, охватывающей всю планету.
Процесс маршрутизации начинается с определения IP-адреса, уникального для станции-отправителя (адреса источника), который может быть постоянным или динамическим. Каждый пакет содержит такой адрес, длина которого, в соответствии с современной спецификацией IPv4, составляет 32 бита.
Кроме того, в заголовке пакета записан IP-адрес его места назначения. Если отправляющая станция определяет, что адрес доставки не локальный, пакет направляется маршрутизатору первого сетевого сегмента. Этот маршрутизатор определяет IP-адрес пакета и проверяет по своей таблице, не расположена ли станция получателя в локальной физически подключенной к нему сети, которая называется IP-подсетью (обычно она назначается для всех сетевых интерфейсов маршрутизатора). Если же выясняется, что IP-адрес получателя локальный, маршрутизатор начинает искать внутреннее хранилище IP- и MAC-адресов локальных устройств - ARP-кэш (Adress Resolution Protocol), позволяющий сопоставлять IP- и MAC-адреса.
При обнаружении нужного MAC-адреса маршрутизатор помещает его в заголовок пакета (удаляя собственный MAC-адрес, который больше не нужен) и направляет пакет по месту назначения. Если MAC-адрес получателя не найден в ARP-кэше, маршрутизатор пересылает ARP-запрос в подсеть, соответствующую IP-адресу получателя пакета, где конечная станция с этим IP-адресом передает ответ на запрос, содержащий необходимый MAC-адрес. Затем маршрутизатор обновляет содержимое кэша, устанавливает новый MAC-адрес в заголовке пакета и отправляет его. Если пакет не предназначен для локальной подсети, маршрутизатор направляет его на маршрутизатор следующего сегмента по MAC-адресу последнего.
Процесс построения и обновления таблиц маршрутизации практически непрерывен. Он осуществляется средствами, использующими интеллектуальные протоколы обнаружения, например RIP или OSPF. В таблице каждого маршрутизатора указан оптимальный маршрут до адреса назначения или до маршрутизатора следующего сегмента (если адрес не принадлежит локальной подсети). Последовательно просматривая собственные таблицы маршрутизации, соответствующие устройства передают пакет "по этапу", запрашивая, при необходимости, MAC-адрес конечной станции. Этот процесс продолжается до тех пор, пока пакет не доберется до пункта назначения.
Однако при пересылке пакета через множество сетевых сегментов существует опасность образования "петель": неправильно сконфигурированный маршрутизатор постоянно возвращает пакет тому маршрутизатору, через который данный пакет уже проходил. Во избежание этого в IP предусмотрена TTL-функция (time-to-live), позволяющая задать предел времени путешествия пакета по сети. Значение TTL устанавливается заранее и уменьшается на единицу при каждом прохождении любого сегмента. Если величина TTL становится равной нулю, пакет удаляется, а маршрутизатор отсылает отправителю сообщение ICMP.
Механизм IP- маршрутизации
1. Маршрутизатор проверяет IP-адрес входящего пакета и просматривает т аблицу, определяя, не является ли пунктом назначения локальная сеть.
2. Если IP-адрес назначения локальный, то маршрутизатор находит во внутреннем хранилище IP- и MAC-адресов локальных устройств MAC-адрес места назначения, помещает его в заголовок пакета и направляет пакет получателю.
3. Если MAC-адрес получателя не обнаруживается, маршрутизатор должен послать запрос о нем по IP-адресу получателя. Если после просмотра таблицы выясняется, что пакет не предназначен для локальной сети, маршрутизатор переправляет его маршрутизатору следующего сетевого сегмента, используя MAC-адрес последнего.
Типы адресов: физический (MAC-адрес), сетевой (IP-адрес) и символьный (DNS-имя).
Каждый компьютер в сети TCP/IP имеет адреса трех уровней:
* Локальный адрес узла, определяемый технологией, с помощью которой построена отдельная сеть, в которую входит данный узел. Для узлов, входящих в локальные сети - это МАС-адрес сетевого адаптера или порта маршрутизатора, например, 11-А0-17-3D-BC-01. Эти адреса назначаются производителями оборудования и являются уникальными адресами, так как управляются централизовано. Для всех существующих технологий локальных сетей МАС-адрес имеет формат 6 байтов: старшие 3 байта - идентификатор фирмы производителя, а младшие 3 байта назначаются уникальным образом самим производителем. Для узлов, входящих в глобальные сети, такие как Х.25 или frame relay, локальный адрес назначается администратором глобальной сети.
* IP-адрес, состоящий из 4 байт, например, 109.26.17.100. Этот адрес используется на сетевом уровне. Он назначается администратором во время конфигурирования компьютеров и маршрутизаторов. IP-адрес состоит из двух частей: номера сети и номера узла. Номер сети может быть выбран администратором произвольно, либо назначен по рекомендации специального подразделения Internet (Network Information Center, NIC), если сеть должна работать как составная часть Internet. Обычно провайдеры услуг Internet получают диапазоны адресов у подразделений NIC, а затем распределяют их между своими абонентами.
Номер узла в протоколе IP назначается независимо от локального адреса узла. Деление IP-адреса на поле номера сети и номера узла - гибкое, и граница между этими полями может устанавливаться весьма произвольно. Узел может входить в несколько IP-сетей. В этом случае узел должен иметь несколько IP-адресов, по числу сетевых связей. Таким образом IP-адрес характеризует не отдельный компьютер или маршрутизатор, а одно сетевое соединение.
* Символьный идентификатор-имя, например, SERV1.IBM.COM. Этот адрес назначается администратором и состоит из нескольких частей, например, имени машины, имени организации, имени домена. Такой адрес, называемый также DNS-именем, используется на прикладном уровне, например, в протоколах FTP или telnet.
Три основных класса IP-адресов
IP-адрес имеет длину 4 байта и обычно записывается в виде четырех чисел, представляющих значения каждого байта в десятичной форме, и разделенных точками, например:
128.10.2.30 - традиционная десятичная форма представления адреса,
10000000 00001010 00000010 00011110 - двоичная форма представления этого же адреса.
Адрес состоит из двух логических частей - номера сети и номера узла в сети. Какая часть адреса относится к номеру сети, а какая к номеру узла, определяется значениями первых битов адреса:
* Если адрес начинается с 0, то сеть относят к классу А, и номер сети занимает один байт, остальные 3 байта интерпретируются как номер узла в сети. Сети класса А имеют номера в диапазоне от 1 до 126. (Номер 0 не используется, а номер 127 зарезервирован для специальных целей, о чем будет сказано ниже.) В сетях класса А количество узлов должно быть больше 216 , но не превышать 224.
* Если первые два бита адреса равны 10, то сеть относится к классу В и является сетью средних размеров с числом узлов 28 - 216. В сетях класса В под адрес сети и под адрес узла отводится по 16 битов, то есть по 2 байта.
* Если адрес начинается с последовательности 110, то это сеть класса С с числом узлов не больше 28. Под адрес сети отводится 24 бита, а под адрес узла - 8 битов.
* Если адрес начинается с последовательности 1110, то он является адресом класса D и обозначает особый, групповой адрес - multicast. Если в пакете в качестве адреса назначения указан адрес класса D, то такой пакет должны получить все узлы, которым присвоен данный адрес.
* Если адрес начинается с последовательности 11110, то это адрес класса Е, он зарезервирован для будущих применений.
В таблице приведены диапазоны номеров сетей, соответствующих каждому классу сетей.
Класс | Наименьший адрес | Наибольший адрес
A _________01.0.0 ___________126.0.0.0
B _________128.0.0.0_________191.255.0.0
C _________192.0.1.0._________223.255.255.0
D _________224.0.0.0__________239.255.255.255
E _________240.0.0.0 _________247.255.255.255
Уже упоминавшаяся форма группового IP-адреса - multicast - означает, что данный пакет должен быть доставлен сразу нескольким узлам, которые образуют группу с номером, указанным в поле адреса. Узлы сами идентифицируют себя, то есть определяют, к какой из групп они относятся. Один и тот же узел может входить в несколько групп. Такие сообщения в отличие от широковещательных называются мультивещательными. Групповой адрес не делится на поля номера сети и узла и обрабатывается маршрутизатором особым образом.
В протоколе IP нет понятия широковещательности в том смысле, в котором оно используется в протоколах канального уровня локальных сетей, когда данные должны быть доставлены абсолютно всем узлам. Как ограниченный широковещательный IP-адрес, так и широковещательный IP-адрес имеют пределы распространения в интерсети - они ограничены либо сетью, к которой принадлежит узел - источник пакета, либо сетью, номер которой указан в адресе назначения. Поэтому деление сети с помощью маршрутизаторов на части локализует широковещательный шторм пределами одной из составляющих общую сеть частей просто потому, что нет способа адресовать пакет одновременно всем узлам всех сетей составной сети.
Отображение физических адресов на IP-адреса: протоколы ARP и RARP
В протоколе IP-адрес узла, то есть адрес компьютера или порта маршрутизатора, назначается произвольно администратором сети и прямо не связан с его локальным адресом, как это сделано, например, в протоколе IPX. Подход, используемый в IP, удобно использовать в крупных сетях и по причине его независимости от формата локального адреса, и по причине стабильности, так как в противном случае, при смене на компьютере сетевого адаптера это изменение должны бы были учитывать все адресаты всемирной сети Internet (в том случае, конечно, если сеть подключена к Internet'у).
Локальный адрес используется в протоколе IP только в пределах локальной сети при обмене данными между маршрутизатором и узлом этой сети. Маршрутизатор, получив пакет для узла одной из сетей, непосредственно подключенных к его портам, должен для передачи пакета сформировать кадр в соответствии с требованиями принятой в этой сети технологии и указать в нем локальный адрес узла, например его МАС-адрес. В пришедшем пакете этот адрес не указан, поэтому перед маршрутизатором встает задача поиска его по известному IP-адресу, который указан в пакете в качестве адреса назначения. С аналогичной задачей сталкивается и конечный узел, когда он хочет отправить пакет в удаленную сеть через маршрутизатор, подключенный к той же локальной сети, что и данный узел.
Для определения локального адреса по IP-адресу используется протокол разрешения адреса Address Resolution Protocol, ARP. Протокол ARP работает различным образом в зависимости от того, какой протокол канального уровня работает в данной сети - протокол локальной сети (Ethernet, Token Ring, FDDI) с возможностью широковещательного доступа одновременно ко всем узлам сети, или же протокол глобальной сети (X.25, frame relay), как правило не поддерживающий широковещательный доступ. Существует также протокол, решающий обратную задачу - нахождение IP-адреса по известному локальному адресу. Он называется реверсивный ARP - RARP (Reverse Address Resolution Protocol) и используется при старте бездисковых станций, не знающих в начальный момент своего IP-адреса, но знающих адрес своего сетевого адаптера.
В локальных сетях протокол ARP использует широковещательные кадры протокола канального уровня для поиска в сети узла с заданным IP-адресом.
Узел, которому нужно выполнить отображение IP-адреса на локальный адрес, формирует ARP запрос, вкладывает его в кадр протокола канального уровня, указывая в нем известный IP-адрес, и рассылает запрос широковещательно. Все узлы локальной сети получают ARP запрос и сравнивают указанный там IP-адрес с собственным. В случае их совпадения узел формирует ARP-ответ, в котором указывает свой IP-адрес и свой локальный адрес и отправляет его уже направленно, так как в ARP запросе отправитель указывает свой локальный адрес. ARP-запросы и ответы используют один и тот же формат пакета. Так как локальные адреса могут в различных типах сетей иметь различную длину, то формат пакета протокола ARP зависит от типа сети.
В поле типа сети для сетей Ethernet указывается значение 1. Поле типа протокола позволяет использовать пакеты ARP не только для протокола IP, но и для других сетевых протоколов.
Длина локального адреса для протокола Ethernet равна 6 байтам, а длина IP-адреса - 4 байтам. В поле операции для ARP запросов указывается значение 1 для протокола ARP и 2 для протокола RARP.
Узел, отправляющий ARP-запрос, заполняет в пакете все поля, кроме поля искомого локального адреса (для RARP-запроса не указывается искомый IP-адрес). Значение этого поля заполняется узлом, опознавшим свой IP-адрес.
В глобальных сетях администратору сети чаще всего приходится вручную формировать ARP-таблицы, в которых он задает, например, соответствие IP-адреса адресу узла сети X.25, который имеет смысл локального адреса. В последнее время наметилась тенденция автоматизации работы протокола ARP и в глобальных сетях. Для этой цели среди всех маршрутизаторов, подключенных к какой-либо глобальной сети, выделяется специальный маршрутизатор, который ведет ARP-таблицу для всех остальных узлов и маршрутизаторов этой сети.
При таком централизованном подходе для всех узлов и маршрутизаторов вручную нужно задать только IP-адрес и локальный адрес выделенного маршрутизатора. Затем каждый узел и маршрутизатор регистрирует свои адреса в выделенном маршрутизаторе, а при необходимости установления соответствия между IP-адресом и локальным адресом узел обращается к выделенному маршрутизатору с запросом и автоматически получает ответ без участия администратора.
[pagebreak]
Отображение символьных адресов на IP-адреса: служба DNS
DNS (Domain Name System) - это распределенная база данных, поддерживающая иерархическую систему имен для идентификации узлов в сети Internet. Служба DNS предназначена для автоматического поиска IP-адреса по известному символьному имени узла. Спецификация DNS определяется стандартами RFC 1034 и 1035. DNS требует статической конфигурации своих таблиц, отображающих имена компьютеров в IP-адрес.
Протокол DNS является служебным протоколом прикладного уровня. Этот протокол несимметричен - в нем определены DNS-серверы и DNS-клиенты. DNS-серверы хранят часть распределенной базы данных о соответствии символьных имен и IP-адресов. Эта база данных распределена по административным доменам сети Internet. Клиенты сервера DNS знают IP-адрес сервера DNS своего административного домена и по протоколу IP передают запрос, в котором сообщают известное символьное имя и просят вернуть соответствующий ему IP-адрес.
Если данные о запрошенном соответствии хранятся в базе данного DNS-сервера, то он сразу посылает ответ клиенту, если же нет - то он посылает запрос DNS-серверу другого домена, который может сам обработать запрос, либо передать его другому DNS-серверу. Все DNS-серверы соединены иерархически, в соответствии с иерархией доменов сети Internet. Клиент опрашивает эти серверы имен, пока не найдет нужные отображения. Этот процесс ускоряется из-за того, что серверы имен постоянно кэшируют информацию, предоставляемую по запросам. Клиентские компьютеры могут использовать в своей работе IP-адреса нескольких DNS-серверов, для повышения надежности своей работы.
База данных DNS имеет структуру дерева, называемого доменным пространством имен, в котором каждый домен (узел дерева) имеет имя и может содержать поддомены. Имя домена идентифицирует его положение в этой базе данных по отношению к родительскому домену, причем точки в имени отделяют части, соответствующие узлам домена.
Корень базы данных DNS управляется центром Internet Network Information Center. Домены верхнего уровня назначаются для каждой страны, а также на организационной основе. Имена этих доменов должны следовать международному стандарту ISO 3166. Для обозначения стран используются трехбуквенные и двухбуквенные аббревиатуры, а для различных типов организаций используются следующие аббревиатуры:
* com - коммерческие организации (например, microsoft.com);
* edu - образовательные (например, mit.edu);
* gov - правительственные организации (например, nsf.gov);
* org - некоммерческие организации (например, fidonet.org);
* net - организации, поддерживающие сети (например, nsf.net).
Каждый домен DNS администрируется отдельной организацией, которая обычно разбивает свой домен на поддомены и передает функции администрирования этих поддоменов другим организациям. Каждый домен имеет уникальное имя, а каждый из поддоменов имеет уникальное имя внутри своего домена. Имя домена может содержать до 63 символов. Каждый хост в сети Internet однозначно определяется своим полным доменным именем (fully qualified domain name, FQDN), которое включает имена всех доменов по направлению от хоста к корню.
Автоматизация процесса назначения IP-адресов узлам сети - протокол DHCP
Как уже было сказано, IP-адреса могут назначаться администратором сети вручную. Это представляет для администратора утомительную процедуру. Ситуация усложняется еще тем, что многие пользователи не обладают достаточными знаниями для того, чтобы конфигурировать свои компьютеры для работы в интерсети и должны поэтому полагаться на администраторов.
Протокол Dynamic Host Configuration Protocol (DHCP) был разработан для того, чтобы освободить администратора от этих проблем. Основным назначением DHCP является динамическое назначение IP-адресов. Однако, кроме динамического, DHCP может поддерживать и более простые способы ручного и автоматического статического назначения адресов.
В ручной процедуре назначения адресов активное участие принимает администратор, который предоставляет DHCP-серверу информацию о соответствии IP-адресов физическим адресам или другим идентификаторам клиентов. Эти адреса сообщаются клиентам в ответ на их запросы к DHCP-серверу.
При автоматическом статическом способе DHCP-сервер присваивает IP-адрес (и, возможно, другие параметры конфигурации клиента) из пула наличных IP-адресов без вмешательства оператора. Границы пула назначаемых адресов задает администратор при конфигурировании DHCP-сервера. Между идентификатором клиента и его IP-адресом по-прежнему, как и при ручном назначении, существует постоянное соответствие. Оно устанавливается в момент первичного назначения сервером DHCP IP-адреса клиенту. При всех последующих запросах сервер возвращает тот же самый IP-адрес.
При динамическом распределении адресов DHCP-сервер выдает адрес клиенту на ограниченное время, что дает возможность впоследствии повторно использовать IP-адреса другими компьютерами. Динамическое разделение адресов позволяет строить IP-сеть, количество узлов в которой намного превышает количество имеющихся в распоряжении администратора IP-адресов.
DHCP обеспечивает надежный и простой способ конфигурации сети TCP/IP, гарантируя отсутствие конфликтов адресов за счет централизованного управления их распределением. Администратор управляет процессом назначения адресов с помощью параметра "продолжительности аренды" (lease duration), которая определяет, как долго компьютер может использовать назначенный IP-адрес, перед тем как снова запросить его от сервера DHCP в аренду.
Примером работы протокола DHCP может служить ситуация, когда компьютер, являющийся клиентом DHCP, удаляется из подсети. При этом назначенный ему IP-адрес автоматически освобождается. Когда компьютер подключается к другой подсети, то ему автоматически назначается новый адрес. Ни пользователь, ни сетевой администратор не вмешиваются в этот процесс. Это свойство очень важно для мобильных пользователей.
Протокол DHCP использует модель клиент-сервер. Во время старта системы компьютер-клиент DHCP, находящийся в состоянии "инициализация", посылает сообщение discover (исследовать), которое широковещательно распространяется по локальной сети и передается всем DHCP-серверам частной интерсети. Каждый DHCP-сервер, получивший это сообщение, отвечает на него сообщением offer (предложение), которое содержит IP-адрес и конфигурационную информацию.
Компьютер-клиент DHCP переходит в состояние "выбор" и собирает конфигурационные предложения от DHCP-серверов. Затем он выбирает одно из этих предложений, переходит в состояние "запрос" и отправляет сообщение request (запрос) тому DHCP-серверу, чье предложение было выбрано.
Выбранный DHCP-сервер посылает сообщение DHCP-acknowledgment (подтверждение), содержащее тот же IP-адрес, который уже был послан ранее на стадии исследования, а также параметр аренды для этого адреса. Кроме того, DHCP-сервер посылает параметры сетевой конфигурации. После того, как клиент получит это подтверждение, он переходит в состояние "связь", находясь в котором он может принимать участие в работе сети TCP/IP. Компьютеры-клиенты, которые имеют локальные диски, сохраняют полученный адрес для использования при последующих стартах системы. При приближении момента истечения срока аренды адреса компьютер пытается обновить параметры аренды у DHCP-сервера, а если этот IP-адрес не может быть выделен снова, то ему возвращается другой IP-адрес.
В протоколе DHCP описывается несколько типов сообщений, которые используются для обнаружения и выбора DHCP-серверов, для запросов информации о конфигурации, для продления и досрочного прекращения лицензии на IP-адрес. Все эти операции направлены на то, чтобы освободить администратора сети от утомительных рутинных операций по конфигурированию сети.
Однако использование DHCP несет в себе и некоторые проблемы. Во-первых, это проблема согласования информационной адресной базы в службах DHCP и DNS. Как известно, DNS служит для преобразования символьных имен в IP-адреса. Если IP-адреса будут динамически изменятся сервером DHCP, то эти изменения необходимо также динамически вносить в базу данных сервера DNS. Хотя протокол динамического взаимодействия между службами DNS и DHCP уже реализован некоторыми фирмами (так называемая служба Dynamic DNS), стандарт на него пока не принят.
Во-вторых, нестабильность IP-адресов усложняет процесс управления сетью. Системы управления, основанные на протоколе SNMP, разработаны с расчетом на статичность IP-адресов. Аналогичные проблемы возникают и при конфигурировании фильтров маршрутизаторов, которые оперируют с IP-адресами.
Наконец, централизация процедуры назначения адресов снижает надежность системы: при отказе DHCP-сервера все его клиенты оказываются не в состоянии получить IP-адрес и другую информацию о конфигурации. Последствия такого отказа могут быть уменьшены путем использовании в сети нескольких серверов DHCP, каждый из которых имеет свой пул IP-адресов.
Задачей протокола транспортного уровня UDP (User Datagram Protocol) является передача данных между прикладными процессами без гарантий доставки, поэтому его пакеты могут быть потеряны, продублированы или прийти не в том порядке, в котором они были отправлены.
Зарезервированные и доступные порты UDP
В то время, как задачей сетевого уровня является передача данных между произвольными узлами сети, задача транспортного уровня заключается в передаче данных между любыми прикладными процессами, выполняющимися на любых узлах сети. Действительно, после того, как пакет средствами протокола IP доставлен в компьютер-получатель, данные необходимо направить конкретному процессу-получателю. Каждый компьютер может выполнять несколько процессов, более того, прикладной процесс тоже может иметь несколько точек входа, выступающих в качестве адреса назначения для пакетов данных.
Пакеты, поступающие на транспортный уровень, организуются операционной системой в виде множества очередей к точкам входа различных прикладных процессов. В терминологии TCP/IP такие системные очереди называются портами. Таким образом, адресом назначения, который используется на транспортном уровне, является идентификатор (номер) порта прикладного сервиса. Номер порта, задаваемый транспортным уровнем, в совокупности с номером сети и номером компьютера, задаваемыми сетевым уровнем, однозначно определяют прикладной процесс в сети.
Локальное присвоение номера порта заключается в том, что разработчик некоторого приложения просто связывает с ним любой доступный, произвольно выбранный числовой идентификатор, обращая внимание на то, чтобы он не входил в число зарезервированных номеров портов. В дальнейшем все удаленные запросы к данному приложению от других приложений должны адресоваться с указанием назначенного ему номера порта.
Мультиплексирование и демультиплексирование прикладных протоколов с помощью протокола UDP
Протокол UDP ведет для каждого порта две очереди: очередь пакетов, поступающих в данный порт из сети, и очередь пакетов, отправляемых данным портом в сеть.
Процедура обслуживания протоколом UDP запросов, поступающих от нескольких различных прикладных сервисов, называется мультиплексированием.
Распределение протоколом UDP поступающих от сетевого уровня пакетов между набором высокоуровневых сервисов, идентифицированных номерами портов, называется демультиплексированием.
Хотя к услугам протокола UDP может обратиться любое приложение, многие из них предпочитают иметь дело с другим, более сложным протоколом транспортного уровня TCP. Дело в том, что протокол UDP выступает простым посредником между сетевым уровнем и прикладными сервисами, и, в отличие от TCP, не берет на себя никаких функций по обеспечению надежности передачи. UDP является дейтаграммным протоколом, то есть он не устанавливает логического соединения, не нумерует и не упорядочивает пакеты данных.
С другой стороны, функциональная простота протокола UDP обуславливает простоту его алгоритма, компактность и высокое быстродействие. Поэтому те приложения, в которых реализован собственный, достаточно надежный, механизм обмена сообщениями, основанный на установлении соединения, предпочитают для непосредственной передачи данных по сети использовать менее надежные, но более быстрые средства транспортировки, в качестве которых по отношению к протоколу TCP и выступает протокол UDP. Протокол UDP может быть использован и в том случае, когда хорошее качество каналов связи обеспечивает достаточный уровень надежности и без применения дополнительных приемов типа установления логического соединения и квитирования передаваемых пакетов.
Формат сообщений UDP
Единица данных протокола UDP называется UDP-пакетом или пользовательской дейтаграммой (user datagram). UDP-пакет состоит из заголовка и поля данных, в котором размещается пакет прикладного уровня. Заголовок имеет простой формат и состоит из четырех двухбайтовых полей:
* UDP source port - номер порта процесса-отправителя,
* UDP destination port - номер порта процесса-получателя,
* UDP message length - длина UDP-пакета в байтах,
* UDP checksum - контрольная сумма UDP-пакета
Не все поля UDP-пакета обязательно должны быть заполнены. Если посылаемая дейтаграмма не предполагает ответа, то на месте адреса отправителя могут помещаться нули. Можно отказаться и от подсчета контрольной суммы, однако следует учесть, что протокол IP подсчитывает контрольную сумму только для заголовка IP-пакета, игнорируя поле данных.