В данной статье рассмотрены принципы, помогающие компилятору Delphi генерировать более оптимальный с точки зрения скорости код. Если Вы не хотите вникать в подробности, в конце статьи есть «свод правил», которые рекомендуется соблюдать при написании программ.
Компилятор Delphi относится к разряду оптимизирующих. Но насколько качественно проводится оптимизация? Как «помочь» компилятору создать более быстрый код? Давайте разберемся с этим на экспериментах.
Оптимизация константных выражений
Пример 1:
С точки зрения оптимизации код можно упростить еще на этапе компиляции до
Но написанный выше листинг преобразуется в
С одной стороны компилятор не «сообразил», что значение переменной «a» можно преобразовать в константу и сложить с другой константой (которая, заметим, подставлена именно как константа) на этапе компиляции, с другой стороны был применен весьма хитрый трюк с LEA (об этом ниже). Тем не менее, код
в любом случае быстрее и короче.
Пример 2:
Скомпилированный код будет выглядеть
А ведь значение, присвоенной переменной «а» являлось константой и наш пример можно было бы переписать как:
Пример 3:
После компиляции получаем:
Т.е. компилятор преобразовал код так, как он был написан, а ведь можно было бы просто записать:
Оптимизация алгебраических выражений
Пример 4:
После компиляции эти переменные будут удалены, причем с предупреждением
Пример 5:
Код скомпилируется как есть! Таким образом мы обманули компилятор псевдо использованием переменных. Delphi не исправляет нашей «кривости», поэтому эта задача ложится исключительно на плечи программиста.
Пример 6:
Данный код можно оптимизировать до
И этого Delphi за нас не сделает.
Пример 7:
В данном примере первую строчку можно безболезненно удалить, что Delphi делать умеет.
Пример 8:
В данном случае можно избавится от одной операции умножения, присвоив значение выражения a*b временной переменной. Анализ ассемблерного листинга показывает, что компилятор именно так и поступает. Тем не менее, поменяв второе подвыражение на ((b*a)>0), компилятор принимает выражения за разные и генерирует умножение для обоих случаев, не смотря на то, что результат одинаков.
Оптимизация арифметических операций
Сложение и вычитание
Применение инструкции LEA вместо ADD позволяет производить сумму 3х операндов (двух переменных и одной константы) за один такт. Трюк заключается в том представление ближних указателей эквивалентно их фактическому значению, поэтому результат, возвращенный LEA равен сумме ее операндов. При возможности Delphi производит такую замену.
Деление
Операция деления требует гораздо больше тактов процессора, нежели умножение, поэтому замена деления на умножение может значительно ускорить работу. Существуют формулы, позволяющие выполнять такое преобразование. Тем не менее, Delphi не использует такую оптимизацию. Деление на степень двойки можно заменять сдвигом вправо на n бит, но даже в этом случае получаем следующий код:
Здесь учитывается особенность самой операции div – округление в большую сторону. Поэтому, если можно пренебрегать округлением, используйте c:=a shr 1 вместо с:=a div 2.
Умножение
Умножение на степень двойки можно заменять сдвигами битов. Delphi заменяет умножение сдвигами при умножении на 4,8,16 итд. При умножении на 2 производится суммированием переменной с собой.
Умножать на 3,5,6,7,8,10 и т. д. можно и без операции умножения – расписав выражение по формуле (a shl n)+a, где n – показатель степени двойки. Например, при умножении на 3 n=1. Delphi при возможности прибегает к этому трюку. Заметим, операнд LEA умеет умножать регистр на 2,4,8, что также при возможности используется компилятором. Например, умножение на 3 преобразуется в инструкцию
Оптимизация case of
Анализ скомпилированного кода показывает, что Delphi проводит утрамбовку дерева. Т.е. значения case сортируются и выбор нужного элемента производится при помощи двоичного поиска.
В случае, если элементы case of выстраиваются в арифметической прогрессии, компилятор формирует таблицу переходов. Т.е. создается массив указателей с индексами элементов, поэтому выбор нужно элемента выполняется за одну итерацию независимо от количества элементов.
Оптимизация циклов
Разворачивание циклов – не производится. Разворачивание циклов весьма спорный момент в оптимизации, поэтому принять грамотное решение может только человек. Delphi не производит разворачивания ни больших, ни маленьких циклов.
Слияние циклов – не производится. Если два цикла, следующие друг за другом имеют одинаковые границы итерационной переменной, разумно оба цикла объединить в один.
Вынесение инвариантного кода за пределы цикла – не выносится. Наиболее распространенный недочет – условие цикла записывается как:
Delphi будет при каждой итерации вызывать метод count, вычитать из результата 1 и потом уже сверять. Настоятельно рекомендуется переписывать подобный код как
Весь код VCL написан с нарушением этого правила. Очевидно, что проще подобного рода оптимизацию встроить в компилятор, нежели переписывать VCL :)
Замена циклов с предусловием на циклы с постусловием – производится. Циклы с постусловием имеют главное преимущество над другими видами циклов (с предусловием и с условием в середине) – они содержат всего одно ветвление. Delphi производит такую замену.
Замена инкремента на декремент – не производится. Более того, даже декрементный цикл компилируется в неоптимальный код, т.к. не используется флаг ZF. Вместо этого происходит сравнивание значения регистра с 0.
Удаление ветвлений – не производится.
Вывод:
1. Не используйте переменные для временного хранения констант или обязательно объявляйте «магические» числа как const, либо подставляйте в код непосредственные значения
2. Неиспользуемыми объявлениями и присвоениями можно безболезненно пренебрегать – Delphi умеет их вычищать.
3. Внимательно следите за использованием переменных, в частности лишним присвоениям их значений друг другу. Такого рода оптимизации Delphi делать не умеет.
4. Используйте свернутые математические выражения. (например, (3*a - a) /2 упрощается до a). Delphi не умеет упрощать математические выражения. (Да и что говорить, даже MathCAD не всегда грамотно умеет делать такие преобразования).
5. Не используйте конструкции типа a:=10*sin(45*pi/180); Delphi не вычислит эту константу на этапе компиляции, напротив, будет послушно вызывать sin и pi по ходу выполнения программы! В случае, если угол является переменной, по крайней мере pi можно заменить константой 3,1415...
6. Delphi прекрасно справляется с выражениями, полностью составленных из констант – они вычисляются на этапе компиляции.
7. Внимательно следите за условиями и их границами. Компилятор Delphi не умеет обнаруживать заведомо ложных условий. Также он не умеет удалять заведомо лишние условия. Например, (a>0) and (a<15616) and (a<>0)
8. Если в условии несколько раз проверяется одно и тоже выражение, следите, чтобы оно было выражено во всех конструкциях одинаково. В противном случае скомпилированный код будет не оптимален. Например, if ((a*b)>0) and ((a*b)<1024) then... При перестановке во втором случае b*a смысл выражения не изменится, но код будет иметь уже на одну операцию умножения, а две. Можно временно присвоить проверяемое выражение временной переменной, а затем уже проверять полученное значение.
9. Сообщение «Combining signed and unsigned types – widened both operands» сообщает не только о потенциальной ошибке – также вследствие преобразования мы теряем производительность. Например, z – объявлена как ineteger. условие if z>$abcd6123 then z:= $abcd6123; несмотря на его правильность вызовет данное предупреждение. Сгенерированный код будет, выполнять преобразования величин до 64-х бит, и дальнейшее уже сравнение 64-х битных операндов. Если изменить тип z на cardinal, мы избавимся от предупреждения и получим 3 строки кода, вместо 8 !
10. Delphi умеет оптимизировать сложение, умножение и частично деление. При делении на степень двойки, если не важно округление до большего, рекомендуется пользоваться shr 1 вместо div 2.
11. В case of при возможности используйте элементы, расположенные в арифметической прогрессии. Тем не менее, даже при невыполнении данного условия мы получим качественный код после утрамбовки дерева.
12. Выносите инвариантный код за тело цикла. Наиболее частая ошибка – for i:=1 to length(str) do... Дело в том, что при каждой итерации будет вызываться функция length, что пагубно скажется на производительности. Рекомендуется длину строки заранее присвоить переменной. Также не включайте в тело цикла код, заведомо не зависящий от изменения итерационной переменной.
Сравнивая Delphi с компиляторами Visual C++, WATCOM, Borland C++ (тестирование данных компиляторов приведено в [1]) приходим к выводу, что Delphi по своим оптимизирующим свойствам аналогичен Borland C++ (а кто сомневался? ;) ). Учитывая, что Borland C++ по итогам сравнения оказался последним, делаем несложный вывод. Весьма печален и тот факт, что большинство кода VCL написано с точки зрения «красоты» кода, а не его оптимальности с точки зрения скорости. Например, не соблюдается правило 12.
Жесткие диски (винчестеры), как электромеханические устройства, являются одним из самых ненадежных компонентов современного компьютера. Несмотря на то, что в большинстве случаев срок службы последних соизмерим, и даже превосходит время их эксплуатации до момента морального устаревания и замены более новыми моделями, все же отдельные экземпляры выходят из строя в течение первых месяцев эксплуатации. Выход жесткого диска из строя - самое худшее, что может случиться с вашим компьютером, так как при этом часто необратимо теряются накопленные на нем данные. Если резервная копия по какой-то причине отсутствует, то суммарный ущерб от поломки заметно превышает номинальную стоимость современных винчестеров.
Многие фирмы, пользуясь ситуацией, предлагают свои услуги по восстановлению информации с вышедшего из строя накопителя. Очевидно, это обходится недешево и целесообразно только тогда, когда на диске находилось что-то действительно ценное. В противном случае легче просто смириться с потерей.
Ремонт жестких дисков требует специального оборудования и практически невозможен в домашних условиях. Так, например, для вскрытия контейнера необходима особо чистая от пыли комната. Казалось бы, положение безнадежно и нечего даже помышлять о восстановлении поломанного диска в домашних условиях. Но, к счастью, не все поломки настолько серьезны, и во многих случаях можно обойтись для ремонта подручными (а иногда чисто программными) средствами.
Один из самых частых отказов винчестеров фирмы western digital (а также и некоторых других) выглядит следующим образом: жесткий диск не опознается bios, а головки при этом отчетливо стучат. Скорее всего, по какой-то причине не работает блок термокалибровки, и устройство не может обеспечить нужный зазор между головкой и рабочей поверхностью "блина". Обычно это происходит при отклонении от нормального температурного режима эксплуатации, например, в зимнее время, когда жесткие диски в плохо отапливаемых помещениях "выстывают" за ночь (при температуре 18...210С жесткий диск часто может исправно функционировать и с испорченным механизмом термокалибровки). Попробуйте дать поработать винчестеру в течение нескольких часов, чтобы он прогрелся, при этом рано или поздно винчестер попадает в необходимый диапазон температур и работоспособность (возможно, временно) восстанавливается. Разумеется, первым делом нужно скопировать всю информацию, поскольку работоспособность такого диска уже не гарантируется. То же можно рекомендовать и в отношении устаревших моделей без термокалибровки; часто они оказываются зависимыми от температурного режима, и с ростом износа винчестера эта зависимость проявляется все сильнее.
Вторым по распространенности отказом является выход из строя модуля диагностики при полной исправности остальных компонентов. Как это ни покажется парадоксальным, но полностью рабочий винчестер не проходит диагностику. При этом в регистре ошибок (порт ox1f1 для первого жесткого диска) могут содержаться значения, приведенные ниже:
Диагностические ошибки
Бит Содержимое Источник ошибки
7 0 Ошибка master диска
1 Ошибка slave диска
2-0 011 Ошибка секторного буфера
100 Ошибка контрогльной суммы, не устранимая избыточным кодированием
101 Ошибка микроконтроллера
Разные biosы могут различно реагировать на такую ситуацию, но все варианты сводятся к одному - жесткий диск не определяется и не "чувствуется". Однако на уровне портов ввода/вывода устройство функционирует отлично. Заметим, что существуют такие материнские платы (особенно среди новых моделей), которые, обнаружив ошибку микроконтроллера винчестера, просто отключают питание жесткого диска. Несложно написать для испорченного таким образом винчестера драйвер, который обеспечит работу с диском через высокоуровневый интерфейс int 0x13. Например, следующая процедура обеспечивает посекторное чтение и запись через порты ввода/вывода для первого жесткого диска в chs режиме.
lba mode для упрощения понимания не поддерживается. Необходимую техническую информацию обычно можно найти на сайте производителя вашего жесткого диска.
Этот фрагмент может служить вполне работоспособным ядром для драйвера 16-ти разрядного режима. Для упрощения понимания не включена задержка после каждого обращения к порту. В зависимости от соотношений скорости вашего процессора и контроллера диска эта задержка может и не потребоваться (в противном случае рекомендуется читать регистр статуса ox1f7, дожидаясь готовности контроллера). При этом не следует спешить с заменой такого жесткого диска на новый, с подобной неисправностью можно успешно работать не год и не два. Последнее, правда, лишь при условии, что все используемое программное обеспечение не будет конфликтовать с нестандартным драйвером. Писать драйвер, скорее всего, придется вам самому, поскольку не известно ни одной коммерческой разработки в этом направлении, а все любительские разработки выполнены в основном "под себя". Так, например, драйвер от kpnc hddfix3a поддерживает только винчестеры primary master до пятисот мегабайт и не работает в среде windows 95 (разработан на год раньше ее появления).
Более легкий, но не всегда осуществимый путь - запретить тестирование жестких дисков biosом или, по крайней мере, игнорировать результаты такового. Как это осуществить, можно прочесть в руководстве на материнскую плату (или обратиться за помощью к службе технической поддержки фирмы-производителя, поскольку в руководствах пользователя такие тонкости нередко опускают). Например, попробуйте установить "halt on" в "never" или перезаписать flach bios, модифицировав его так, чтобы тот не выполнял подобную проверку. Если Вам повезет, жесткий диск заработает! Однако иногда все же происходят и аппаратные отказы. Например, у винчестеров фирм samsung и conner отмечены случаи отказа модуля трансляции мультисекторного чтения/записи. Если это не будет обнаружено внутренним тестом устройства, то такой жесткий диск вызовет зависание операционной системы на стадии ее загрузки. Для предотвращения этого достаточно добавить в config.sys ключ multi-track=off и отключить аналогичные опции в blose. При этом, проиграв в скорости, все же можно заставить жесткий диск сносно работать. Понятно, что эксплуатировать восстановленный таким образом диск длительное время нерационально по причине потери быстродействия. Лучше приобрести новый, на который и скопировать всю информацию. С другой стороны, такой жесткий диск все же остается полностью рабочим и успешно может служить, например, в качестве резервного.
На том же connere эпизодически выходит из строя блок управления позиционированием головок, так что последние уже не могут удержаться на дорожке и при обращении к следующему сектору немного "уползают". При этом считывание на выходе дает ошибочную информацию, а запись необратимо затирает соседние сектора. Бороться с этим можно позиционированием головки перед каждой операцией записи/чтения, обрабатывая за один проход не более сектора. Понятно, что для этого необходимо вновь садиться за написание собственного драйвера. К счастью, он достаточно простой (можно использовать аппаратное прерывание от жесткого диска int 0x76 irq14, вставив в тело обработчика команду сброса контроллера. В данном случае подразумевается, что контроллер используемого жесткого диска проводит рекалибровку головки во время операции сброса. Некоторые модели этого не делают. В этом случае придется прибегнуть к операции позиционирования головки (функция ОхС дискового сервиса 0x13). Первые модели от вторых можно отличить временем, требуемым на сброс контроллера. Понятно, что электроника "сбрасывается" мгновенно, а позиционирование головки требует хоть и не большого, но все же заметного времени. Современные модели с поддержкой кэширования этого часто не делают или "откладывают" операции с головкой до первого к ней обращения. Разумеется, в этом случае кэширование придется выключить. Большинство bios позволяет это делать без труда, и нет нужды программировать контроллер самостоятельно. В другом случае вышедший из строя блок позиционирования (трансляции) подводит головки вовсе не к тому сектору, который запрашивался. Например, головки могли физически сместиться с оси, "уползая" в сторону. Разумеется, этот дефект можно скорректировать программно, достаточно проанализировать ситуацию и логику искажения трансляции. Многие модели позиционируют головку, используя разметку диска, что страхует от подобных поломок (к сожалению, сейчас от такого подхода большинство фирм отказались, выигрывая в скорости).
Конечно, все описанные программные подходы в действительности не устраняют неисправность, а только позволяют скопировать с казалось бы уже нерабочего винчестера ценные и еще не сохраненные данные. При этом ни к чему писать универсальный драйвер для win32 и защищенного режима. Вполне можно ограничиться dos-режимом. Для копирования файлов последнего должно оказаться вполне достаточно, конечно за исключением тех случаев, когда диск был отформатирован под ntsf или другую, не поддерживаемую ms-dos, систему. К счастью, для многих из них есть драйверы, которые позволяют "видеть" подобные разделы даже из "голой" ms-dos. В крайнем случае, можно ограничиться посекторным копированием на винчестер точно такой же топологии. При этом совершенно не имеет значения используемая файловая система и установленная операционная система.
Посекторно скопировать диск на винчестер с иной топологией трудно, но возможно. Дело в том, что многие современные контроллеры жестких дисков позволяют пользователю менять трансляцию произвольным образом. Для этого необходимо приобрести винчестер, поддерживающий lba-режим (а какой из современных жестких дисков его не поддерживает?). При этом он может быть даже большего объема, нежели исходный, но это никак не помешает копированию. Другой вопрос, что без переразбиения скопированный таким образом диск не "почувствует" дополнительных дорожек и следует запустить norton disk doctor, который устранит эту проблему.
Достаточно часто нарушается вычисление зон предком-пенсации. Дело в том, что плотность записи на разных цилиндрах не одинакова, так как линейная скорость растет от центра диска к периферии. Разумеется, гораздо легче постепенно уплотнять записи, нежели искать некий усредненный компромисс. На всех существующих моделях плотность записи изменяется скачкообразно и на последних моделях программно доступна через соответствующие регистры контроллера. При этом значения, выставленные в bios, практически любой жесткий диск (с интерфейсом ide) просто игнорирует. Предыдущие модели не имели с этим проблем, и только винчестеры, выпущенные в течение последних двух лет, склонны к подобным поломкам. Скорее, даже не к поломкам, а к сбоям, в результате которых искажается хранимая где-то в недрах жесткого диска информация. Если контроллер позволяет ее программно корректировать, то считайте, что ваш жесткий диск спасен. Конечно, придется пройти сквозь мучительные попытки угадать оригинальные значения, однако это можно делать и автоматическим перебором до тех пор, пока винчестер не начнет без ошибок читать очередную зону. Помните, что любая запись на диск способна нарушить низкоуровневую разметку винчестера, после чего последний восстановлению не подлежит и его останется только выкинуть. Производите только чтение секторов!
Если же контроллер не позволяет программно управлять предкомпенсацией, то еще не все потеряно. Попробуйте перед каждым обращением делать сброс контроллера, а точнее, его рекалибровку (команда ixh). В некоторых случаях это срабатывает, поскольку с целью оптимизации скорости обмена предкомпенсацией обычно управляет не один блок. И, кроме того, иногда контроллер кэша не учитывает предкомпенсацию, а его сброс реализует последнюю аппаратно. К сожалению, это по большей части догадки и результаты экспериментов автора, так как техническая документация фирм-производителей по этому поводу не отличается полнотой, а местами содержит противоречия. Можно испытать и другой способ - попробовать перезаписать микрокод контроллера (команда 92h). Конечно, это доступно только для специалистов очень высокого класса, но ведь доступно! Заметим, что не все контроллеры поддерживают такую операцию. С другой стороны, это и хорошо, так как уменьшает вероятность сбоя и не дает некорректно работающим программам (вирусам в том числе) испортить дорогое устройство. Жесткие диски от samsung обладают еще одной неприятной особенностью - часто при подключении шлейфа "на лету", при включенном питании, они перестают работать. Внешне это выглядит так: индикатор обращения к диску постоянно горит, но диск даже не определяется biosom, или определяется, но все равно не работает. Близкое рассмотрение показывает, что на шине пропадает сигнал готовности устройства. В остальном контроллер остается неповрежденным. Разумеется, если не обращать внимание на отсутствие сигнала готовности, то с устройством можно общаться, делая вручную необходимые задержки (поскольку физическую готовность устройства уже узнать не представляется возможным, приходится делать задержки с изрядным запасом времени). При этом, к сожалению, придется отказаться от dma-mode (а уж тем более ultra-dma) и ограничиться pio 1 (с небольшим риском - pio 2) режимом. Конечно, писать соответствующий драйвер вам придется опять самостоятельно. Разумеется, скорость обмена в режиме pio 1 по сегодняшним меркам совершенно неудовлетворительна и не годится ни для чего другого, кроме как копирования информации со старого на новый винчестер, но некоторые "нечистоплотные" продавцы компьютерной техники как-то ухитряются устанавливать подобные экземпляры на продаваемые машины. Будьте осторожны! Учитывая, что написание подобных драйверов для win32 - трудоемкое занятие, большинство ограничивается поддержкой одной лишь ms-dos, и вовсе не факт, что компьютер, демонстрирующий загрузку win95, содержит исправный, а не реанимированный подобным образом жесткий диск.
У жестких дисков фирмы samsung при подключении "налету" может появляться другой неприятный дефект - при запросах на чтение контроллер периодически "повисает" и не завершает операцию. В результате "замирает" вся операционная система (впрочем, windows nt с этим справляется, но, вероятно, не всегда). На первый взгляд может показаться, что с этого винчестера несложно скопировать ценные файлы, но при попытке выполнить это выясняется, что диск "зависает" все чаще и чаще и копирование растягивается до бесконечности. Однако если выполнить сброс контроллера, то можно будет повторить операцию. Это можно сделать аппарат -но, подпаяв одну кнопку на линию сброса и статуса. Последнее нужно для указания на ошибочную ситуацию, чтобы операционная система повторила незавершенную операцию. Если этого не сделать, то часть секторов не будет реально прочитана (записана). Или можно выполнять сброс автоматически, например, по таймеру. Чтобы не сталкиваться с подобной ситуацией, никогда не следует подсоединять/отсоединять винчестер при включенном питании. Очень часто это приводит к подобным ошибкам, хотя производители других фирм, по-видимому, как-то от этого все же защищаются, ибо аналогичной ситуации у них практически не встречается. Все же не стоит искушать судьбу... От аппаратных ошибок теперь перейдем к дефектам поверхности. Заметим сразу, что последнее встречается гораздо чаще и проявляется намного коварнее. Обычно это ситуация, в которой мало что можно предпринять. Но достичь главной цели - спасти как можно больше уцелевших данных - довольно часто удается. Возьмем такую типичную ситуацию как ошибка чтения сектора. Маловероятно, чтобы сектор был разрушен целиком. Чаще всего "сыплется" только какая-то его часть, а все остальные данные остаются неискаженными. Существуют контроллеры двух типов. Первые, обнаружив расхождение контрольной суммы считанного сектора, все же оставляют прочитанные данные в буфере и позволяют их извлечь оттуда, проигнорировав ошибку чтения. Вторые либо очищают буфер, либо просто не сбрасывают внутренний кэш, в результате чего все равно прочитать буфер невозможно. На практике обычно встречаются последние. При этом сброс кэша можно инициировать серией запросов без считывания полученных данных. Кэш при этом переполняется, и наиболее старые данные будут вытолкнуты в буфер. Остается их только прочесть. Конечно,-это крайне медленно, но, к сожалению, универсальной команды сброса кэша не существует. Разные разработчики реализуют это по-своему (впрочем, иногда это можно найти в документации на чипы, используемые в контроллере). western digital сообщает в техническом руководстве что при длинном чтении сектора без повтора контроль сектора не выполняется и он будет-таки целиком помещен в буфер. Кстати, так и должно быть по стандарту. Увы, остальные фирмы от него часто отклоняются по разным соображениям. Остается определить, какие же из прочитанных данных достоверные, а какие нет (если этого не видно "визуально" - например, в случае текстового или графического файлов)? Разумеется, в подобных рамках задача кажется неразрешимой, но это не совсем так. Дело в том, что можно произвести не только короткое, но и длинное чтение (ox22h req ploin long with retry), для чего можно использовать следующую процедуру. При этом кроме собственно данных читаются также и корректирующие коды. Автоматическая коррекция не выполняется (хотя некоторые контроллеры это реализуют аппаратно и не могут отключить автокоррекцию; в документации этот момент, кстати, не уточняется). Как правило, используются корректирующие коды Рида-Соломона, хотя последнее не обязательно. Математические законы позволяют не только определить место возникновения сбоя, но и даже восстановить несколько бит. При больших разрушениях можно определить только место сбоя, но достоверно восстановить информацию не удается.
Модуляция при записи такова, что все биты, стоящие справа от сбойного, уже не достоверны. Точнее, не все, а только в пределах одного пакета. Обычно за один раз записывается от 3 до 9 бит (необходимо уточнить у конкретного производителя) и содержимое остальных пакетов, как правило, остается достоверным. Самое интересное, что зачастую сбойный пакет можно восстановить методом перебора! При этом можно даже рассчитать, сколько вариантов должно получиться. Учитывая хорошую степень "рассеяния" корректирующих кодов можно сказать, что не очень много. И таким образом можно восстановить казалось бы безнадежно испорченные сектора, а вместе с ними и файлы, расположенные "поверх" последних.
Выше были перечислены наиболее типичные случаи отказов жестких дисков, которые поддавались чисто программному восстановлению если уж не винчестера, то хотя бы хранимых на нем данных. Разумеется, что иногда жесткий диск выходит из строя полностью (например, при неправильно подключенном питании, скачках напряжения) от вибрации или ударов, а то и просто из-за откровенного заводского брака. Есть один старый проверенный способ - найти жесткий диск такой же точно модели и заменить электронную плату. К сожалению, последнее из-за ряда конструктивных особенностей все реже и реже бывает возможно, а уж дефекты поверхности этот способ и вовсе бессилен вылечить. Поэтому, берегите свой жесткий диск и почаще проводите резервное копирование. Помните, что самое дорогое это не компьютер, а хранимая на нем информация!
я знал о борьбе Яндекса с белыми каталогами, но если честно - не подозревал о масштабах этой борьбы… А столкнулся я с этой проблемой (а именно “проблемой белых каталогов”) в связи с созданием нескольких новых сайтов и желанием на старте “нахаляву” немного им поднять ТИЦ. Нахаляву - то есть просто регистрируя новый сайт в белых каталогах, работа конечно крайне скучная и нудная, но простая и не требует затрат.
Для чего существуют белые каталоги? Думаю, не открою секрета, если скажу - для поднятия ТИЦ (то есть для поисковиков, а не для людей как бы, вот поэтому Яндекс и банит белые каталоги, особенно те, которые уж очень явно сделаны не для людей).
А чтоб белый каталог был полезен для этого самого поднятия, прямую ссылку с него должен увидеть Яндекс. А если каталог отсутствует в индексе Яндекса, зачем в нем регистрироваться? Есть, конечно, еще и другие поисковики, тот же Гугле, Рамблер, но все-таки большинство усилий SEO направлено именно на Яндекс.
С учетом всего этого я внимательно проверял каждый каталог или рейтинг перед регистрацией, чтобы не выполнять напрасную работу. И вот к какому тоскливому выводу я пришел - большинство подборок и списков белых каталогов оказались абсолютно бесполезны! Беру из списка первые 10-15 каталогов и проверяю такие параметры - ТИЦ, Google PR, наличие в индексе Яндекса и Гугла (кол-во страниц в выдаче).
Итог множества проверок такой: примерно 10-20% каталогов вообще мертвы, то есть просто давно заброшены и не работают, 70-80% имеют ТИЦ, какой-то PR и проиндексированы Google, но! в выдаче Яндекса либо 0 страниц, либо 1-2 - вот и приплыли… и только в среднем 1 из 10 каталогов жив и здравствует… Но это тоже зависит от подборки - в некоторых списках из первых 30-40 каталогов я не находил ни одного рабочего и полезного каталога (не “нулевки”).
Совершенно забавные данные я получил по одному из каталогов (видно, что ранее он был довольно продвинут) - каталог фигурировал под названием “Самый большой интернет каталог”, так вот в индексе Google оказалось 237000 страниц этого каталога! А в Яндексе - 0 (ноль), но Яндекс ТИЦ равен 375 - не так уж плохо, зато Google PR - ноль! вот с таким я столкнулся первый раз, но это уже за торговлю ссылками.
Попадались каталоги с ТИЦ более 1000, но отсутствующие в выдаче Яндекса.
Буквально сегодня видел (и не раз) рекламу в Бегуне - “Регистрируем в 4500 каталогов! Быстрая раскрутка, недорого! Вы сразу получите PR3 и ТИЦ +30?. Вдумываясь в текст, понимаешь истинный смысл - их 4.5 тыщи каталогов дадут вам прирост ТИЦ всего 30! ну а PR3 вообще никак не связано с регистрацией в каталогах - это достигается просто грамотной внутренней перелинковкой сайта, к примеру два наших сайта, запущенные в 2007 году, при первом же апе Google получили PR3, бэклинков к этому времени почти не было, ТИЦ тоже был почти нулевой. Хотя сейчас вроде Google ужесточает раздачу PR, теперь возможно получить “тройку” сразу будет непросто, по крайней мере многие сайты во время прошлого апдейта Google PR получили падение ПР, но опять-таки - большинство из них имели продажные ссылки.
В общем, делаем выводы - стоит ли регистрироваться в белых каталогах, стоит ли пользоваться услугами “оптовых регистраторов”, и как выбирать каталоги для регистрации. Регистрироваться вслепую - напрасно тратить время.
Для программирования расширенных хранимых процедур Microsoft предоставляет ODS (Open Data Service) API набор макросов и функций, используемых для построения серверных приложений позволяющих расширить функциональность MS SQL Server 2000.
Расширенные хранимые процедуры - это обычные функции написанные на С/C++ с применением ODS API и WIN32 API, оформленные в виде библиотеки динамической компоновки (dll) и призванные, как я уже говорил, расширять функциональность SQL сервера. ODS API предоставляет разработчику богатый набор функций позволяющих передавать данные клиенту, полученные от любых внешних источников данных (data source) в виде обычных наборов записей (record set). Так же, extended stored procedure может возвращать значения через переданный ей параметр (OUTPUT parametr).
Как работают расширенные хранимые процедуры.
* Когда клиентское приложение вызывает расширенную хранимую процедуру, запрос передаётся в TDS формате через сетевую библиотеку Net-Libraries и Open Data Service ядру MS SQL SERVER.
* SQL Sever находит dll библиотеку ассоциированную с именем расширенной хранимой процедуры и загружает её в свой контекст, если она не была загружена туда ранее, и вызывает расширенную хранимую процедуру, реализованную как функцию внутри dll.
* Расширенная хранимая процедура выполняет на сервере необходимые ей действия и передаёт набор результатов клиентскому приложению, используя сервис предоставляемый ODS API.
Особенности расширенных хранимых процедур.
* Расширенные хранимые процедуры - это функции выполняющиеся в адресном пространстве MS SQL Server и в контексте безопасности учётной записи под которой запущена служба MS SQL Server;
* После того, как dll библиотека с расширенными хранимыми процедурами была загружена в память, она остаётся там до тех пор, пока SQL Server не будет остановлен, или пока администратор не выгрузит её принудительно, используя команду :
DBCC DLL_name (FREE).
* Расширенная хранимая процедура запускается на выполнение так же, как и обычная хранимая процедура:
EXECUTE xp_extendedProcName @param1, @param2 OUTPUT
@param1 входной параметр
@param2 входной/выходной параметр
Внимание!
Так как расширенные хранимые процедуры выполняются в адресном пространстве процесса службы MS SQL Server, любые критические ошибки, возникающие в их работе, могут вывести из строя ядро сервера, поэтому рекомендуется тщательно протестировать Вашу DLL перед установкой на рабочий сервер.
Создание расширенных хранимых процедур.
Расширенная хранимая процедура эта функция имеющая следующий прототип:
Параметр pSrvProc указатель на SRVPROC структуру, которая является описателем (handle) каждого конкретного клиентского подключения. Поля этой структуры недокументированны и содеражат информацию, которую библиотека ODS использует для управления коммуникацией и данными между серверным приложением (Open Data Services server application) и клиентом. В любом случае, Вам не потребуется обращаться к этой структуре и тем более нельзя модифицоравать её. Этот параметр требуется указывать при вызове любой функции ODS API, поэтому в дальнейшем я небуду останавливаться на его описании.
Использование префикса xp_ необязательно, однако существует соглашение начинать имя расширенной хранимой процедуры именно так, чтобы подчеркнуть отличие от обычной хранимой процедуры, имена которых, как Вы знаете, принято начинать с префикса sp_.
Так же следует помнить, что имена расширенных хранимых процедур чувствительны к регистру. Не забывайте об этом, когда будете вызвать расширенную хранимую процедуру, иначе вместо ожидаемого результата, Вы получите сообщение об ошибке.
Если Вам необходимо написать код инициализации/деинициализации dll, используйте для этого стандартную функцию DllMain(). Если у Вас нет такой необходимости, и вы не хотите писать DLLMain(), то компилятор соберёт свою версию функции DLLMain(), которая ничего не делает, а просто возвращает TRUE. Все функции, вызываемые из dll (т.е. расширенные хранимые процедуры) должны быть объявлены, как экспортируемые. Если Вы пишете на MS Visual C++ используйте директиву __declspec(dllexport). Если Ваш компилятор не поддерживает эту директиву, опишите экспортируемую функцию в секции EXPORTS в DEF файле.
Итак, для создания проекта, нам понадобятся следующие файлы:
* Srv.h заголовочный файл, содержит описание функций и макросов ODS API;
* Opends60.lib файл импорта библиотеки Opends60.dll, которая и реализует весь сервис предоставляемый ODS API.
Microsoft настоятельно рекомендует, чтобы все DLL библиотеки реализующие расширенные хранимые процедуры экспортировали функцию:
Когда MS SQL Server загружает DLL c extended stored procedure, он первым делом вызывает эту функцию, чтобы получить информацию о версии используемой библиотеки.
Для написания своей первой extended stored procedure, Вам понадобится установить на свой компьютер:
- MS SQL Server 2000 любой редакции (у меня стоит Personal Edition). В процесе инсталляции обязательно выберите опцию source sample
- MS Visual C++ (я использовал версию 7.0 ), но точно знаю подойдёт и 6.0
Установка SQL Server -a нужна для тестирования и отладки Вашей DLL. Возможна и отладка по сети, но я этого никогда не делал, и поэтому установил всё на свой локальный диск. В поставку Microsoft Visual C++ 7.0 редакции Interprise Edition входит мастер Extended Stored Procedure DLL Wizard. В принципе, ничего сверх естественного он не делает, а только генерирует заготовку шаблон расширенной хранимой процедуры. Если Вам нравятся мастера, можете использовать его. Я же предпочитаю делать всё ручками, и поэтому не буду рассматривать этот случай.
Теперь к делу:
- Запустите Visual C++ и создайте новый проект - Win32 Dynamic Link Library.
- Включите в проект заголовочный файл - #include <srv.h>;
- Зайдите в меню Tools => Options и добавьте пути поиска include и library файлов. Если , при установке MS SQL Server, Вы ничего не меняли, то задайте:
- C:Program FilesMicrosoft SQL Server80ToolsDevToolsInclude для заголовочных файлов;
- C:Program FilesMicrosoft SQL Server80ToolsDevToolsLib для библиотечных файлов.
- Укажите имя библиотечного файла opends60.lib в опциях линкера.
На этом подготовительный этап закончен, можно приступать к написанию своей первой extended stored procedure.
Постановка задачи.
Прежде чем приступать к программированию, необходимо чётко представлять с чего начать, какой должен быть конечный результат, и каким способом его добиться. Итак, вот нам техническое задание:
Разработать расширенную хранимую процедуру для MS SQL Server 2000, которая получает полный список пользователей зарегистрированных в домене, и возвращает его клиенту в виде стандартного набора записей (record set). В качестве первого входного параметра функция получает имя сервера содержащего базу данных каталога (Active Directory), т.е имя контролера домена. Если этот параметр равен NULL, тогда необходимо передать клиенту список локальных групп. Второй параметр будет использоваться extended stored procedure для возварата значения результата успешной/неуспешной работы (OUTPUT параметр). Если, расширенная хранимая процедура выполнена успешно, тогда необходимо передать количество записей возвращённых в клиентский record set , если в процессе работы не удалось получить требуемую информацию, значение второго параметра необходимо установить в -1, как признак неуспешного завершения.
.
А вот шаблон расширенной хранимой процедуры, который нам предстоит наполнить содержанием:
Работа с входными параметрами
В этой главе я не хочу рассеивать Ваше внимание на посторонних вещах, а хочу сосредоточить его на работе с переданными в расширенную хранимую процедуру параметрами. Поэтуму мы несколько упростим наше техническое задание и разработаем тольку ту его часть, которая работает с входными параметрами. Но сначал не много теории
Первое действие, которое должна выполнить наша exteneded stored procedure , - получить параметры, которые были переданы ей при вызове. Следуя приведённому выше алгоритму нам необходимо выполнить следующие действия:
- Определить кол-во переданных параметров;
- Убедится, что переданные параметры имеют верный тип данных;
- Убедиться, что указанный OUTPUT параметр имеет достаточную длину, для сохранения в нём значения возвращаемого нашей extended stored procedure.
- Получить переданные параметры;
- Установить значения выходного параметра как результат успешного/неуспешного завершения работы extended stored procedure .
Теперь рассмотрим подробно каждый пункт:
Определение количества переданных в расширенную хранимую процедуру параметров
Для получения количества переданных параметров необходимо использовать функцию:
.
При успешном завершении функция возвращает количество переданных в расширенную хранимую процедуру параметров. Если extended stored procedure была вызвана без параметров - srv_rpcparams ввернёт -1. Параметры могут быть переданы по имени или по позиции (unnamed). В любом случае, нельзя смешивать эти два способа. Попытка передачи в функцию входных параметров по имени и по позиции одновременно - приведёт к возникновению ошибки, и srv_rpcparams вернёт 0 .
[pagebreak]
Определение типа данных и длины переданых параметров
Для получения информации о типе и длине переданных параметров Microsoft рекомендует использовать функцию srv_paramifo. Эта универсальная функция заменяет вызовы srv_paramtype, srv_paramlen, srv_parammaxlen, которые теперь считаются устаревшими. Вот её прототип:
.
.
.
.
.
.
.
.
.
.
pByte - указатель на переменную получающую информацию о типе входного параметра;
pbType задаёт порядковый номер параметра. Номер первого параметра начинается с 1.
pcbMaxLen - указатель на переменную, в которую функция заносит максимальное значение длины параметра. Это значение обусловлено конкретным типом данных переданного параметра, его мы и будем использовать, чтобы убедиться втом, что OUTPUT параметр имеет достаточную длину для сохранения передаваемых данных.
pcbActualLen указатель на реальную длину параметра переданного в расширенную хранимую процедуру при вызове. Если передаваемый параметр имеет нулевую длину, а флаг pfNull устанавлен в FALSE то (* pcbActualLen) ==0.
pbData - указатель на буфер, память для которого должна быть выделена перед вызовом srv_paraminfo. В этом буфере функция размещает полученные от extended stored procedure входные параметры. Размер буфера в байтах равен значению pcbMaxLen. Если этот параметр установлен в NULL, данные в буфер не записываются, но функция корректно возвращает значения *pbType, *pcbMaxLen, *pcbActualLen, *pfNull. Поэтому вызывать srv_paraminfo нужно дважды: сначала с pbData=NULL, потом, выделив необходимый размер памяти под буфер равный pcbActualLen, вызвать srv_paraminfo второй раз, передав в pbData указатель на выделенный блок памяти.
pfNull указатель на NULL-флаг. srv_paraminfo устанавливает его в TRUE, если значение входного параметра равно NULL.
Проверка, является ли второй параметр OUTPUT параметром.
Функция srv_paramstatus() предназначена для определения статуса переданного параметра:
.
.
.
.
.
n - номер параметра переданного в расширенную хранимую процедуру при вызове. Напомню: параметры всегда нумеруются с 1.
Для возврата значения, srv_paramstatus использует нулевой бит. Если он установлен в 1 переданный параметр является OUTPUT параметром, если в 0 обычным параметром, переданным по значению. Если, exteneded stored procedure была вызвана без параметров, функция вернёт -1.
Установка значения выходного параметра.
Выходному параметру, переданному в расширеную хранимую можно передать значение используя функцию srv_paramsetoutput. Эта новая функция заменяет вызов функции srv_paramset, которая теперь считается устаревашай, т.к. не поддерживает новые типы данных введённые в ODS API и данные нулевой длины.
.
.
.
.
.
.
.
.
n - порядковый номер параметра, которому будет присвоено новое значение. Это должен быть OUTPUT параметр.
pbData указатель на буфер с данными, которые будут посланы клиенту для установки значения выходного параметра.
cbLen длина буфера посылаемых данных. Если тип данных переданного OUTPUT параметра определяет данные постоянной длины и не разрешает хранение значения NULL (например SRVBIT или SRVINT1), то функция игнорирует параметр cbLen. Значение cbLen=0 указывает на данные нулевой длины, при этом парметр fNull должен быть установлен в FALSE.
fNull установите этот его в TRUE, если возвращаемому параметру необходимо присвоить значение NULL, при этом значение cbLen должно быть равно 0, иначе функция завершится с ошибкой. Во всех остальных случаях fNull=FALSE.
В случае успешного завершения функция возвращает SUCCEED. Если возвращаемое значение равно FAIL, значит вызов был неудачным. Всё просто и понятно
Теперь мы достаточно знаем, для того чтобы написать свою первую расширенную хранимую процедуру, которая будет возвращать значение через переданный ей параметр.Пусть, по сложившейся традиции, это будет строка Hello world! Отладочну версию примера можно скачать здесь.
. Не рассмотренными остались функции srv_sendmsg и srv_senddone. Функция srv_sendmsg используется для посылки сообщений клиенту. Вот её прототип:
msgtype определяет тип посылаемого клиенту сообщения. Константа SRV_MSG_INFO обозначает информационное сообщение, а SRV_MSG_ERROR сообщение об ошибке;
msgnum номер сообщения;
class - степень тяжести возникшей ошибки. Информационные сообщения имеют значение степени тяжести меньшее или равное 10;
state номер состояния ошибки для текущего сообщения. Этот параметр предоставляет информацию о контексте возникшей ошибки. Допустимые значения лежат в диапазоне от 0 до 127;
rpcname в настоящее время не используется;
rpcnamelen - в настоящее время не используется;
linenum здесь можно указать номер строки исходного кода. По этому значению, в последствие будет легко установить в каком месте возникла ошибка. Если Вы не хотите использовать эту возможность, тогда установите linenum в 0;
message указатель на строку посылаемую клиенту;
msglen определяет длину в байтах строки сообщения. Если это строка заканчивается нулевым символом, то значение этого параметра можно установить равным SRV_NULLTERM.
Возвращаемыме значения:
- в случае успеха SUCCEED
- при неудаче FAIL.
В процессе работы расширенная хранимая процедура должна регулярно сообщать клиентскому приложению свой статус, т.е. посылать сообщения о выполненных действиях. Для этого и предназначена функция srv_senddone:
status - статус флаг. Значение этого параметра можно задавать использую логические операторы AND и OR для комбинирования констант приведённых в таблице:
Status flag Описание
SRV_DONE_FINAL Текущий набор результатов является окончательным;
SRV_DONE_MORE Текущий набор результатов не является окончательным следует ожидать очердную порцию данных;
SRV_DONE_COUNT Параметр count содержит верное значение
SRV_DONE_ERROR Используется для уведомления о возникновении ошибок и немедленном завершении.
into зарезервирован, необходимо установить в 0.
count количество результирующих наборов данных посылаемых клиенту. Если флаг status установлен в SRV_DONE_COUNT, то count должен содержать правильное количество посылаемый клиенту наборв записей.
Возвращаемыме значения:
- в случае успеха SUCCEED
- при неудаче FAIL.
Установка расширенных хранимых процедур на MS SQL Server 2000
1.Скопируйте dll библиотеку с расширенной хранимой процедурой в каталог binn на машине с установленным MS SQL Server. У меня этот путь следующий: C:Program FilesMicrosoft SQL ServerMSSQLBinn;
2.Зарегистрирйте расширенную хранимую процедуру на серверt выполнив следующий скрипт:
Заключение
На этом первая часть моей статьи закончена. Теперь я уверен Вы готовы справиться с нашим техническим заданием на все 100%. В следующей статье Вы узнаете:
- Типы данных определённые в ODS API;
- Особенности отладки расширенных хранимых процдур;
- Как формировать recordset-ы и передавать их клиентскому приложению;
- Чстично мы рассмотрим функции Active Directory Network Manegment API необходимые для получения списка доменных пользователей;
- Создадим готовый проект (реализуем наше техническое задание)
Надеюсь - до скорой встречи!
Проблемы соединения волоконных световодов приобрели особую актуальность при разработке технологии их промышленного применения. Выбор способа сращивания зависит от условий применения волоконной оптики.
Очевидно, что значительные преимущества при использовании волоконно-оптических технологий в телекоммуникационной отрасли, связанные с улучшением целого ряда технико-экономических показателей (возрастанием скорости передачи информации, увеличением длины регенерационного участка, уменьшением массогабаритных характеристик кабелей, экономией цветных металлов и др.), предопределят в будущем широкое внедрение волоконной оптики при построении линий связи различных уровней. Однако необходимо было разработать методики сращивания волоконных световодов, обеспечивающие высокие качественные и вместе с тем достаточно технологичные и доступные показатели, чтобы сделать возможным применение этих световодов не только в стационарных, но и в полевых условиях.
Строительная длина волоконно-оптического кабеля на практике устанавливается, исходя из ряда факторов. Прокладка больших длин кабеля неудобна вследствие необходимости сматывания с барабана и манипуляций с кабелем как во время прокладки в полевых условиях (при пересечении других подземных коммуникаций), так и в городских условиях (при прокладке в кабельную канализацию). Прокладывая кабель с помощью кабелеукладочной техники, также возникают неудобства, связанные с манипуляциями большими длинами, если для погрузочно-разгрузочных работ приходится использовать специализированную технику. Особенно остро стоит проблема манипуляции строительными длинами с большой удельной массой при прокладке глубоководных морских кабелей и кабелей для прибрежной зоны. Из-за необходимости инсталляции кабелей максимально возможной длины для их транспортировки по суше используются спаренные железнодорожные платформы, на которых кабели выкладываются в форме "8", а не на кабельные барабаны. Таким образом кабель транспортируется по суше до погрузки на судно.
Для соединения оптических волокон разработаны два способа соединений: разъемные и неразъемные. Неразъемные соединения оптических волокон осуществляются методом сварки, методом склеивания, а также с помощью механических соединителей. Для создания разъемных соединений оптических волокон используются оптические коннекторы.
Соединения оптических волокон с помощью сварки
Соединение оптических волокон с помощью сварки является сегодня наиболее распространенным методом получения неразъемных соединений. Благодаря в достаточной мере совершенной технологии этот метод позволяет получать качественные соединения с низкими показателями вносимых потерь (порядка 0,1-0,15 дБ), что обуславливает его применение на линиях связи, где этот показатель входит в приоритетные - магистральные, зоновые и другие - высокоскоростные ВОЛС.
Сваривание оптических волокон предусматривает оплавление концов волоконных световодов путем помещения их в поле мощного источника тепловой энергии, как, например, поле электрического разряда, пламя газовой горелки, зона мощного лазерного излучения.
Каждый из перечисленных методов имеет свои достоинства и недостатки. Достоинством метода сварки с помощью лазера можно считать возможность получения чистых соединений из-за отсутствия в них сторонних примесей, и, как следствие, достаточно малых вносимых потерь (0,1 дБ и менее). Как правило, в качестве источника лазерного излучения высокой мощности (до 5 Вт) используются газовые лазеры на СО2.
К достоинствам метода сварки с помощью газовой горелки следует также отнести возможность получения соединений оптических волокон, отличающихся высокой прочностью мест сростков. В качестве источника пламени используют смесь пропана с кислородом или соединение кислорода, хлора и водорода. Этот метод распространен по большей части для сварки многомодовых оптических волокон.
Основным достоинством сварки в поле электрического разряда является быстрота и технологичность. Этот метод в настоящее время приобрел наибольшую популярность для сварки одномодовых световодов.
Аппараты для сварки оптических волокон можно классифицировать следующим образом: по способу юстировки свариваемых концов оптических волокон (в зависимости от геометрических размеров сердцевин или от потерь мощности светового сигнала, распространяющегося через место сварки); по способу проведения операций (ручные или автоматические); по типу устройства контроля (микроскоп, монитор на жидких кристаллах); по количеству оптических волокон, которые могут быть сварены одновременно (одно- и многоволоконные).
При сварке оптических волокон в поле электрического разряда можно выделить такие технологические этапы:
* подготовка торцевых поверхностей соединяемых оптических волокон;
* надевание защитной термоусаживаемой гильзы на одно из соединяемых волокон;
* установка подготовленных концов оптических волокон в направляющие системы сварочного аппарата;
* юстировка свариваемых оптических волокон;
* предварительное оплавление торцов оптических волокон (fire cleaning) с целью ликвидации микронеровностей, возникающих в
* процессе скалывания;
* непосредственное сваривание оптических волокон;
* предварительная оценка качества сварки;
* защита места сварки с помощью термоусаживаемой гильзы;
* окончательная оценка качества сварки с помощью рефлектометра.
Существует два способа юстировки. Первый базируется на выравнивании сердцевин свариваемых оптических волокон по их геометрическим размерам (Profile Alignment System PAS) с помощью боковой подсветки концов свариваемых волокон.
Второй способ основан на выравнивании сердцевин оптических волокон по принципу минимизации потерь тестового светового сигнала, распространяющегося через место сварки.
Что касается активной юстировки, то известно три метода.
Первый заключается в использовании оптического излучателя и приемника на противоположных концах оптических волокон, подлежащих сварке. Информация от приемника передается персоналу, производящему сварку.
Второй метод сводится к использованию оптического передатчика на дальнем конце и детектора в точке соединения. Тестовый оптический сигнал выводится из соединяемого оптического волокна на небольшом (примерно 0,5 м) расстоянии от места сварки на изгибе и детектируется приемником, оборудованным измерителем оптической мощности.
Третий метод реализует LID (Local Injection and Detection) - процедуру юстировки, ограниченную исключительно местом соединения. В основу этого метода положено введение тестового оптического сигнала в сердцевину одного из соединяемых оптических волокон и поиск его в сердцевине второго соединяемого волокна путем изгиба.
Метод LID является наиболее эффективным, поскольку, в отличие от метода PAS, качество сварного соединения в большей мере зависит от сварочного аппарата, а не от индивидуального мастерства персонала. В современных сварочных аппаратах для управления процессами юстировки и сварки используются микропроцессоры, с помощью которых возможна оптимизация процесса сварки для получения минимальных (менее 0,1 дБ) потерь в местах соединений оптических волокон.
В процессе оплавления оптические волокна подаются одновременно для предотвращения укорачивания одного из них в месте сварки. Операции оплавления и сваривания, как правило, выполняются автоматически. В современных автоматических сварочных аппаратах для снятия механического напряжения в точке соединения оптических волокон предусмотрен режим прогревания места стыка по окончании процесса сварки. Такой режим называется "режимом релаксации".
Цикл плавления (длительность подачи и сила тока как для предварительного оплавления, так и для сварки и релаксации) для оптических волокон различных производителей и типов различны.
Некоторые сварочные аппараты, кроме рассмотренных выше способов контроля качества места сварки, используют еще и тест на растяжение во избежание нарушения соединения во время манипуляций при выкладке сростков в кассету, а также в дальнейшем, в процессе эксплуатации. Соединенное оптическое волокно прочно закреплено в направляющих платформах (которые используются при юстировке). Под контролем микропроцессора по завершении этапа сварки эти направляющие платформы расходятся в противоположные стороны, образуя строго нормированное продольное усилие на растяжение, приложенное к месту стыка. Считается, что стык, прошедший такое тестирование, более надежен и выполнен более качественно. При невозможности получения стыка, способного пройти этот тест, но удовлетворяющего по параметрам передачи, эту опцию можно отключить.
Особо следует отметить сварку ленточных элементов (ленточных волоконно-оптических кабелей, отличающихся большим количеством оптических волокон). Эту операцию можно проводить, только применяя полностью автоматический сварочный аппарат, с помощью которого можно соединить до 12 оптических волокон приблизительно за 3 минуты, причем средний уровень потерь составит около 0,1-0,15 дБ. Однако для сваривания ленточных элементов необходим опытный, хорошо подготовленный персонал.
Во время сварки оптические волокна размещаются с соответствующим смещением от оси электродов, что обеспечивает равномерное нагревание. До начала процесса сваривания и по его завершении проверяется смещение оптических волокон, состояние торцевых поверхностей, а также деформация.
При сваривании ленточных элементов необходимо, кроме основных процессов, рассмотренных ранее, провести еще три технологические операции: устранить расхождения торцов соединяемых оптических волокон, плавление всех волокон выполнить одновременно с одинаковой температурой, в процессе предварительной оценки измерить уровень вносимых потерь рефлектометром. Если оказалось, что результаты не отвечают требованиям, процесс сварки повторяют.
Как показывает практика, предварительная оценка качества сварных соединений оптических волокон, базирующаяся на методе РАС, может содержать погрешность в диапазоне 5-1000%, поэтому окончательный вывод о качестве сварного соединения стоит делать после измерений рефлектометром.
По мере совершенствования качества сварочного оборудования и технологии сварки возрастают возможности получения сварных соединений оптических волокон высокого качества. Потери на сварных соединениях зависят от нескольких факторов: опыта персонала, геометрических погрешностей свариваемых оптических волокон, а также от материалов, из которых изготовлены волокна. Особенно часто проблемы возникают при сварке оптических волокон различных производителей. Дело в том, что оптические волокна различных производителей изготавливаются с использованием принципиально отличающихся друг от друга технологических процессов. В результате материал оптических волокон - кварцевое стекло - не является идентичным в волокнах различного происхождения, несмотря на то, что параметры оптических волокон, указанные в спецификациях фирм-производителей, отличаются незначительно.
Факторами, определяющими свойства стекла, являются технология изготовления и качество материалов. Многочисленные исследования показали, что тысячные доли процента примесей в кварцевом стекле оказывают большее влияние, чем добавки в десятки процентов тех же компонентов к многокомпонентным стеклам.
Для сварки наибольшее влияние имеют следующие характеристики: плотность, коэффициент теплового расширения, показатель преломления, вязкость и механические характеристики. Эти параметры определяют оптические потери в местах сращивания и должны приниматься во внимание при использовании оптических волокон, произведенных по различным технологиям, в пределах одного элементарного кабельного участка ВОЛС. Особое внимание следует уделять идентификации оптических волокон в кабеле по типу, производителю и технологии изготовления.
Более совершенные аппараты для сварки оптических волокон содержат программы, оптимизирующие процесс сварки для оптических волокон различных типов и различных производителей, однако на практике нередки ситуации, когда, используя стандартные программы, невозможно получить качественную сварку. В этих случаях необходимо самостоятельно корректировать параметры процесса (время и ток, подаваемый на электроды) для достижения оптимальных результатов.
[pagebreak]
Наиболее часто сварка оптических волокон различных производителей производится при оконцовке оптических волокон пигтейлами, а также при ремонтно-восстановительных работах, если эксплуатационный запас кабеля израсходован, и приобретение полностью идентичного кабеля невозможно (к примеру, по причине снятия с производства оптического волокна такого типа, который использовался первоначально) или экономически нецелесообразно.
В общем виде величина потерь в местах сварных соединений может быть представлена как суммарная величина: Dобщ = Dор + Dдм + Dую + Dнм + Dрпп, где: Dобщ - суммарная величина потерь в сварке; Dор - потери из-за осевого рассогласования модовых полей равного диаметра; Dдм - потери из-за разницы диаметров модовых полей; Dую - потери от погрешности угловой юстировки осей оптических волокон; Dнм - потери, обусловленные не-круглостью модовых полей; Dрпп - потери из-за разницы показателей преломления.
Изучение параметров и характеристик различных одномодовых оптических волокон показывает, что разброс величины диаметра модового поля для l = 1310.1330 нм или l = 1500...1550 нм может составлять от 10,5 до 21,7% (9,2 0,5 мкм). Такое рассогласование приводит к появлению потерь от 0,05 дБ до 0,25 дБ (с положительным знаком, когда излучение проходит из волокна с большим диаметром в волокно с меньшим диаметром, и отрицательным - в противоположном направлении). Эти потери будут иметь место, даже если аппарат расположит соосно два волокна с разными диаметрами сердцевин, у которых эксцентриситет пренебрежительно мал. Обычно разброс величины модового поля оптического волокна не превышает 14%, таким образом, величина этой составляющей - не более 0,1 дБ.
Составляющая Dую практически не компенсируется современным сварочным оборудованием. Установлено, что углы между осями сердцевин 0,5°; 1°; 1,5°; 2° вызывают приращение потерь соответственно в 0,08; 0,34; 0,77 и 1,5 дБ. Таким образом, благодаря надлежащей подготовке торцов соединяемых оптических волокон при скалывании можно уменьшить потери - необходимо обеспечить наименьший (не более 0,5°) угол между плоскостями торцов оптических волокон. В этом случае величина потерь не превысит 0,08 дБ.
Составляющая Dнм учитывает влияние некруглости модового поля. По приблизительным оценкам она равна 0,05 дБ.
При соединении сваркой оптических волокон, имеющих неконцентричность модового поля, часто возникает нарушение юстировки сердцевин вследствие действия сил поверхностного натяжения. Это нарушение можно минимизировать следующими способами:
* сокращение времени плавления за счет неполного сваривания оптических волокон или же сокращение длины свободного конца оптического волокна в сварочном устройстве, чтобы концы оптических волокон в процессе сварки могли перемещаться на очень малое расстояние;
* использование компенсационных программ, таких как управление смещением сердцевины с помощью метода умышленного смещения осей.
Такой режим получил название RTC (Real Time Control). В этом режиме после юстировки сердцевин свариваемых оптических волокон и проведения процедуры предварительного оплавления происходит компенсация поперечного смещения сердцевин в сторону, противоположную производной расхождения.
Сварка оптических волокон осуществляется посредством чередования коротких импульсов тока высокой интенсивности с импульсами тока низкой интенсивности (релаксационными импульсами). При этом после сваривания в электрическом поле импульса высокой интенсивности в поле релаксационного импульса происходит перемещение оптических волокон под действием поверхностного натяжения. Количество чередующихся импульсов зависит от смещения сердцевин оптических волокон, которое постоянно контролируется сварочным аппаратом; как правило, количество импульсов не превышает 2-3.
Весьма существенное влияние на общую величину потерь, если свариваются оптические волокна с разными показателями преломления (N) сердцевины, может оказать составляющая Dрпп. Эта составляющая учитывает потери мощности оптического сигнала в результате несоблюдения условия полного внутреннего отражения на месте стыка двух оптических волокон, у которых показатели преломления сердцевин имеют различия. В этом случае часть оптического сигнала проникает через оболочку волокна и рассеивается. Ситуация усугубляется многократным отражением луча от границы "сердцевина/оболочка", каждое из которых (отражений) служит источником потери мощности. На практике нередки случаи, когда даже многократные повторные сварки не позволяют добиться малой величины потерь.
Наибольший вклад в суммарную величину потерь вносят потери от погрешности угловой юстировки осей оптических волокон и потери из-за разницы показателей преломления.
Международная электротехническая комиссия предлагает в качестве типичной характеристики сварного соединения оптических волокон, полученного в полевых условиях, величину вносимых потерь, равную 0,2 дБ (IEC 1073-1). При современном развитии технологии сварки оптических волокон этот показатель вполне достижим даже тем персоналом, который не обладает значительным опытом в этой области.
Соединение оптических волокон методом склеивания
Практически одновременно с методом сварки был разработан метод склеивания оптических волокон. Для получения клеевых соединений используют совмещение и фиксацию оптических волокон: в капилляре, в трубке с прямоугольным сечением, с помощью V-образной канавки и с помощью трех стержней в качестве направляющих. Оптические волокна соединяются поодиночке.
Технология получения таких соединений состоит из следующих этапов:
* подготовка оптических волокон к соединению (очистка, снятие буферных покрытий, скалывание);
* ввод оптического волокна в капилляр;
* наполнение иммерсионной жидкостью, гелем или клеем;
* регулирование соединения, юстировка оптических волокон;
* нанесение адгезивного вещества;
* цементирование адгезивного вещества с помощью ультрафиолетового излучения.
Клей, используемый для оптических волокон, должен иметь коэффициент преломления, близкий к коэффициенту преломления волокон. Он должен обеспечивать фиксированное положение соединенных оптических волокон, защищать место сращивания от воздействий окружающей среды, гарантировать прочность сростка при воздействии нагрузок в осевом направлении. К достоинствам этого метода следует отнести оперативность и отсутствие деформации сердцевин соединяемых оптических волокон. Это способствует тому, что в области стыка - малые потери, обеспечиваются хорошие механические свойства и т.п. Однако ограниченный срок службы и нестабильность во времени, а также весьма высокая чувствительность к повышению температуры и воздействию влажности являются факторами, сдерживающими распространение этого метода получения неразъемных соединений. В настоящее время он уступил свои позиции методу соединения оптических волокон с помощью механических соединителей.
Механические соединители оптических волокон
Механические соединители оптических волокон разрабатывались как более дешевый и быстрый способ сращивания оптических волокон. Применение аппарата для сварки оптических волокон сопряжено с необходимостью соблюдения ряда условий: для работы используется помещение, параметры которого (температурный диапазон, влажность, давление, вибрации и проч.) соответствуют требованиям производителей сварочного оборудования; также необходима организация питания от сети переменного тока с достаточно жестко регламентированными параметрами. При стоимости комплекта оборудования для сварки оптических волокон, составляющей десятки тысяч долларов США, амортизационные отчисления, а также техническое обслуживание и ремонт являются довольно дорогостоящими.
Достаточно высокие требования предъявляются также к персоналу, производящему работы по сварке оптических волокон. Часто этими же лицами производится наладка и обслуживание аппаратов для сварки оптических волокон (очистка направляющих поверхностей и зажимов, замена электродов и проч.), для чего требуются специалисты с высоким уровнем квалификации.
Всех этих сложностей можно избежать, применяя механические соединители оптических волокон. Конструкция оптических соединителей относительно проста. Основными узлами являются направляющие для двух оптических волокон и устройство фиксации волокон. Внутреннее пространство заполняется тиксотропным гелем для защиты открытых участков оптических волокон от воздействия влаги. Одновременно гель обладает иммерсионными свойствами - его показатель преломления близок к показателю преломления сердцевины волокна.
Процедура монтажа оптических соединителей является частью процедуры монтажа промежуточного или оконечного устройства - кабельной муфты, бокса или стойки. Размеры и форма оптических соединителей позволяют устанавливать их в кассету муфты или бокса аналогично сросткам оптических волокон, полученных путем сварки.
Процедура монтажа включает в себя следующие технологические операции:
* разделка кабелей;
* очистка оптических волокон от гидрофобного геля (при его наличии);
* снятие буферных покрытий соединяемых оптических волокон на участках длиной, рекомендуемой производителями оптических соединителей конкретного типа;
* скалывание оптических волокон;
* проверка качества скола волокон;
* введение соединяемых волокон в отверстия с направляющими;
* позиционирование волокон в соединителе для достижения оптимальных параметров соединения;
* фиксация оптических волокон в соединителе;
* тестовые измерения соединения.
Особое место среди оптических механических соединителей занимает RMS (Rotary Mechanical Splice) как наиболее сложный среди аналогов. Процесс его монтажа наиболее трудоемок, однако он позволяет достичь наименьших потерь при соединении одномодовых волокон. В отличие от остальных соединителей, где величина потерь главным образом зависит от качества скола торцевых поверхностей оптических волокон, этот соединитель позволяет юстировать волокна простым вращением вокруг своей оси стеклянных втулок, удерживающих подготовленные оптические волокна, и добиваться наилучших результатов.
Следует отметить, что применение механических соединителей является наиболее быстрым способом соединения оптических волокон. При этом вносимое затухание практически не отличается от затухания, создаваемого сварным соединением. Достаточно устойчивое функционирование механических соединителей в процессе эксплуатации позволяет уже сегодня рекомендовать их для широкого внедрения на телекоммуникационных сетях с невысокими требованиями к качеству соединений, а также в случаях, когда использование аппарата для сварки оптических волокон технологически затруднено или вообще невозможно. В дальнейшем статистика технической эксплуатации, а также совершенствование материалов компонентов механических соединителей, вероятно, определит их более широкое применение для строительства телекоммуникационных волоконно-оптических линий различных уровней.
Обращает на себя внимание тот факт, что механические соединители оптических волокон условно допускают однократное использование, однако на практике встречаются ситуации их многократного применения. Производители гарантируют качество соединения оптических волокон при повторном монтаже соединителя не более 2-3 раз, однако при повторном наполнении внутреннего пространства иммерсионным гелем (в тех конструкциях, где это предусмотрено) такие соединители использовались многократно без ущерба для качества стыков. Некоторыми производителями механических соединителей разработаны механизмы фиксации, предусматривающие использование специального ключа для открытия фиксатора.
Сегодня использование механических соединителей наиболее удобно при проведении аварийного ремонта волоконно-оптическихлиний для технологической операции организации временной вставки.
Волоконная оптика дороже кабелей с медными жилами, но с каждым годом спрос на нее растет. Отчасти это происходит из-за того, что технология монтажа стала намного проще, а стоимость необходимого инструментария постоянно снижается. Без преувеличения можно сказать, что оптическое волокно получило массовое распространение в телекоммуникациях.
Одно из серьезных ограничений в использовании волоконно-оптических кабелей — необходимость особого, аккуратного отношения к их укладке, разделке, соединению и оконцовке, т. е. абсолютно ко всем элементам технического процесса монтажа кабельной линии. Ошибки обходятся весьма дорого — от замены испорченного соединителя до установки соединительной муфты на месте поврежденного кабеля. Тем не менее оптическое волокно активно вытесняет медь не только на магистральных участках сетей связи общего пользования, где почти все новые линии строятся на основе волоконно-оптических линий связи, но даже и на магистральных (вертикальных) участках СКС.
Некоторые особенности работы с волоконно-оптическими кабелями (ВОК) рассматривались в предыдущих номерах, в разделах, посвященных вопросам укладки кабеля. В основном они сводились к набору специальных приемов для захвата кабеля при втягивании в канал, чтобы обеспечить равномерность приложенного тягового усилия, ограничить его максимально допустимым уровнем, а также строго выдержать норму минимального радиуса изгиба. Для успешного выполнения этих задач создан целый набор монтажных приспособлений: кабельные чулки и захваты, электрические и гидравлические тяговые лебедки с электронным управлением и ограничителем усилия, а также защитные устройства, смазка и т. п. «мелочи». Теперь настал черед уделить внимание инструментарию для всех прочих операций.
Основные трудности, которые приходится преодолевать при резке волоконно-оптических кабелей, — броневой покров (стальная лента или стальная проволока) и внутренние силовые элементы (стальной трос). Поскольку оптическое волокно чувствительно к осевым и радиальным деформациям, то волоконно-оптические кабели имеют их в большем количестве, чем медножильные. Это касается не только кабелей для внешней прокладки, но и тех, что предназначены для укладки в зданиях. Правда, последние не всегда содержат силовой элемент из стали. Бронирование, если таковое имеется, осуществляется тонкой стальной или алюминиевой гофрированной фольгой. А так называемые мини-кабели, которые используются для изготовления коммутационных шнуров и выполнения горизонтальных участков СКС, представляют собой одиночное или двойное оптическое волокно в буферном покрытии с одним или двумя защитными слоями полимерной изоляции. Так или иначе, но для большинства волоконно-оптических кабелей недорогие кабелерезы для медных кабелей непригодны. Для них требуется более дорогой инструмент, лезвия которого рассчитаны на резку стали. Впрочем, такой же инструмент необходим и для резки бронированных медножильных.
Первые этапы разделки волоконно-оптических кабелей (удаление верхнего слоя защитных и броневых покровов) выполняются теми же инструментами, что и разделка медножильных кабелей. Никаких особенностей здесь нет — полимерная изоляция и фольга вскрываются резаками, а стальная проволока выкусывается бокорезами. Однако без применения нескольких специальных инструментов не обойтись. Во-первых, это ножницы с керамическими лезвиями или кусачки для удаления нитей из кевлара, которые часто применяются для упрочнения кабеля. Обычные ножницы эти тонкие, гибкие и прочные волокна не режут, а выдавливают или гнут. Во-вторых, это приспособление для снятия полимерной изоляции с мини-кабелей. При выполнении работы не универсальным, а специализированным инструментом риск повреждения оптического волокна существенно снижается, так как его рабочие поверхности имеют фиксированную настройку.
Стоит отметить, что важно хорошо знать конструкцию разделываемого кабеля, так как последний слой защитного покрытия кабеля или изоляцию модулей (групповых элементов, содержащих несколько волокон) нужно удалять с особенной аккуратностью. После удаления всех защитных слоев открывается доступ к одиночным оптическим волокнам в буферном покрытии. На этом сходство заканчивается, и далее работать с волоконно-оптическими кабелями можно только специальным инструментом.
Разделка кабеля может выполняться для оконцовки (монтажа разъемных соединителей) или сращивания (сварки или монтажа неразъемных соединителей).
Разъемные соединители монтируются на мини-кабели или на оптическое волокно в буферном покрытии; для оптического волокна их существует великое множество (ST, SC, SMA, FC, LC, FJ, MT и др.). Некоторые из них выпускаются еще и в нескольких разновидностях, предназначенных для оконцовки различного оптического волокна (многомодового, одномодового, разного диаметра, с различной толщиной оболочки) и отличающихся некоторыми деталями конструкции и технологии монтажа. Такое разнообразие не слишком осложняет работу монтажников. Грамотная техническая политика позволяет резко уменьшить число разновидностей кабелей и соединителей для волоконно-оптических линий связи. Иногда ограничения вытекают из особенностей применяемого оборудования, иногда — оформляются в виде внутреннего стандарта организации. Подобные ограничения и правила просто необходимы, если помнить, что существенная часть достаточно дорогого инструмента и приспособлений предназначена только для оптического волокна или соединителей определенного вида. А в силу высочайших требований к точности обработки и монтажа использование непредусмотренного технологией инструментария почти всегда заканчивается браком в работе. В значительной степени результат зависит и от качества расходных материалов: клеев, растворителей, безворсовых салфеток, шлифовальной и полировальной бумаги.
Итак, после разделки кабеля по шаблону до оптического волокна в буферном покрытии наступает наиболее ответственный момент. С помощью особого инструмента, рассчитанного на оптическое волокно определенного размера, с него удаляют буферное покрытие. Основная проблема — не повредить при этом само волокно, так как при небольшом задире или сколе всю работу придется выполнять еще раз. Поскольку внешне инструменты для этой операции выглядят абсолютно одинаково, производители используют для их маркировки различные цвета.
Затем производится сборка соединителя. Оптическое волокно продевается сквозь отверстие наконечника соединителя и фиксируется с помощью различных видов клея: термоклея (становится пластичным при нагреве), эпоксидного компаунда (полимеризуется благодаря реакции между двумя смешанными компонентами), универсального клея (твердеет после испарения растворителя) или клея с отвердением под воздействием ультрафиолета. Отверстие заполняется клеем с помощью шприца (исключение составляет термоклей, который наносится в процессе производства разъемов). Однокомпонентный клей поставляется уже расфасованным в шприцы, а двухкомпонентный — в отдельной таре. Полученная сборка нагревается в печке (для ускорения процесса отвердения эпоксидного компаунда или разогрева термоклея) или облучается ультрафиолетом.
После склеивания излишки оптического волокна удаляются, а торец сердечника шлифуется и полируется. Для удаления излишков на поверхности волокна резаком (скрайбером) наносится царапина. Резаки могут иметь различный профиль: лезвие (металл, карбид или керамика) либо конус (алмаз или корунд). После нанесения риски волокно отламывается.
Дальнейшая обработка торца выполняется на мате или стекле на нескольких листах наждачной бумаги с убывающим размером абразивного элемента (шлифовальная, полировальная, доводочная). Для фиксации сердечника строго перпендикулярно к поверхности наждака применяется оправка, в которую устанавливается обрабатываемый соединитель. При больших объемах эта операция может быть автоматизирована за счет использования шлифовальной машины.
Качество обработки проверяется с помощью микроскопа. Выпускаемые модели контрольных микроскопов отличаются степенью увеличения и конструкцией. Особенно удобен защитный фильтр для глаз — для блокирования излучения на случай, если оно окажется в подключенном волокне.
Все инструменты для работы с волоконно-оптическими кабелями можно приобрести по отдельности, но чаще всего они поставляются в специально составленных комплектах, куда входит не только инструмент, но и вся необходимая для проведения работ тара, дозаторы, распределители, расходные материалы и защитные средства. Для удобства хранения все это упаковано в органайзер (сумку или чемодан). Восполнение расходных материалов также осуществляется подобранными комплектами.
В зависимости от поставленных задач предлагается как скромный набор минимально необходимых для обработки одного типа оптического волокна средств, так и полный набор для работы с любым оптическим волокном. А вот комплектов, универсальных с точки зрения обрабатываемых разъемных соединителей, очень мало. Объясняется это просто — часть инструмента для их монтажа поставляется только производителями самих соединителей.
Несколько слов тем, кому придется выполнять работы с волоконно-оптическими кабелями на улице. Для защиты от пыли и осадков, а также создания необходимого микроклимата используются теплоизолированные палатки и боксы. Первые легко переносятся и собираются в любом месте; вторые устанавливаются на шасси автомобиля и прицепа.
GPRS (General Packet Radio Service) - это новая перспективная технология, стандартизация которой началась в 1993 году в European Telecommunication Standards Institute (http://www.etsi.org/), позволяющая работать в сети Internet, используя обычный мобильный телефон. С помощью GPRS, пользователи могут работать со своей электронной почтой, с обычными Web-серверами (а не со специальными WAP-версиями) и т.д. Основное достоинство GPRS-сетей состоит в том, что пользователь оплачивает только объем передаваемой/получаемой информации, а не время нахождения в сети.
До разработки технологии GPRS (http://www.gsmworld.com/technology/gprs/index.shtml), абонент оплачивал все время соединения независимо от того, использовал он установленный канал передачи данных. Иными словами, ресурсы сети задействованы только во время непосредственной передачи данных от телефона. Во время пауз (например, просмотр полученной электронной почты) ресурсы сети предоставляются в распоряжение других абонентов. Кроме того, технология GPRS является промежуточным этапом при переходе от сетей 2 поколения (GSM) к 3-му (UMTS). В GPRS максимально возможная скорость передачи данных составляет 171,2 Кбит/с - это почти в 12 раз быстрее работы передачи данных в обычных сетях GSM (9,6 Кбит/с). Однако на данный момент скорости не так высоки - обычно 30-40 Кбит/с. В настоящее время три крупнейших сотовых сети России (МТС, БиЛайн, Мегафон) предлагают своим абонентам услуги GPRS. Потенциальное число абонентов технологии GPRS в России - 17,8 миллионов человек, именно такое количество абонентов сотовой связи насчитывалось в России к концу 2002 года. Реальное же число желающих воспользоваться преимуществами этой технологии пока не так велико. В частности, к началу декабря 2002 года в БиЛайне, пионере GPRS в России, насчитывалось всего 25000 абонентов.
Архитектура GPRS
Если не вдаваться в глубокие технические подробности, то технология работы GPRS выглядит следующим образом. Архитектура GPRS расширяет стандартные компоненты GSM новыми или обновленными элементами. В целом, таких элементов всего 4, из которых только 2 не были известны в технологии GSM.
Мобильная станция
MS (mobile station) - это мобильная станция, в качестве которой может выступать переносной или карманный компьютер, мобильный телефон или иное устройство, поддерживающее технологию GPRS. Функционально данный элемент состоит из 2-х компонентов, которые могут быть выполнены как в виде единого устройства (например, мобильный телефон Sony Ericsson T68i), так и в виде самостоятельных устройств:
терминальное оборудование (terminal equipment, TE), например, переносной компьютер;
мобильный терминал (mobile terminal, MT), например, модем.
В зависимости от типа оборудования и возможностей сети данная станция может работать в одном из 3-х режимов работы:
Класс A - позволяет мобильной станции в одно и то же время передавать как данные, так и голос, т.е. одновременно работать в GSM- и GPRS-сетях.
Класс B - позволяет мобильной станции передавать и данные и голос, но в разные моменты времени, т.е. не одновременно.
Класс C - позволяет мобильной станции работать только в режиме GPRS.
При подключении к сети GPRS, мобильная станция (а точнее элемент TE) получает IP-адрес, который не меняется до момента отключения мобильного терминала (MT); больше того, мобильная станция может даже и не "подозревать" о том, что она является мобильной. Мобильная станция устанавливает соединение с узлом обслуживания абонентов GPRS, описываемым далее.
Базовая станция
BSS (base station system) - это базовая станция, которая принимает радиосигнал от мобильной станции и, в зависимости от того, что передается (голос или данные), транслирует трафик:
на центр коммутации (mobile switching center, MSC), являющийся стандартным элементом сети GSM, или на узел SGSN, отвечающий за обработку входящих/исходящих данных GPRS.
Узел обслуживания абонентов GPRS
Обслуживающий узел (serving GPRS support node, SGSN) является основным компонентом GPRS-сети. Он транслирует IP-пакеты, посылаемые/получаемые мобильной станцией. По своей сути, это такой же центр коммутации, как и MSC в GSM, но в отличие от последнего, он коммутирует пакеты, а не каналы. Как правило, такой узел построен на базе ОС Unix и имеет свой IP-адрес. С точки зрения безопасности, на SGSN возложены функции:
Проверки разрешений абонентов на пользование запрашиваемых услуг (аутентификация). Механизм аутентификации GPRS совпадает с аналогичным механизмом в GSM.
Мониторинг активных абонентов.
Регистрация новых абонентов.
Шифрование данных. Алгоритм шифрования в технологии GPRS (GEA1, GEA2, GEA3) отличаются от алгоритмов шифрования в GSM (A5/1, A5/2, A5/3), но разработаны на их основе.
Узел маршрутизации GPRS
Узел маршрутизации (gateway GPRS support node, GGSN), также является важнейшим элементом технологии GPRS и отвечает за прием/передачу данных из внешних сетей, например, Internet или GPRS-сети другого оператора связи. С точки зрения внешней сети GGSN - это обычный маршрутизатор (как и SGSN, построенный на базе Unix), который принимает данные для всех подписчиков услуг GPRS. Помимо маршрутизации, GGSN отвечает за выдачу IP-адресов и тарификацию услуг.
Другие элементы GPRS-сети
Home Location Register (HLR) - это реестр собственных абонентов сети, которая хранит информацию о каждом человеке, оплатившем услуги оператора GPRS именно данной сети. В частности, HLR хранит информацию о дополнительных услугах, параметрах аутентификации, IP-адресе и т.д. Обмен данной информацией происходит между HLR и SGSN.
Visitor Location Register (VLR) - это реестр перемещений, которая хранит информацию о каждой мобильной станции, находящейся в данный момент в зоне действия SGSN. В VLR хранится та же информация об абоненте, что и в HLR, но только до тех пор, пока абонент не покинет географическую зону, обслуживаемую этим реестром перемещений.
Equipment Identity Register (EIR) - это реестр идентификационных данных оборудования, который содержит информацию, позволяющую блокировать вызовы от украденных, мошеннических или иных неавторизованных устройств.
Механизмы безопасности GPRS
Если посмотреть внимание на рис.1, то можно выделить следующие фрагменты GPRS-сети, на безопасность которых необходимо обратить соответствующее внимание:
безопасность мобильной станции
безопасность соединения между мобильной станцией и узлом обслуживания SGSN
безопасность данных в процессе их передачи по сети GPRS
безопасность данных в процессе их передачи между различными операторами GPRS-услуг
безопасность данных в процессе их передачи в сети открытого доступа, например, Internet.
Безопасность мобильной станции
Наибольший интерес вызывает безопасность мобильного телефона, который в терминах GPRS является мобильной станцией. Его безопасность складывается из двух составляющих:
SIM-карта
сам телефон
SIM-карта (Subscriber Identity Module) - это модуль идентификации абонента. В SIM-карте содержится информация о сервисах, предоставляемых абоненту, независимая от типа используемого мобильного оборудования. Эта карта может вставляться в любой другой GSM терминал, при этом абонент получает возможность использовать этот терминал для получения всех сервисов системы, на которые он подписан. С точки зрения безопасности SIM-карта отвечает за идентификацию абонента и аутентификацию мобильного телефона в GPRS-сети. Она содержит идентификатор IMSI, индивидуальный ключ аутентификации абонента длиной 128 бит Ki, алгоритм генерации ключей шифрования A8 и алгоритм аутентификации A3 и разумеется PIN-код для доступа к функциям карты. Алгоритм A5 наряду с IMEI включен в состав программного обеспечения телефона и обеспечивает его защиту. Каждый абонент в GPRS-сети имеет уникальный международный идентификатор мобильного абонента (IMSI, International Mobile Subscriber Identity), хранимый в SIM-карте. IMSI состоит из 3 элементов:
трехразрядный код страны (для России - 250)
двухразрядный код сети (для МТС - 01, для Билайн - 99, для СМАРТС - 07 и т.д.)
десятиразрядный код абонента (Mobile Subscriber Identity Number, MSIN).
[pagebreak]
Алгоритм A8 отвечает за генерацию ключей шифрования, который, используя случайное число, передаваемое на мобильный терминал в момент соединения с сетью, и ключ Ki генерит 64-битный ключ шифрования трафика. Так как индивидуальный ключ Ki имеется не только у абонента, но и хранится в реестрах HLR и VLR, то и абонент и оборудование сети создают одинаковый ключ шифрования, который и используется для защиты передаваемых данных.
Алгоритм A3, отвечающий за аутентификацию абонента, похож на алгоритм A8 и также использует случайное число, получаемое в момент подключения к сети и индивидуальный ключ абонента. Для доступа к функциям SIM-карты необходимо использовать специальный персональный код (другими словами, пароль) PIN (Personal Identification Number), после 3-х неправильных попыток ввода которого, SIM-карта блокируется.
Безопасность самого телефона, как уже было сказано выше, обеспечивается двумя механизмами:
алгоритмом шифрования A5, который обеспечивает защиту данных, циркулируемых между мобильной станцией и узлом SGSN.
Уникальным 14-тиразрядным международным идентификатором аппаратуры мобильной связи (International Mobile Equipment Identity, IMEI), который однозначно идентифицирует телефон. Узнать этот номер очень просто - достаточно набрать на телефоне комбинацию *#06#. Если высвеченное число не совпадает с тем, что указано на задней крышке телефона, то вероятнее всего вы пользуетесь взломанным аппаратом. Именно эти номера хранятся в реестре EIR. Данный реестр ведет три типа списков IMEI:
"белый" список, содержащий идентификаторы всех разрешенных аппаратов.
"серый" список, содержащий идентификаторы всех незапрещенных аппаратов, но используемых для различных целей, например, тестирования и т.п.
"черный" список, содержащий идентификаторы всех запрещенных аппаратов. Как заявил в одном из интервью вице-президент МТС (http://www.mts.ru/press/speech9.html) Михаил Сусов "Сейчас между операторами (в России - А.Л.) проводятся переговоры о создании единого "черного списка" краденых телефонов".
Надо понимать, что идентификаторы IMEI и IMSI - независимы между собой. Более того - они решают различные задачи: IMEI идентифицирует мобильный терминал, а IMSI - абонента.
Безопасность соединения мобильной станции с узлом SGSN
В процессе подключения мобильной станции, описываемом далее, между ней и узлом SGSN происходит выбор версии используемого в дальнейшем алгоритма шифрования GPRS-A5. В 3-м квартале 2002 года началось внедрение третьей версии этого алгоритма (A5/3), которая может использоваться не только в GSM-, но и в GPRS-, HSCSD- и EDGE-сетях. Данный алгоритм разработан на базе алгоритма "Казуми" (Kasumi), в свою очередь разработанного на базе алгоритма MISTY компании Мицубиси. Как утверждается в пресс-релизе Ассоциации GSM (http://www.gsmworld.com/news/press_2002/press_15.shtml), A5/3 обеспечивает на сегодняшний день практически 100-процентную защиту передаваемых данных. Однако не стоить безоглядно верить этому утверждению. Аналогичные заявления делались и для предыдущих версий алгоритма A5, история которого начинается с 1987 года, однако они были успешно взломаны.
В сетях GPRS используются алгоритмы семейства A5 - GEA1 и GEA2, а после разработки A5/3 - начинается внедрение созданного на его базе алгоритма GEA3.
Безопасность данных в процессе их передачи по сети GPRS
Все данные между узлами поддержки (SGSN и GGSN) передаются с помощью специального протокола GTP (GPRS Tunneling Protocol), который инкапсулирует в себя любые пользовательские протоколы, например, HTTP, Telnet, FTP и т.д. По умолчанию GTP-трафик не шифруется. Кроме того, опорная сеть строится на базе частных IP-адресов, описанных в RFC 1918 (http://www.ietf.org/rfc/rfc1918.txt), что обеспечивает невозможность прямого доступа к сетевому оборудованию из внешних сетей.
Безопасность в процессе взаимодействия с различными операторами GPRS-услуг
Безопасность возлагается на устройства, называемые пограничными шлюзами (border gateway, BG), которые очень похожи на обычные межсетевые экраны, защищающие корпоративные сети от посягательств злоумышленников. В частности, этот шлюз защищает оператора от атак, связанных с подменой адреса (IP Spoofing).
Настройка такого шлюза включает в себя создание правил, разрешающих входящий/исходящий пользовательский трафик, данные биллинговой системы, аутентификацию роуминговых абонентов и т.п. Дополнительно на пограничный шлюз может быть установлено программное обеспечение, организующее VPN между различными GPRS-операторами.
Помимо встроенных в пограничный шлюз защитных механизмов, существует возможность использования продуктов третьих фирм. Первым таким решением стал межсетевой экран Firewall-1 GX компании CheckPoint Software (http://www.checkpoint.com/products/solutions/firewall-1gx.html), который, будучи установлен на пограничном шлюзе или узле GGSN повышает защищенность сети GPRS-оператора от возможных несанкционированных действий.
Безопасность в процессе взаимодействия с Internet
Основные механизмы безопасности реализованы на узле GGSN, в состав которого входит межсетевой экран, который определяет тип входящего и исходящего GPRS-трафика. Задача межсетевого экрана, входящего в состав GGSN, защитить мобильную станцию от атак внешних (из Internet) хакеров. Защита от атак с других мобильных станций возлагается на узел SGSN. Для предотвращения доступа к сетевому оборудованию опорной сети от внешних злоумышленников используется трансляция адресов (network address translation). Все остальные механизмы защиты могут быть взяты из классической практики обеспечения информационной безопасности Internet-сетей и устройств, например, аутентификация при помощи серверов RADIUS или защита трафика с помощью IPSec.
Процедура подключения мобильной станции
Упрощенно процесс подключения абонента, желающего воспользоваться услугами GPRS, выглядит следующим образом: Мобильная станция посылает запрос (Attach Request) на получение доступа к сети, который содержит ряд параметров, в т.ч. и IMSI.
Узел SGSN, получив такой запрос, проверяет наличие аутентифицирующей данного абонента информации в своей базе. Если такая информация отсутствует, то SGSN посылает запрос в реестр HLR, который возвращает т.н. аутентификационный триплет, содержащий:
Случайное число, используемое в алгоритмах A3 и A8 для выработки ключа шифрования и аутентификации абонента.
32-хразрядный ключ аутентификации абонента, который вырабатывается на основе индивидуального ключа, хранящегося как на мобильной станции, так и в реестре HLR.
Ключ шифрования данных, получаемый также на базе индивидуального ключа абонента.
Полученное случайное число передается на мобильную станцию, которая на его основе вырабатывает ключ шифрования и ключ аутентификации. Т.к. индивидуальные ключи, хранящиеся в реестре HLR и на мобильной станции совпадают, то и ключи шифрования и аутентификации также должны совпадать, что и является фактом правомочности запроса данным абонентом оплаченных GPRS-услуг.
После идентификации абонента осуществляется идентификация оборудования, которое посылает на SGSN идентификатор IMEI. Узел SGSN в свою очередь проводит проверку данного оборудования по реестру EIR.
После аутентификации абонента и оборудования происходит процедура определения местоположения абонента (с использованием реестров HLR и VLR), после чего происходит завершение процедуры подключения мобильной станции к сети GPRS. В том случае, если мобильная станция не смогла пройти аутентификацию, то SGSN посылает на нее сообщение Attach Reject.
Заключение
В заключение хочу добавить, что, при создании технологии GPRS (как и при создании многих современных сетевых технологий) вопросам безопасности внимания уделялось недостаточно. Многие аспекты не описаны и отданы на откуп операторам, которые далеко не всегда уделяет безопасности первостепенное внимание, что приводит к печальным последствиям. Специалистами найдено уже немало недостатков технологии GPRS, но это уже тема другой статьи
Множество владельцев малого бизнеса просто не имеют достаточно ресурсов для проведения рекламной компании, которая бы позволила раскрутить их интернет-ресурс. Именно для решения этой проблемы в интернете существует множество online сервисов, которые позволяют владельцу сайта самостоятельно (DIY, do-it-yourself) заняться популяризацией своей веб-странички.
На сайтах подобного рода специалисты по поисковой оптимизации могут дать вам множество полезных советов и рекомендаций. Эта статья предоставляет возможность мне поделиться с вами своим опытом в области поисковой оптимизации. Назовем эти рекомендации как "10 минут для поисковой оптимизации".
Эти советы будут полезны для каждого, у кого есть хотя бы несколько страничек, сверстанных на HTML, но все же главной темой данной статьи будет привлечение посетителей на вашу домашнюю страничку.
Первые шаги
Перед тем, как начать, следует рассмотреть несколько моментов, которые необходимо знать перед началом оптимизации. Только вот для этого может потребоваться и более 10-ти минут. Итак, следует учесть следующее:
Определитесь со своей целью:
99% из вас знают, какой именно товар вы собираетесь рекламировать, поэтому вам нужно только определиться с ключевыми словами, по которым посетитель и попадет на ваш сайт. Вот несколько полезных советов. Во-первых, нужно проанализировать статистику посещаемости сайта, чтобы узнать, по каким ключевым словам посетители попали на ваш сайт. Во-вторых, посетите сайт вашего конкурента, который широко известен в просторах интернета.
Посмотрите на заголовки нескольких его страничек и попытайтесь определить, какие именно ключевые слова используются. Также посмотрите исходный текст странички (в Internet Explorer'е его можно посмотреть с помощью пункта меню View (Вид) - > Source (Просмотр html-кода)) и скопируйте информацию, содержащуюся в META-тегах. На своей страничке же вы должны определиться с частотой (разумной) использования наиболее запрашиваемых ключевых слов.
Здесь очень важно заметить, что профессиональные оптимизаторы имеют у себя под рукой гораздо больше инструментов, да и информации для установки нужных ключевых слов (с высокой их частотой в тексте страницы).
Дизайн сайта - привлекателен ли он для покупателя?
Вот тут-то и находится один из подводных камней. Суть его в том, что непривлекательный дизайн сайта - это прямой путь к низкой посещаемости ресурса. Безусловно, на тему разработки юзабилити сайта (т. е его дизайна), написано очень много и книг, и статей. Но пусть в рамках данной статьи все аспекты юзабилити рассмотреть и не получиться, то несколько замечаний тут не помешает:
1. Избегайте использовать в цветовой гамме сайта необычные и странные цвета. В противном случае посетителю будет тяжело прочитать информацию на вашем ресурсе (красный текст на голубом фоне - вот вам и яркий пример ужасного дизайна). Также не рекомендуется использовать текст мелкого шрифта; старайтесь придерживаться размера шрифта в пределах от 10 до 12 (2 или 3 в Macromedia Dreamweaver).
2. Использование на сайте рекламных блоков (как графических, так и текстовых), будут только отвлекать ваших посетителей. К примеру, если вы продаете автомобили BMW, то рекламировать на сайте средство для повышения потенции "Виагра" будет очень некстати.
Каждый графический элемент на вашей страничке может как повышать, так и понижать доверие посетителей к вашему ресурсу. Старайтесь использовать это место на сайте очень мудро и пользователи это оценят.
10 минут на раскрутку
1. Проверка на спам
Перед началом работ по оптимизации одним из ключевых моментов является тот факт, для раскрутки своего сайта вам не следует использовать приемы, которые могут быть восприняты поисковой машиной как спам. Но самое неприятно в этом то, что вы можете об этом и не подозревать! Некоторые веб-мастера (с устаревшими знаниями о принципах работы поисковых машин) используют на веб-страницах скрытый текст. Они ошибочно полагают, что таким методом помогут сайту подняться в глазах поисковика. Но это в корне неверно и данный прием может только добавить проблем для поисковой оптимизации.
Для обнаружения скрытого текста нужно всего лишь с нажатой левой кнопкой мыши провести от начала до конца страницы. Выделив таким образом всю страничку, можно легко найти скрытый текст (как правило, цвет шрифта у скрытого текста совпадает с цветом фона странички) - он просто будет выглядеть как подсвеченный.
Также вам захочется проверить частоту ключевых слов, которые встречаются на страничке. В данном случае является недопустимым повторение 5-6 ключевых слов, которые расположены друг за другом. Таким образом поисковую машину уже не проведешь, так что лучше таких приемов не использовать.
Для получения более детальной информации о нечестных методах раскрутки, которые приводят только к негативным результатам, можно ознакомиться с документом: "Inspecting your Web Site for Spam."
2. Проверка на релевантность (значимость) сайта для поисковой машины
Очень важно для вашего ресурса всегда быть в фокусе у поисковика. Для примера, если ваш ресурс будет ассоциироваться с ключевой фразой "Продажа автомобилей BMW", то ссылка или информация о продаже недвижимости будет совершенно излишней. Имейте в виду, что большинство поисковых машин будут судить о вашем ресурсе именно в зависимости его тематики. А она в первую очередь зависит от текстовой информации, которая содержится на страницах вашего сайта.
3. Подбор правильного содержания сайта
Текстовая информация на вашем сайте является решающей для удержания на сайте человека, который только что на него зашел. К слову, что это так важно, хочу добавить, что у множества компаний есть свой профессиональный копирайтер, который и занимается контентом (информацией на сайте). Поэтому так важно при написании статей придерживаться ключевых слов, которые вы выбрали в качестве цели для поисковой оптимизации своего ресурса. Но, в свою очередь, размещать ключевые слова в тексте без связи с остальной информацией (т. е ключевые слова не соответствуют тематике статьи) - верный путь потерять посетителя вашего сайта.
Важное замечание: очень часто первые 25-30 слов вашего сайта - это то, что каждый поисковик будет использовать для его описанию. Постарайтесь использовать ваши ключевые слова внутри этой области, не забывая при этом, чтобы это самое описание выглядело разборчиво и наглядно.
4. Работа над заголовком сайта (Title)
В заголовок вашей странички очень желательно поместить те ключевые слова или фразы, которые наиболее полно характеризуют предмет рекламы на ней. Для примера: "Продажа автомобилей BMW - MeBMW.com" Для поисковых машин заголовок является очень важным, а ключевые слова (фразы) в нем только помогут выше подняться в рейтингах. Но здесь главное не переусердствовать и использовать ключевые слова в пределах разумного. Заголовок также играет большую роль и в релевантности сайта. Именно его содержание будет сравниваться с текстовой информацией (контентом) остальной части веб-страницы. Чем больше будет совпадений у заголовка страницы с ее контентом, тем более она будет значимой для поисковой машины.
6. Навигация сайта... Сделайте ее интуитивно понятной
Могу предположить, что вы, как и большинство, используете для навигации на своем сайте графические элементы или текстовые ссылки. Здесь вам один мой небольшой совет - создайте меню для навигации на своем сайте предпочтительнее в виде текстовых ссылок его разделы. А разместить его лучше внизу страницы - так удобнее для посетителя. Теперь, при добавлении разделов, вы их можете называть, используя ключевые слова/фразы для лучшей информативности описания вашего раздела. Для примера сравним два варианта меню:
Аксессуары к автомобилям BMW | Продажа автомобилей BMW | Подробнее о MyBMW.com
и как после этого смотрится вот такое:
Аксессуары | Продажа автомобилей | О нас
7. Проверьте работоспособность ссылок и орфографию/грамматику
Совсем уж не помешает еще разок проверить все ссылки на сайте и правописание. После чего, если вы уверены, что это уже окончательный вариант, можете смело загружать сайт в интернет.
Спешить нужно медленно
А что же дальше? Сейчас много поисковых машин предлагают такую платную услугу, как предоставление вашему новому веб-сайту постоянную или срочную индексацию. В противном случае неизвестно, когда же до него доберется поисковый паук и проиндексирует его в своей базе. Если же вы воспользуетесь услугой срочной индексации, что уже через пару дней можно пожинать плоды в виде посетителей. Правда, у каждой поисковой машины здесь свои сроки.
Но все же эта статья посвящена тем, у кого денег для такой услуги попросту нет (да и стоит она недешево, вот может с первой прибыли ею и воспользуемся). Тем не менее, если ваш сайт уже посетил поисковый робот и внес его в свою базу, то вам остается теперь только ждать, когда он опять посетит его вновь на предмет наличия нового материала. Вот поэтому так важно своевременно обновлять контент на сайте - добавлять новые статьи, заводить новые разделы и т.д. (все зависит от вашей фантазии и сообразительности).
Но что же делать, если же вы желаете уменьшить это время или если до вашего сайта робот еще и не добрался? Вот для этого и придется кропотливо регистрировать все ваши новые странички вручную на сайте поисковика. А перед регистрацией (первой или повторной) не помешает также внимательно ознакомиться с правилами, которые очень подробно расписаны у каждого поисковика. Так, на всякий случай.
В качестве вступления заметим, что в самом этом вопросе заключен подвох - заранее неверное предположение.
а) Первая страница результатов поиска - некое определенное место. Это не так: "Яндекс" и "Рамблер" производят в день не менее полутора миллионов первых страниц каждый и3 все они разные! Какие из них и сколько нам нужны?
б) Заранее предполагается, что попасть на первую страницу - абсолютное благо. Кроме того, все остальные виды продвижения сразу исключаются из обсуждения.
И то и другое - миф. Но начнем обсуждение по порядку.
Клиенты - поворот к Сети
Насколько можно судить, в настоящее время наблюдается заметный рост интереса к интернет-продвижению среди мелкого и среднего офлайнового бизнеса. Вот типовой портрет такого клиента:
* небольшая офлайновая компания,
* оборот $50 000 - 200 000 в месяц,
* имеется "информационный" сайт,
* нет интернет-маркетолога,
* нет выделенного интернет-бюджета.
Такие компании уже готовы к интернет-продвижению своих услуг, но не знают, как это сделать и сколько это стоит.
Причины интереса к Сети
Если есть рост интереса к Сети, то почему? Здесь могут быть различные причины. Например, мода, то есть последействие интернет-бума (наконец докатился). И более объективные внутренние: дороговизна печатной рекламы и рост числа потребителей, приходящих через Сеть. Вот какие причины называют сами клиенты:
* печатная реклама перестала работать;
* значительная доля клиентов стала приходить из Сети;
* привлечение клиента через Интернет дешевле.
Предположения
Для упрощения дальнейшего обсуждения сделаем следующие предположения о наших клиентах.
* Требуется продвижение корпоративного сайта "торговой" компании. Таким образом, цель сайта - увеличение объема продаж.
* У руководства есть маркетинговая стратегия. Руководство компании знает, как продавать свои продукты в "обычном" мире, и может оценить расходы на маркетинг и его результаты.
* Есть представление о нужной аудитории. Руководство компании знает, как и кому она продает свои продукты или услуги, и рассчитывает найти часть этой аудитории в Сети.
* Аудитории есть куда придти. Имеется в виду, что у компании есть более или менее приличный сайт, работающий, видный из Сети, с головной страницы которого не уходит 100% аудитории.
Почему поисковые машины?
Почему нужно производить продвижение именно через поисковые машины?
Плюсы
* Подавляющая доля трафика. Поисковики дают от 10% до 75% трафика корпоративных сайтов.
* Мотивированная аудитория. Пользователи сами сообщают о своих потребностях в виде поисковых запросов.
* Наглядность. Руководство компании, владеющей сайтом, сразу может увидеть свой сайт в результатах поиска (и в этом причина многих иллюзий).
Минусы
* Медленная индексация. Любые изменения на сайта попадают в поисковики за в среднем 1-2 месяца, что не позволяет использовать индексацию для разовых рекламных кампаний.
* Неустойчивая работа. Поисковики не дают никаких гарантий и работают неустойчиво: постоянные смены алгоритма, зависания серверов всё время меняют место сайта в поисковых результатах.
* Не борются с накрутчиками. Более умелый и хитрый вебмастер может обогнать в результатах поиска честных, талантливых, но неумелых создателей хорошего контента.
* Борются с накрутчиками. Разработчики поисковиков - независимые коммерческие компании и абсолютно не считаются с интересами вебмастеров. Они могут признать за накрутку самые невинные или сделанные по недомыслию вещи. Кроме того, возможно и осознанное представление сайта как накрутчика за счет накрутки его со стороны конкурентов. А выбрасывание из индекса за накрутку ведет к потере денег и ущербу для имиджа.
* Проблема первой страницы. Только 13% пользователей заглядывают дальше первой страницы результатов поиска. Фактическое падение числа показов на порядок приводит к абсолютной бессмысленности пребывания на вторых страницах, а первые перегружены.
Выбора всё равно нет. Я лично никогда не посоветовал бы такой неудачный рекламный носитель своему клиенту. Но выбирать не из чего - альтернативы поисковикам нет.
Мифы
За недостатком информации вебмастера и их хозяева питаются мифами относительно продвижения в поисковиках и в Сети вообще. Вот некоторые из них.
* Нужна постоянная аудитория. На самом деле у большинства корпоративных сайтов торговых компаний нет и не может быть постоянной аудитории - купив телевизор, я не буду ходить на сайт магазина каждый день. Постоянная аудитория бывает только у порталов, СМИ, узких контентных ресурсов и мест для общения. То есть у типично интернетовских проектов.
* Место на первой странице = успех. На самом деле это некорректное высказывание (см. вступление).
* Бывает быстрая, дешевая и эффективная раскрутка. Это обман: дешевая бывает, эффективная бывает, а быстрой и эффективной не бывает вообще.
* Есть гарантированные методы. См. выше про неустранимую ненадежность поисковиков.
* Все вокруг - накрутчики. Как минимум 99% владельцев сайтов никогда не занимались накруткой и даже не умеют этого делать.
Дешевая и дорогая раскрутка
Есть огромный спрос на дешевую раскрутку. Существует и дорогая раскрутка. Вот сравнительные характеристики.
"Дешевая раскрутка"
Методы
Вот основные методы, применяемые для дешевой и опасной раскрутки.
* Манипуляции с текстом сайта. Обычно это устаревшие попытки обмануть поисковик с помощью светло-серого текста по светло-серому фону, набивание поля ключевых слов терминами "секс, порно, линукс, рефераты, ...", создание ссылочных страниц-паровозов и другие приемы. Поисковики подобные ухищрения считают спамом и в лучшем случае не учитывают.
* Входные страницы (doorways). Размещение различного рода страниц на бесплатных хостингах или своем сервере со списком ключевых слов и автоматическим перебрасыванием на сайт (редиректом). Считается спамом и может повлечь удаление из индекса.
* Переменные страницы (cloaking). Настройка на поисковик - распознавание индексного робота поисковика и подсовывание ему не тех станиц, что видит пользователь. Считается спамом и жестоко карается (если заметят).
* "Секретные методы". Обычно "знатоки" дешевой раскрутки намекают на владение магическими и секретными технологиями. Здесь имеется полная аналогия с разделом "Оккультные услуги" в рекламных газетах.
[pagebreak]
Вред от дешевой раскрутки
* Создает иллюзии. Даже при видимом успехе (попадание на первые страницы) дешевая раскрутка фактически создает иллюзию успеха, так как посещаемость не гарантируется, не закрепляется, да и привлеченная в пиковый момент аудитория довольно случайна.
* Создает опасность для бизнеса. За применение сомнительных методов сайт могут выкинуть из индекса поисковика, а быстрое рассмотрение проблемы и восстановление никем не гарантируется, и даже денег за него не берут. А исключение из индекса - прямая потеря денег, затраченных на сайт.
* Практически пустая трата денег. После такой раскрутки в среднем не происходит роста продаж или хотя бы посещаемости.
Поисковая оптимизация
Как это делается
Вот как мы делаем поисковую оптимизацию, направленную на кумулятивное повышение видимости.
* Построение семантического ядра. Строится на основе содержания сайта и его конкурентов, синонимов, близких слов и анализа их статистики в поисковиках.
* Анализ спроса и доли рынка. Анализируется статистика ядра запросов на основе "Яндекс-Директа" и "Рамблер-Ассоциаций".
* Коррекция текстов и структуры сайта. Семантическое ядра используется для коррекции текстов, титулов и т. п., создания новых страниц и главок.
* Правильные аннотации и регистрация. На основе ядра пишутся и регистрируются новые аннотации для Тор100, "Листа", каталогов.
* Поисковая реклама. Запросы ядра используются для создания текстовых баннеров для "Яндекс-Директа" и "Google AdWords".
* Наращивание объема контента. Ядро запросов используется для создания новых разделов и страниц.
* Входные рекламные страницы. Создаются специальные рекламные страницы, с некоторым содержанием (описанием товара, каталогом и т. п.), с приглашением перейти "внутрь" продвигаемого сайта, на страницу нижнего уровня. Страницы ориентированы на низкочастотные запросы из семантического ядра. Такие страницы не нарушают правил поисковиков и не обманывают посетителей.
Ядро запросов
Составление семантического ядра состоит из следующих шагов:
* Анализ текстов сайта - выбор значимых терминов.
* Анализ частот запросов. Статистика запросов в "Яндекс-Директ", "Google".
* Ассоциативный анализ ("Рамблер") - добавление "близких" тем.
* Анализ слов-попутчиков - выбор не тематических, но частых попутчиков ключевых слов (глаголов, местоимений, прилагательных).
* Статистический анализ - отрезание хвоста.
Оценка доли рынка
Оценка доли рынка может делаться только очень приблизительно, как самая грубая прикидка для размышления, однако это всё же количественный метод. Вот основные шаги.
* Составление ядра.
* Суммарная частотность ядра по "Яндекс-Директ".
* Экстраполяция на весь Рунет с коэффициентом 1,8-2,2.
* Сравнение с количеством приходов с поисковиков ("SpyLOG" и др.)
Использование семантического ядра
Будучи составленным, семантическое ядро должно использоваться везде, где есть тексты компании - владельца сайта.
* Коррекция текстов сайта.
* Аннотации для каталогов и рейтингов.
* Создание новых страниц (глоссарии, каталоги, главки статей).
* Текстовые баннеры для поисковой рекламы.
Наращивание контента
Наиболее устойчивый эффект дает наращивание содержания сайта (контента); естественно, при этом лучше не забывать о правильных формулировках и терминах, получаемых из ядра запросов.
Плюсы
* Масса сайта повышает его ранг в поисковиках. Большинство поисковиков объединяют результаты поиска в сайты (кластеризуют их), при этом "техническая" масса сайта повышает ранг.
* Много страниц во многих местах. Ваши страницы начинают появляться во многих местах - в результатах поиска по разным запросам, по ссылкам и так далее. Количество показов пользователям автоматически увеличивается.
* Вебмастера начинают ссылаться на ваш сайт. Хороший контент всегда привлекает ссылки, ссылки повышают ваш ссылочный ранг, а это важнейший способ подсчета ранга сайта поисковиками.
* Кумулятивный эффект. Всё вышеперечисленное само "разогревает" сайт, как начинает тлеть торф или таять снег от давления. Здесь имеется петля положительной обратной связи.
Минусы
* Трудоемко, дорого. Контент просто долго писать и верстать. Но еще труднее придумывать.
* Нужны специалисты и энтузиасты. К сожалению, для создания контента нужны одержимые идеей люди. Их нужно удерживать, содержать, лелеять.
* Долгое время срабатывания. Кумулятивный эффект срабатывает не сразу - нужны как минимум месяцы. Но зато потом эффект не ослабевает, если сайт хотя бы поддерживается в "живом" состоянии.
Изостатическое правило контента
Чем больше контента на сайте, тем выше он всплывает.
Поисковая реклама
Лучший способ попасть на первую страницу
Очевидно, что поисковая реклама - это самый верный способ попасть на первую страницу. Просто потому, что ваши баннеры, текстовые блоки, баннеры поисковой рекламы типа "Яндекс-Директ" помещают именно на первую страницу результатов поиска.
Плюсы
* Точное попадание. Поисковая реклама нацелена на самую мотивированную аудиторию.
* Высокая эффективность при удаче. Если создать удачный текстовый или графический баннер, можно получить "кликабельность" (CTR) на уровне 25%.
* Низкая входная стоимость. Чтобы попробовать этот вид рекламы, достаточно 10-20 долларов. При удаче и стоимость привлечения одного посетителя будет весьма низкой.
* Скорость и интерактивность. Разместить объявление можно за несколько минут, имея кредитную карту. Точно так же просто изменить объявление, чтобы настроить "кликабельность".
Минусы
* Не закрепляет посещаемость. Как и баннерная реклама, дает кратковременный эффект.
* Низкая видимость на странице. Пока баннеры поисковой рекламы очень похожи на технические сообщения поисковика, глаз с них "соскальзывает".
* Новизна. Малый опыт использования приводит к неумелому обращению, нежеланию рекламодателей выделять бюджет и пр.
Как правильно использовать
Этот эффективный инструмент мы советуем использовать следующим образом:
* для разовых рекламных кампаний;
* использовать семантическое ядро;
* подбирать низкочастотные формулировки;
* заголовки должны совпадать с запросами;
* настраивать интерактивно.
Выводы: как попасть на первые страницы
* Нужно оценить спрос и составить семантическое ядро.
* Нужно выправить тексты, объявления и аннотации.
* Нужно растить контент и заниматься ссылками.
* Нужно запастись терпением.
* Нужен сайт, с которого не уйдут посетители.
Услуги по предоставлению хостинга бывают следующих видов:
Бесплатный хостинг (Free web hosting service)
Полностью бесплатен для пользователя. Как правило, дается доменное в поддомене хостера, на хостинге часто висит баннерная реклама, которая мешает дизайну, список поддерживаемых технологий ограничен, часто нет поддержки скриптовых языков (php, asp.net и java). Подобный хостинг на большее, чем под домашняя страничка, не подходит.
Виртуальный хостинг (Shared web hosting service)
Ваш веб-сайт находится на том же сервере, как и многие другие сайты, в диапазоне от нескольких до сотен или тысяч. Как правило, все домены могут разделить общий пул серверных ресурсов, таких как память и процессор. Управление работой всех сайтов идет через виртуальные хосты средствами веб-сервера apache.
Реселлеры хостинга (Reseller web hosting)
Когда провайдер хостинга позволяет клиентам стать самостоятельными провайдерами хостинга. Дилеры могут самостоятельно настраивать свой сервер, создавать отдельные домены. Реселлеры затем перепродают свой хостинг по более высокой цене своим клиентам, зарабатывая на разнице. Дилеры могут сильно отличаться по размерам: они могут иметь свои собственные сервера или же арендовать их у хостера.
Аренда части сервера. Отличается от виртуального тем, что каждый пользователь считает, что у него как бы свой собственной выделенный сервер, но он фактически лишь делит его с другими пользователями. Как правило, пользователи имеют доступ к настройкам конфигурации той части сервера, которая ими арендована, также регулировать размеры трафика, количество баз данных, электронных почтовых ящиков и ftp-аккаунтов.
Выделенный сервер (Dedicated hosting service)
Пользователь получает в аренду или ставит свой сервер на площадке хостера. Предоставляется полный контроль над сервером (корневой доступ для Linux / администратора для Windows). Выделенный хостинг делится на самообслуживание клиентов или на обслуживании администраторов хостера (за дополнительную плату). Если пользователь имеет полный административный доступ, то это означает, что он несет ответственность за обеспечение безопасности и поддержание своего сервера.
Управляемые службы хостинга (Managed hosting service)
Пользователь получает свой собственный Web сервер, но не имеет полного контроля над ним (корневой доступ Linux / администратора для Windows). Однако он может управлять своими данными через FTP или другие средства удаленного управления. Пользователям запрещается полный контроль по той причине, что провайдер должен гарантировать качество обслуживания, не позволяя пользователю изменять конфигурацию сервера или создавать потенциально опасных проблем конфигурации. Пользователь, как правило, не владеет сервером, а лишь арендует его.
Колокейшен (Collocation web hosting service)
Предоставляются услуги, аналогичные выделенному серверу, но пользователь владеет размещенным сервером. Хостинговая компания обеспечивает физическое пространство и обеспечивает работоспособность сервера (питание, охрану, защиту от перегрева, пыли и влаги).
Это самый мощный и дорогостоящий вид услуг веб-хостинга. В большинстве случаев колокейшен провайдер почти не оказывает поддержки непосредственно для своих клиентов, а предоставляет только электричество, доступ в Интернет и стойку для сервера.
В большинстве случаев для колокейшена, клиент имеет собственного системного администратора, который может в любое время посещать дата-центр хостера для настройки и конфигурирования сервера (программное обеспечение, замена оборудования сервера).
Технология стека TCP/IP сложилась в основном в конце 1970-х годов и с тех пор основные принципы работы базовых протоколов, таких как IP, TCP, UDP и ICMP, практически не изменились. Однако, сам компьютерный мир за эти годы значительно изменился, поэтому долго назревавшие усовершенствования в технологии стека TCP/IP сейчас стали необходимостью.
Основными обстоятельствами, из-за которых требуется модификация базовых протоколов стека TCP/IP, являются следующие.
* Повышение производительности компьютеров и коммуникационного оборудования. За время существования стека производительность компьютеров возросла на два порядка, объемы оперативной памяти выросли более чем в 30 раз, пропускная способность магистрали Internet в Соединенных Штатах выросла в 800 раз.
* Появление новых приложений. Коммерческий бум вокруг Internet и использование ее технологий при создании intranet привели к появлению в сетях TCP/IP, ранее использовавшихся в основном в научных целях, большого количества приложений нового типа, работающих с мультимедийной информацией. Эти приложения чувствительны к задержкам передачи пакетов, так как такие задержки приводят к искажению передаваемых в реальном времени речевых сообщений и видеоизображений. Особенностью мультимедийных приложений является также передача очень больших объемов информации. Некоторые технологии вычислительных сетей, например, frame relay и ATM, уже имеют в своем арсенале механизмы для резервирования полосы пропускания для определенных приложений. Однако эти технологии еще не скоро вытеснят традиционные технологии локальных сетей, не поддерживающие мультимедийные приложения (например, Ethernet). Следовательно, необходимо компенсировать такой недостаток средствами сетевого уровня, то есть средствами протокола IP.
* Бурное расширение сети Internet. В начале 90-х годов сеть Internet расширялась очень быстро, новый узел появлялся в ней каждые 30 секунд, но 95-й год стал переломным - перспективы коммерческого использования Internet стали отчетливыми и сделали ее развитие просто бурным. Первым следствием такого развития стало почти полное истощение адресного пространства Internet, определяемого полем адреса IP в четыре байта.
* Новые стратегии администрирования. Расширение Internet связано с его проникновением в новые страны и новые отрасли промышленности. При этом в сети появляются новые органы администрирования, которые начинают использовать новые методы администрирования. Эти методы требуют появления новых средств в базовых протоколах стека TCP/IP.
Сообщество Internet уже несколько лет работает над разработкой новой спецификации для базового протокола стека - протокола IP. Выработано уже достаточно много предложений, от простых, предусматривающих только расширения адресного пространства IP, до очень сложных, приводящих к существенному увеличению стоимости реализации IP в высокопроизводительных (и так недешевых) маршрутизаторах.
Основным предложением по модернизации протокола IP является предложение, разработанное группой IETF. Сейчас принято называть ее предложение версией 6 - IPv6, а все остальные предложения группируются под названием IP Next Generation, IPng.
В предложении IETF протокол IPv6 оставляет основные принципы IPv4 неизменными. К ним относятся дейтаграммный метод работы, фрагментация пакетов, разрешение отправителю задавать максимальное число хопов для своих пакетов. Однако, в деталях реализации протокола IPv6 имеются существенные отличия от IPv4. Эти отличия коротко можно описать следующим образом.
* Использование более длинных адресов. Новый размер адреса - наиболее заметное отличие IPv6 от IPv4. Версия 6 использует 128-битные адреса.
* Гибкий формат заголовка. Вместо заголовка с фиксированными полями фиксированного размера (за исключением поля Резерв), IPv6 использует базовый заголовок фиксированного формата плюс набор необязательных заголовков различного формата.
* Поддержка резервирования пропускной способности. В IPv6 механизм резервирования пропускной способности заменяет механизм классов сервиса версии IPv4.
* Поддержка расширяемости протокола. Это одно из наиболее значительных изменений в подходе к построению протокола - от полностью детализированного описания протокола к протоколу, который разрешает поддержку дополнительных функций.
Адресация в IPv6
Адреса назначения и источника в IPv6 имеют длину 128 бит или 16 байт. Версия 6 обобщает специальные типы адресов версии 4 в следующих типах адресов:
* Unicast - индивидуальный адрес. Определяет отдельный узел - компьютер или порт маршрутизатора. Пакет должен быть доставлен узлу по кратчайшему маршруту.
* Cluster - адрес кластера. Обозначает группу узлов, которые имеют общий адресный префикс (например, присоединенных к одной физической сети). Пакет должен быть маршрутизирован группе узлов по кратчайшему пути, а затем доставлен только одному из членов группы (например, ближайшему узлу).
* Multicast - адрес набора узлов, возможно в различных физических сетях. Копии пакета должны быть доставлены каждому узлу набора, используя аппаратные возможности групповой или широковещательной доставки, если это возможно.
Как и в версии IPv4, адреса в версии IPv6 делятся на классы, в зависимости от значения нескольких старших бит адреса.
Большая часть классов зарезервирована для будущего применения. Наиболее интересным для практического использования является класс, предназначенный для провайдеров услуг Internet, названный Provider-Assigned Unicast.
Каждому провайдеру услуг Internet назначается уникальный идентификатор, которым помечаются все поддерживаемые им сети. Далее провайдер назначает своим абонентам уникальные идентификаторы, и использует оба идентификатора при назначении блока адресов абонента. Абонент сам назначает уникальные идентификаторы своим подсетям и узлам этих сетей.
Абонент может использовать технику подсетей, применяемую в версии IPv4, для дальнейшего деления поля идентификатора подсети на более мелкие поля.
Описанная схема приближает схему адресации IPv6 к схемам, используемым в территориальных сетях, таких как телефонные сети или сети Х.25. Иерархия адресных полей позволит магистральным маршрутизаторам работать только со старшими частями адреса, оставляя обработку менее значимых полей маршрутизаторам абонентов.
Под поле идентификатора узла требуется выделения не менее 6 байт, для того чтобы можно было использовать в IP-адресах МАС-адреса локальных сетей непосредственно.
Для обеспечения совместимости со схемой адресации версии IPv4, в версии IPv6 имеется класс адресов, имеющих 0000 0000 в старших битах адреса. Младшие 4 байта адреса этого класса должны содержать адрес IPv4. Маршрутизаторы, поддерживающие обе версии адресов, должны обеспечивать трансляцию при передаче пакета из сети, поддерживающей адресацию IPv4, в сеть, поддерживающую адресацию IPv6, и наоборот.
Все протоколы обмена маршрутной информацией стека TCP/IP относятся к классу адаптивных протоколов, которые в свою очередь делятся на две группы, каждая из которых связана с одним из следующих типов алгоритмов:
* дистанционно-векторный алгоритм (Distance Vector Algorithms, DVA),
* алгоритм состояния связей (Link State Algorithms, LSA).
В алгоритмах дистанционно-векторного типа каждый маршрутизатор периодически и широковещательно рассылает по сети вектор расстояний от себя до всех известных ему сетей. Под расстоянием обычно понимается число промежуточных маршрутизаторов через которые пакет должен пройти прежде, чем попадет в соответствующую сеть. Может использоваться и другая метрика, учитывающая не только число перевалочных пунктов, но и время прохождения пакетов по связи между соседними маршрутизаторами.
Получив вектор от соседнего маршрутизатора, каждый маршрутизатор добавляет к нему информацию об известных ему других сетях, о которых он узнал непосредственно (если они подключены к его портам) или из аналогичных объявлений других маршрутизаторов, а затем снова рассылает новое значение вектора по сети. В конце-концов, каждый маршрутизатор узнает информацию об имеющихся в интерсети сетях и о расстоянии до них через соседние маршрутизаторы.
Дистанционно-векторные алгоритмы хорошо работают только в небольших сетях. В больших сетях они засоряют линии связи интенсивным широковещательным трафиком, к тому же изменения конфигурации могут отрабатываться по этому алгоритму не всегда корректно, так как маршрутизаторы не имеют точного представления о топологии связей в сети, а располагают только обобщенной информацией - вектором дистанций, к тому же полученной через посредников. Работа маршрутизатора в соответствии с дистанционно-векторным протоколом напоминает работу моста, так как точной топологической картины сети такой маршрутизатор не имеет.
Наиболее распространенным протоколом, основанным на дистанционно-векторном алгоритме, является протокол RIP.
Алгоритмы состояния связей обеспечивают каждый маршрутизатор информацией, достаточной для построения точного графа связей сети. Все маршрутизаторы работают на основании одинаковых графов, что делает процесс маршрутизации более устойчивым к изменениям конфигурации. Широковещательная рассылка используется здесь только при изменениях состояния связей, что происходит в надежных сетях не так часто.
Для того, чтобы понять, в каком состоянии находятся линии связи, подключенные к его портам, маршрутизатор периодически обменивается короткими пакетами со своими ближайшими соседями. Этот трафик также широковещательный, но он циркулирует только между соседями и поэтому не так засоряет сеть.
Протоколом, основанным на алгоритме состояния связей, в стеке TCP/IP является протокол OSPF.
Дистанционно-векторный протокол RIP
Протокол RIP (Routing Information Protocol) представляет собой один из старейших протоколов обмена маршрутной информацией, однако он до сих пор чрезвычайно распространен в вычислительных сетях. Помимо версии RIP для сетей TCP/IP, существует также версия RIP для сетей IPX/SPX компании Novell.
В этом протоколе все сети имеют номера (способ образования номера зависит от используемого в сети протокола сетевого уровня), а все маршрутизаторы - идентификаторы. Протокол RIP широко использует понятие "вектор расстояний". Вектор расстояний представляет собой набор пар чисел, являющихся номерами сетей и расстояниями до них в хопах.
Вектора расстояний итерационно распространяются маршрутизаторами по сети, и через несколько шагов каждый маршрутизатор имеет данные о достижимых для него сетях и о расстояниях до них. Если связь с какой-либо сетью обрывается, то маршрутизатор отмечает этот факт тем, что присваивает элементу вектора, соответствующему расстоянию до этой сети, максимально возможное значение, которое имеет специальный смысл - "связи нет". Таким значением в протоколе RIP является число 16.
При необходимости отправить пакет в сеть D маршрутизатор просматривает свою базу данных маршрутов и выбирает порт, имеющий наименьшее расстояния до сети назначения (в данном случае порт, связывающий его с маршрутизатором 3).
Для адаптации к изменению состояния связей и оборудования с каждой записью таблицы маршрутизации связан таймер. Если за время тайм-аута не придет новое сообщение, подтверждающее этот маршрут, то он удаляется из маршрутной таблицы.
При использовании протокола RIP работает эвристический алгоритм динамического программирования Беллмана-Форда, и решение, найденное с его помощью является не оптимальным, а близким к оптимальному. Преимуществом протокола RIP является его вычислительная простота, а недостатками - увеличение трафика при периодической рассылке широковещательных пакетов и неоптимальность найденного маршрута.
При обрыве связи с сетью 1 маршрутизатор М1 отмечает, что расстояние до этой сети приняло значение 16. Однако получив через некоторое время от маршрутизатора М2 маршрутное сообщение о том, что от него до сети 1 расстояние составляет 2 хопа, маршрутизатор М1 наращивает это расстояние на 1 и отмечает, что сеть 1 достижима через маршрутизатор 2. В результате пакет, предназначенный для сети 1, будет циркулировать между маршрутизаторами М1 и М2 до тех пор, пока не истечет время хранения записи о сети 1 в маршрутизаторе 2, и он не передаст эту информацию маршрутизатору М1.
Для исключения подобных ситуаций маршрутная информация об известной маршрутизатору сети не передается тому маршрутизатору, от которого она пришла.
Существуют и другие, более сложные случаи нестабильного поведения сетей, использующих протокол RIP, при изменениях в состоянии связей или маршрутизаторов сети.
Комбинирование различных протоколов обмена. Протоколы EGP и BGP сети Internet
Большинство протоколов маршрутизации, применяемых в современных сетях с коммутацией пакетов, ведут свое происхождение от сети Internet и ее предшественницы - сети ARPANET. Для того, чтобы понять их назначение и особенности, полезно сначала познакомится со структурой сети Internet, которая наложила отпечаток на терминологию и типы протоколов.
Internet изначально строилась как сеть, объединяющая большое количество существующих систем. С самого начала в ее структуре выделяли магистральную сеть (core backbone network), а сети, присоединенные к магистрали, рассматривались как автономные системы (autonomous systems). Магистральная сеть и каждая из автономных систем имели свое собственное административное управление и собственные протоколы маршрутизации. Далее маршрутизаторы будут называться шлюзами для следования традиционной терминологии Internet.
Шлюзы, которые используются для образования подсетей внутри автономной системы, называются внутренними шлюзами (interior gateways), а шлюзы, с помощью которых автономные системы присоединяются к магистрали сети, называются внешними шлюзами (exterior gateways). Непосредственно друг с другом автономные системы не соединяются. Соответственно, протоколы маршрутизации, используемые внутри автономных систем, называются протоколами внутренних шлюзов (interior gateway protocol, IGP), а протоколы, определяющие обмен маршрутной информацией между внешними шлюзами и шлюзами магистральной сети - протоколами внешних шлюзов (exterior gateway protocol, EGP). Внутри магистральной сети также может использоваться любой собственный внутренний протокол IGP.
Смысл разделения всей сети Internet на автономные системы в ее многоуровневом представлении, что необходимо для любой крупной системы, способной к расширению в больших масштабах. Внутренние шлюзы могут использовать для внутренней маршрутизации достаточно подробные графы связей между собой, чтобы выбрать наиболее рациональный маршрут. Однако, если информация такой степени детализации будет храниться во всех маршрутизаторах сети, то топологические базы данных так разрастутся, что потребуют наличия памяти гигантских размеров, а время принятия решений о маршрутизации непременно возрастет.
Поэтому детальная топологическая информация остается внутри автономной системы, а автономную систему как единое целое для остальной части Internet представляют внешние шлюзы, которые сообщают о внутреннем составе автономной системы минимально необходимые сведения - количество IP-сетей, их адреса и внутреннее расстояние до этих сетей от данного внешнего шлюза.
При инициализации внешний шлюз узнает уникальный идентификатор обслуживаемой им автономной системы, а также таблицу достижимости (reachability table), которая позволяет ему взаимодействовать с другими внешними шлюзами через магистральную сеть.
Затем внешний шлюз начинает взаимодействовать по протоколу EGP с другими внешними шлюзами и обмениваться с ними маршрутной информацией, состав которой описан выше. В результате, при отправке пакета из одной автономной системы в другую, внешний шлюз данной системы на основании маршрутной информации, полученной от всех внешних шлюзов, с которыми он общается по протоколу EGP, выбирает наиболее подходящий внешний шлюз и отправляет ему пакет.
Каждая функция работает на основе обмена сообщениями запрос-ответ.
Так как каждая автономная система работает под контролем своего административного штата, то перед началом обмена маршрутной информацией внешние шлюзы должны согласиться на такой обмен. Сначала один из шлюзов посылает запрос на установление соседских отношений (acquisition request) другому шлюзу. Если тот согласен на это, то он отвечает сообщением подтверждение установления соседских отношений (acquisition confirm), а если нет - то сообщением отказ от установления соседских отношений (acquisition refuse), которое содержит также причину отказа.
После установления соседских отношений шлюзы начинают периодически проверять состояние достижимости друг друга. Это делается либо с помощью специальных сообщений (привет (hello) и Я-услышал-тебя (I-heard-you)), либо встраиванием подтверждающей информации непосредственно в заголовок обычного маршрутного сообщения.
Обмен маршрутной информацией начинается с посылки одним из шлюзов другому сообщения запрос данных (poll request) о номерах сетей, обслуживаемых другим шлюзом и расстояниях до них от него. Ответом на это сообщение служит сообщение обновленная маршрутная информация (routing ). Если же запрос оказался некорректным, то в ответ на него отсылается сообщение об ошибке.
Все сообщения протокола EGP передаются в поле данных IP-пакетов. Сообщения EGP имеют заголовок фиксированного формата.
Поля Тип и Код совместно определяют тип сообщения, а поле Статус - информацию, зависящую от типа сообщения. Поле Номер автономной системы - это номер, назначенный той автономной системе, к которой присоединен данный внешний шлюз. Поле Номер последовательности служит для синхронизации процесса запросов и ответов.
[pagebreak]
Поле IP-адрес исходной сети в сообщениях запроса и обновления маршрутной информации обозначает сеть, соединяющую два внешних шлюза.
Сообщение об обновленной маршрутной информации содержит список адресов сетей, которые достижимы в данной автономной системе. Этот список упорядочен по внутренним шлюзам, которые подключены к исходной сети и через которые достижимы данные сети, а для каждого шлюза он упорядочен по расстоянию до каждой достижимой сети от исходной сети, а не от данного внутреннего шлюза. Для примера внешний шлюз R2 в своем сообщении указывает, что сеть 4 достижима с помощью шлюза R3 и расстояние ее равно 2, а сеть 2 достижима через шлюз R2 и ее расстояние равно 1 (а не 0, как если бы шлюз измерял ее расстояние от себя, как в протоколе RIP).
Протокол EGP имеет достаточно много ограничений, связанных с тем, что он рассматривает магистральную сеть как одну неделимую магистраль.
Развитием протокола EGP является протокол BGP (Border Gateway Protocol), имеющий много общего с EGP и используемый наряду с ним в магистрали сети Internet.
Протокол состояния связей OSPF
Протокол OSPF (Open Shortest Path Firs) является достаточно современной реализацией алгоритма состояния связей (он принят в 1991 году) и обладает многими особенностями, ориентированными на применение в больших гетерогенных сетях.
Протокол OSPF вычисляет маршруты в IP-сетях, сохраняя при этом другие протоколы обмена маршрутной информацией.
Непосредственно связанные (то есть достижимые без использования промежуточных маршрутизаторов) маршрутизаторы называются "соседями". Каждый маршрутизатор хранит информацию о том, в каком состоянии по его мнению находится сосед. Маршрутизатор полагается на соседние маршрутизаторы и передает им пакеты данных только в том случае, если он уверен, что они полностью работоспособны. Для выяснения состояния связей маршрутизаторы-соседи достаточно часто обмениваются короткими сообщениями HELLO.
Для распространения по сети данных о состоянии связей маршрутизаторы обмениваются сообщениями другого типа. Эти сообщения называются router links advertisement - объявление о связях маршрутизатора (точнее, о состоянии связей). OSPF-маршрутизаторы обмениваются не только своими, но и чужими объявлениями о связях, получая в конце-концов информацию о состоянии всех связей сети. Эта информация и образует граф связей сети, который, естественно, один и тот же для всех маршрутизаторов сети.
Кроме информации о соседях, маршрутизатор в своем объявлении перечисляет IP-подсети, с которыми он связан непосредственно, поэтому после получения информации о графе связей сети, вычисление маршрута до каждой сети производится непосредственно по этому графу по алгоритму Дэйкстры. Более точно, маршрутизатор вычисляет путь не до конкретной сети, а до маршрутизатора, к которому эта сеть подключена. Каждый маршрутизатор имеет уникальный идентификатор, который передается в объявлении о состояниях связей. Такой подход дает возможность не тратить IP-адреса на связи типа "точка-точка" между маршрутизаторами, к которым не подключены рабочие станции.
Маршрутизатор вычисляет оптимальный маршрут до каждой адресуемой сети, но запоминает только первый промежуточный маршрутизатор из каждого маршрута. Таким образом, результатом вычислений оптимальных маршрутов является список строк, в которых указывается номер сети и идентификатор маршрутизатора, которому нужно переслать пакет для этой сети. Указанный список маршрутов и является маршрутной таблицей, но вычислен он на основании полной информации о графе связей сети, а не частичной информации, как в протоколе RIP.
Описанный подход приводит к результату, который не может быть достигнут при использовании протокола RIP или других дистанционно-векторных алгоритмов. RIP предполагает, что все подсети определенной IP-сети имеют один и тот же размер, то есть, что все они могут потенциально иметь одинаковое число IP-узлов, адреса которых не перекрываются. Более того, классическая реализация RIP требует, чтобы выделенные линии "точка-точка" имели IP-адрес, что приводит к дополнительным затратам IP-адресов.
В OSPF такие требования отсутствуют: сети могут иметь различное число хостов и могут перекрываться. Под перекрытием понимается наличие нескольких маршрутов к одной и той же сети. В этом случае адрес сети в пришедшем пакете может совпасть с адресом сети, присвоенным нескольким портам.
Если адрес принадлежит нескольким подсетям в базе данных маршрутов, то продвигающий пакет маршрутизатор использует наиболее специфический маршрут, то есть адрес подсети, имеющей более длинную маску.
Например, если рабочая группа ответвляется от главной сети, то она имеет адрес главной сети наряду с более специфическим адресом, определяемым маской подсети. При выборе маршрута к хосту в подсети этой рабочей группы маршрутизатор найдет два пути, один для главной сети и один для рабочей группы. Так как последний более специфичен, то он и будет выбран. Этот механизм является обобщением понятия "маршрут по умолчанию", используемого во многих сетях.
Использование подсетей с различным количеством хостов является вполне естественным. Например, если в здании или кампусе на каждом этаже имеются локальные сети, и на некоторых этажах компьютеров больше, чем на других, то администратор может выбрать размеры подсетей, отражающие ожидаемые требования каждого этажа, а не соответствующие размеру наибольшей подсети.
В протоколе OSPF подсети делятся на три категории:
* "хост-сеть", представляющая собой подсеть из одного адреса,
* "тупиковая сеть", которая представляет собой подсеть, подключенную только к одному маршрутизатору,
* "транзитная сеть", которая представляет собой подсеть, подключенную к более чем одному маршрутизатору.
Транзитная сеть является для протокола OSPF особым случаем. В транзитной сети несколько маршрутизаторов являются взаимно и одновременно достижимыми. В широковещательных локальных сетях, таких как Ethernet или Token Ring, маршрутизатор может послать одно сообщение, которое получат все его соседи. Это уменьшает нагрузку на маршрутизатор, когда он посылает сообщения для определения существования связи или обновленные объявления о соседях.
Однако, если каждый маршрутизатор будет перечислять всех своих соседей в своих объявлениях о соседях, то объявления займут много места в памяти маршрутизатора. При определении пути по адресам транзитной подсети может обнаружиться много избыточных маршрутов к различным маршрутизаторам. На вычисление, проверку и отбраковку этих маршрутов уйдет много времени.
Когда маршрутизатор начинает работать в первый раз (то есть инсталлируется), он пытается синхронизировать свою базу данных со всеми маршрутизаторами транзитной локальной сети, которые по определению имеют идентичные базы данных. Для упрощения и оптимизации этого процесса в протоколе OSPF используется понятие "выделенного" маршрутизатора, который выполняет две функции.
Во-первых, выделенный маршрутизатор и его резервный "напарник" являются единственными маршрутизаторами, с которыми новый маршрутизатор будет синхронизировать свою базу. Синхронизировав базу с выделенным маршрутизатором, новый маршрутизатор будет синхронизирован со всеми маршрутизаторами данной локальной сети.
Во-вторых, выделенный маршрутизатор делает объявление о сетевых связях, перечисляя своих соседей по подсети. Другие маршрутизаторы просто объявляют о своей связи с выделенным маршрутизатором. Это делает объявления о связях (которых много) более краткими, размером с объявление о связях отдельной сети.
Для начала работы маршрутизатора OSPF нужен минимум информации - IP-конфигурация (IP-адреса и маски подсетей), некоторая информация по умолчанию (default) и команда на включение. Для многих сетей информация по умолчанию весьма похожа. В то же время протокол OSPF предусматривает высокую степень программируемости.
Интерфейс OSPF (порт маршрутизатора, поддерживающего протокол OSPF) является обобщением подсети IP. Подобно подсети IP, интерфейс OSPF имеет IP-адрес и маску подсети. Если один порт OSPF поддерживает более, чем одну подсеть, протокол OSPF рассматривает эти подсети так, как если бы они были на разных физических интерфейсах, и вычисляет маршруты соответственно.
Интерфейсы, к которым подключены локальные сети, называются широковещательными (broadcast) интерфейсами, так как они могут использовать широковещательные возможности локальных сетей для обмена сигнальной информацией между маршрутизаторами. Интерфейсы, к которым подключены глобальные сети, не поддерживающие широковещание, но обеспечивающие доступ ко многим узлам через одну точку входа, например сети Х.25 или frame relay, называются нешироковещательными интерфейсами с множественным доступом или NBMA (non-broadcast multi-access).
Они рассматриваются аналогично широковещательным интерфейсам за исключением того, что широковещательная рассылка эмулируется путем посылки сообщения каждому соседу. Так как обнаружение соседей не является автоматическим, как в широковещательных сетях, NBMA-соседи должны задаваться при конфигурировании вручную. Как на широковещательных, так и на NBMA-интерфейсах могут быть заданы приоритеты маршрутизаторов для того, чтобы они могли выбрать выделенный маршрутизатор.
Интерфейсы "точка-точка", подобные PPP, несколько отличаются от традиционной IP-модели. Хотя они и могут иметь IP-адреса и подмаски, но необходимости в этом нет.
В простых сетях достаточно определить, что пункт назначения достижим и найти маршрут, который будет удовлетворительным. В сложных сетях обычно имеется несколько возможных маршрутов. Иногда хотелось бы иметь возможности по установлению дополнительных критериев для выбора пути: например, наименьшая задержка, максимальная пропускная способность или наименьшая стоимость (в сетях с оплатой за пакет). По этим причинам протокол OSPF позволяет сетевому администратору назначать каждому интерфейсу определенное число, называемое метрикой, чтобы оказать нужное влияние на выбор маршрута.
Число, используемое в качестве метрики пути, может быть назначено произвольным образом по желанию администратора. Но по умолчанию в качестве метрики используется время передачи бита в 10-ти наносекундных единицах (10 Мб/с Ethernet'у назначается значение 10, а линии 56 Кб/с - число 1785). Вычисляемая протоколом OSPF метрика пути представляет собой сумму метрик всех проходимых в пути связей; это очень грубая оценка задержки пути. Если маршрутизатор обнаруживает более, чем один путь к удаленной подсети, то он использует путь с наименьшей стоимостью пути.
В протоколе OSPF используется несколько временных параметров, и среди них наиболее важными являются интервал сообщения HELLO и интервал отказа маршрутизатора (router dead interval).
HELLO - это сообщение, которым обмениваются соседние, то есть непосредственно связанные маршрутизаторы подсети, с целью установить состояние линии связи и состояние маршрутизатора-соседа. В сообщении HELLO маршрутизатор передает свои рабочие параметры и говорит о том, кого он рассматривает в качестве своих ближайших соседей. Маршрутизаторы с разными рабочими параметрами игнорируют сообщения HELLO друг друга, поэтому неверно сконфигурированные маршрутизаторы не будут влиять на работу сети.
Каждый маршрутизатор шлет сообщение HELLO каждому своему соседу по крайней мере один раз на протяжении интервала HELLO. Если интервал отказа маршрутизатора истекает без получения сообщения HELLO от соседа, то считается, что сосед неработоспособен, и распространяется новое объявление о сетевых связях, чтобы в сети произошел пересчет маршрутов.
Пример маршрутизации по алгоритму OSPF
Представим себе один день из жизни транзитной локальной сети. Пусть у нас имеется сеть Ethernet, в которой есть три маршрутизатора - Джон, Фред и Роб (имена членов рабочей группы Internet, разработавшей протокол OSPF). Эти маршрутизаторы связаны с сетями в других городах с помощью выделенных линий.
Пусть произошло восстановление сетевого питания после сбоя. Маршрутизаторы и компьютеры перезагружаются и начинают работать по сети Ethernet. После того, как маршрутизаторы обнаруживают, что порты Ethernet работают нормально, они начинают генерировать сообщения HELLO, которые говорят о их присутствии в сети и их конфигурации. Однако маршрутизация пакетов начинает осуществляться не сразу - сначала маршрутизаторы должны синхронизировать свои маршрутные базы.
На протяжении интервала отказа маршрутизаторы продолжают посылать сообщения HELLO. Когда какой-либо маршрутизатор посылает такое сообщение, другие его получают и отмечают, что в локальной сети есть другой маршрутизатор. Когда они посылают следующее HELLO, они перечисляют там и своего нового соседа.
Когда период отказа маршрутизатора истекает, то маршрутизатор с наивысшим приоритетом и наибольшим идентификатором объявляет себя выделенным (а следующий за ним по приоритету маршрутизатор объявляет себя резервным выделенным маршрутизатором) и начинает синхронизировать свою базу данных с другими маршрутизаторами.
[pagebreak]
С этого момента времени база данных маршрутных объявлений каждого маршрутизатора может содержать информацию, полученную от маршрутизаторов других локальных сетей или из выделенных линий. Роб, например, вероятно получил информацию от Мило и Робина об их сетях, и он может передавать туда пакеты данных. Они содержат информацию о собственных связях маршрутизатора и объявления о связях сети.
Базы данных теперь синхронизированы с выделенным маршрутизатором, которым является Джон. Джон суммирует свою базу данных с каждой базой данных своих соседей - базами Фреда, Роба и Джеффа - индивидуально. В каждой синхронизирующейся паре объявления, найденные только в какой-либо одной базе, копируются в другую. Выделенный маршрутизатор, Джон, распространяет новые объявления среди других маршрутизаторов своей локальной сети.
Например, объявления Мило и Робина передаются Джону Робом, а Джон в свою очередь передает их Фреду и Джеффри. Обмен информацией между базами продолжается некоторое время, и пока он не завершится, маршрутизаторы не будут считать себя работоспособными. После этого они себя таковыми считают, потому что имеют всю доступную информацию о сети.
Посмотрим теперь, как Робин вычисляет маршрут через сеть. Две из связей, присоединенных к его портам, представляют линии T-1, а одна - линию 56 Кб/c. Робин сначала обнаруживает двух соседей - Роба с метрикой 65 и Мило с метрикой 1785. Из объявления о связях Роба Робин обнаружил наилучший путь к Мило со стоимостью 130, поэтому он отверг непосредственный путь к Мило, поскольку он связан с большей задержкой, так как проходит через линии с меньшей пропускной способностью. Робин также обнаруживает транзитную локальную сеть с выделенным маршрутизатором Джоном. Из объявлений о связях Джона Робин узнает о пути к Фреду и, наконец, узнает о пути к маршрутизаторам Келли и Джеффу и к их тупиковым сетям.
После того, как маршрутизаторы полностью входят в рабочий режим, интенсивность обмена сообщениями резко падает. Обычно они посылают сообщение HELLO по своим подсетям каждые 10 секунд и делают объявления о состоянии связей каждые 30 минут (если обнаруживаются изменения в состоянии связей, то объявление передается, естественно, немедленно). Обновленные объявления о связях служат гарантией того, что маршрутизатор работает в сети. Старые объявления удаляются из базы через определенное время.
Представим, однако, что какая-либо выделенная линия сети отказала. Присоединенные к ней маршрутизаторы распространяют свои объявления, в которых они уже не упоминают друг друга. Эта информация распространяется по сети, включая маршрутизаторы транзитной локальной сети. Каждый маршрутизатор в сети пересчитывает свои маршруты, находя, может быть, новые пути для восстановления утраченного взаимодействия.
Сравнение протоколов RIP и OSPF по затратам на широковещательный трафик
В сетях, где используется протокол RIP, накладные расходы на обмен маршрутной информацией строго фиксированы. Если в сети имеется определенное число маршрутизаторов, то трафик, создаваемый передаваемой маршрутной информацией, описываются формулой (1):
(1) F = (число объявляемых маршрутов/25) x 528 (байтов в сообщении) x
(число копий в единицу времени) x 8 (битов в байте)
В сети с протоколом OSPF загрузка при неизменном состоянии линий связи создается сообщениями HELLO и обновленными объявлениями о состоянии связей, что описывается формулой (2):
(2) F = { [ 20 + 24 + 20 + (4 x число соседей)] x
(число копий HELLO в единицу времени) }x 8 +
[(число объявлений x средний размер объявления) x
(число копий объявлений в единицу времени)] x 8,
где 20 - размер заголовка IP-пакета,
24 - заголовок пакета OSPF,
20 - размер заголовка сообщения HELLO,
4 - данные на каждого соседа.
Интенсивность посылки сообщений HELLO - каждые 10 секунд, объявлений о состоянии связей - каждые полчаса. По связям "точка-точка" или по широковещательным локальным сетям в единицу времени посылается только одна копия сообщения, по NBMA сетям типа frame relay каждому соседу посылается своя копия сообщения. В сети frame relay с 10 соседними маршрутизаторами и 100 маршрутами в сети (подразумевается, что каждый маршрут представляет собой отдельное OSPF-обобщение о сетевых связях и что RIP распространяет информацию о всех этих маршрутах) трафик маршрутной информации определяется соотношениями (3) и (4):
(3) RIP: (100 маршрутов / 25 маршрутов в объявлении) x 528 x
(10 копий / 30 сек) = 5 632 б/с
(4) OSPF: {[20 + 24 + 20 + (4 x 10) x (10 копий / 10 сек)] +
[100 маршрутов x (32 + 24 + 20) + (10 копий / 30 x 60 сек]} x 8 = 1 170 б/с
Как видно из полученных результатов, для нашего гипотетического примера трафик, создаваемый протоколом RIP, почти в пять раз интенсивней трафика, создаваемого протоколом OSPF.
Использование других протоколов маршрутизации
Случай использования в сети только протокола маршрутизации OSPF представляется маловероятным. Если сеть присоединена к Internet'у, то могут использоваться такие протоколы, как EGP (Exterior Gateway protocol), BGP (Border Gateway Protocol, протокол пограничного маршрутизатора), старый протокол маршрутизации RIP или собственные протоколы производителей.
Когда в сети начинает применяться протокол OSPF, то существующие протоколы маршрутизации могут продолжать использоваться до тех пор, пока не будут полностью заменены. В некоторых случаях необходимо будет объявлять о статических маршрутах, сконфигурированных вручную.
В OSPF существует понятие автономных систем маршрутизаторов (autonomous systems), которые представляют собой домены маршрутизации, находящиеся под общим административным управлением и использующие единый протокол маршрутизации. OSPF называет маршрутизатор, который соединяет автономную систему с другой автономной системой, использующей другой протокол маршрутизации, пограничным маршрутизатором автономной системы (autonomous system boundary router, ASBR).
В OSPF маршруты (именно маршруты, то есть номера сетей и расстояния до них во внешней метрике, а не топологическая информация) из одной автономной системы импортируются в другую автономную систему и распространяются с использованием специальных внешних объявлений о связях.
Внешние маршруты обрабатываются за два этапа. Маршрутизатор выбирает среди внешних маршрутов маршрут с наименьшей внешней метрикой. Если таковых оказывается больше, чем 2, то выбирается путь с меньшей стоимостью внутреннего пути до ASBR.
Область OSPF - это набор смежных интерфейсов (территориальных линий или каналов локальных сетей). Введение понятия "область" служит двум целям - управлению информацией и определению доменов маршрутизации.
Для понимания принципа управления информацией рассмотрим сеть, имеющую следующую структуру: центральная локальная сеть связана с помощью 50 маршрутизаторов с большим количеством соседей через сети X.25 или frame relay. Эти соседи представляют собой большое количество небольших удаленных подразделений, например, отделов продаж или филиалов банка.
Из-за большого размера сети каждый маршрутизатор должен хранить огромное количество маршрутной информации, которая должна передаваться по каждой из линий, и каждое из этих обстоятельств удорожает сеть. Так как топология сети проста, то большая часть этой информации и создаваемого ею трафика не имеют смысла.
Для каждого из удаленных филиалов нет необходимости иметь детальную маршрутную информацию о всех других удаленных офисах, в особенности, если они взаимодействуют в основном с центральными компьютерами, связанными с центральными маршрутизаторами. Аналогично, центральным маршрутизаторам нет необходимости иметь детальную информацию о топологии связей с удаленными офисами, соединенными с другими центральными маршрутизаторами.
В то же время центральные маршрутизаторы нуждаются в информации, необходимой для передачи пакетов следующему центральному маршрутизатору. Администратор мог бы без труда разделить эту сеть на более мелкие домены маршрутизации для того, чтобы ограничить объемы хранения и передачи по линиям связи не являющейся необходимой информации. Обобщение маршрутной информации является главной целью введения областей в OSPF.
В протоколе OSPF определяется также пограничный маршрутизатор области (ABR, area border router). ABR - это маршрутизатор с интерфейсами в двух или более областях, одна из которых является специальной областью, называемой магистральной (backbone area). Каждая область работает с отдельной базой маршрутной информации и независимо вычисляет маршруты по алгоритму OSPF.
Пограничные маршрутизаторы передают данные о топологии области в соседние области в обобщенной форме - в виде вычисленных маршрутов с их весами. Поэтому в сети, разбитой на области, уже не действует утверждение о том, что все маршрутизаторы оперируют с идентичными топологическими базами данных.
Маршрутизатор ABR берет информацию о маршрутах OSPF, вычисленную в одной области, и транслирует ее в другую область путем включения этой информации в обобщенное суммарное объявление (summary) для базы данных другой области. Суммарная информация описывает каждую подсеть области и дает для нее метрику. Суммарная информация может быть использована тремя способами: для объявления об отдельном маршруте, для обобщения нескольких маршрутов или же служить маршрутом по умолчанию.
Дальнейшее уменьшение требований к ресурсам маршрутизаторов происходит в том случае, когда область представляет собой тупиковую область (stub area). Этот атрибут администратор сети может применить к любой области, за исключением магистральной. ABR в тупиковой области не распространяет внешние объявления или суммарные объявления из других областей. Вместо этого он делает одно суммарное объявление, которое будет удовлетворять любой IP-адрес, имеющий номер сети, отличный от номеров сетей тупиковой области. Это объявление называется маршрутом по умолчанию.
Маршрутизаторы тупиковой области имеют информацию, необходимую только для вычисления маршрутов между собой плюс указания о том, что все остальные маршруты должны проходить через ABR. Такой подход позволяет уменьшить в нашей гипотетической сети количество маршрутной информации в удаленных офисах без уменьшения способности маршрутизаторов корректно передавать пакеты.
Протокол обмена управляющими сообщениями ICMP (Internet Control Message Protocol) позволяет маршрутизатору сообщить конечному узлу об ошибках, с которыми машрутизатор столкнулся при передаче какого-либо IP-пакета от данного конечного узла.
Управляющие сообщения ICMP не могут направляться промежуточному маршрутизатору, который участвовал в передаче пакета, с которым возникли проблемы, так как для такой посылки нет адресной информации - пакет несет в себе только адрес источника и адрес назначения, не фиксируя адреса промежуточных маршрутизаторов.
Протокол ICMP - это протокол сообщения об ошибках, а не протокол коррекции ошибок. Конечный узел может предпринять некоторые действия для того, чтобы ошибка больше не возникала, но эти действия протоколом ICMP не регламентируются.
Каждое сообщение протокола ICMP передается по сети внутри пакета IP. Пакеты IP с сообщениями ICMP маршрутизируются точно так же, как и любые другие пакеты, без приоритетов, поэтому они также могут теряться. Кроме того, в загруженной сети они могут вызывать дополнительную загрузку маршрутизаторов. Для того, чтобы не вызывать лавины сообщения об ошибках, потери пакетов IP, переносящие сообщения ICMP об ошибках, не могут порождать новые сообщения ICMP.
Формат сообщений протокола ICMP
Существует несколько типов сообщений ICMP. Каждый тип сообщения имеет свой формат, при этом все они начинаются с общих трех полей: 8-битного целого числа, обозначающего тип сообщения (TYPE), 8-битного поля кода (CODE), который конкретизирует назначение сообщения, и 16-битного поля контрольной суммы (CHECKSUM). Кроме того, сообщение ICMP всегда содержит заголовок и первые 64 бита данных пакета IP, который вызвал ошибку.
Это делается для того, чтобы узел-отправитель смог более точно проанализировать причину ошибки, так как все протоколы прикладного уровня стека TCP/IP содержат наиболее важную информацию для анализа в первых 64 битах своих сообщений.
Поле типа может иметь следующие значения:
Значение | Тип сообщения
0_________Эхо-ответ (Echo Replay)
3_________Узел назначения недостижим (Destination Unreachable)
4_________Подавление источника (Source Quench)
5_________Перенаправление маршрута (Redirect)
8_________Эхо-запрос (Echo Request)
11________Истечение времени дейтаграммы (Time Exceeded for a Datagram)
12________Проблема с параметром пакета (Parameter Problem on a Datagram)
13________Запрос отметки времени (Timestamp Request)
14________Ответ отметки времени (Timestamp Replay)
17________Запрос маски (Address Mask Request)
18________Ответ маски (Address Mask Replay)
Как видно из используемых типов сообщений, протокол ICMP представляет собой некоторое объединение протоколов, решающих свои узкие задачи.
Эхо-протокол
Протокол ICMP предоставляет сетевым администраторам средства для тестирования достижимости узлов сети. Эти средства представляют собой очень простой эхо-протокол, включающий обмен двумя типами сообщений: эхо-запрос и эхо-ответ. Компьютер или маршрутизатор посылают по интерсети эхо-запрос, в котором указывают IP-адрес узла, достижимость которого нужно проверить. Узел, который получает эхо-запрос, формирует и отправляет эхо-ответ и возвращает сообщение узлу - отправителю запроса.
В запросе могут содержаться некоторые данные, которые должны быть возвращены в ответе. Так как эхо-запрос и эхо-ответ передаются по сети внутри IP-пакетов, то их успешная доставка означает нормальное функционирование всей транспортной системы интерсети.
Во многих операционных системах используется утилита ping, которая предназначена для тестирования достижимости узлов. Эта утилита обычно посылает серию эхо-запросов к тестируемому узлу и предоставляет пользователю статистику об утерянных эхо-ответах и среднем времени реакции сети на запросы.
Сообщения о недостижимости узла назначения
Когда маршрутизатор не может передать или доставить IP-пакет, он отсылает узлу, отправившему этот пакет, сообщение "Узел назначения недостижим" (тип сообщения - 3). Это сообщение содержит в поле кода значение, уточняющее причину, по которой пакет не был доставлен. Причина кодируется следующим образом:
Код - | - Причина
0________Сеть недостижима
1________Узел недостижим
2________Протокол недостижим
3________Порт недостижим
4________Требуется фрагментация, а бит DF установлен
5________Ошибка в маршруте, заданном источником
6________Сеть назначения неизвестна
7________Узел назначения неизвестен
8________Узел-источник изолирован
9________Взаимодействие с сетью назначения административно запрещено
10_______Взаимодействие с узлом назначения административно запрещено
11_______Сеть недостижима для заданного класса сервиса
12_______Узел недостижим для заданного класса сервиса
Маршрутизатор, обнаруживший по какой-либо причине, что он не может передать IP-пакет далее по сети, должен отправить ICMP-сообщение узлу-источнику, и только потом отбросить пакет. Кроме причины ошибки, ICMP-сообщение включает также заголовок недоставленного пакета и его первые 64 бита поля данных.
Узел или сеть назначения могут быть недостижимы из-за временной неработоспособности аппаратуры, из-за того, что отправитель указал неверный адрес назначения, а также из-за того, что маршрутизатор не имеет данных о маршруте к сети назначения.
Недостижимость протокола и порта означают отсутствие реализации какого-либо протокола прикладного уровня в узле назначения или же отсутствие открытого порта протоколов UDP или TCP в узле назначения.
Ошибка фрагментации возникает тогда, когда отправитель послал в сеть пакет с признаком DF, запрещающим фрагментацию, а маршрутизатор столкнулся с необходимостью передачи этого пакета в сеть со значением MTU меньшим, чем размер пакета.
Перенаправление маршрута
Маршрутные таблицы у компьютеров обычно являются статическими, так как конфигурируются администратором сети, а у маршрутизаторов - динамическими, формируемыми автоматически с помощью протоколов обмена маршрутной информации. Поэтому с течением времени при изменении топологии сети маршрутные таблицы компьютеров могут устаревать. Кроме того, эти таблицы обычно содержат минимум информации, например, только адреса нескольких маршрутизаторов.
Для корректировки поведения компьютеров маршрутизатор может использовать сообщение протокола ICMP, называемое "Перенаправление маршрута" (Redirect).
Это сообщение посылается в том случае, когда маршрутизатор видит, что компьютер отправляет пакет некоторой сети назначения нерациональным образом, то есть не тому маршрутизатору локальной сети, от которого начинается более короткий маршрут к сети назначения.
Механизм перенаправления протокола ICMP позволяет компьютерам содержать в конфигурационном файле только IP-адреса его локальных маршрутизаторов. С помощью сообщений о перенаправлении маршрутизаторы будут сообщать компьютеру всю необходимую ему информацию о том, какому маршрутизатору следует отправлять пакеты для той или иной сети назначения. То есть маршрутизаторы передадут компьютеру нужную ему часть их таблиц маршрутизации.
В сообщении "Перенаправление маршрута" маршрутизатор помещает IP-адрес маршрутизатора, которым нужно пользоваться в дальнейшем, и заголовок исходного пакета с первыми 64 битами его поля данных. Из заголовка пакета узел узнает, для какой сети необходимо пользоваться указанным маршрутизатором.
Типы адресов: физический (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-адресов.