В этой статье мы поговорим о рекламе сайта. Статья состоит из двух частей, в первой я расскажу вам отдельно о рекламе домашних страничек, во второй мы поговорим подробнее и серьезнее о рекламе в интернете, как таковой. Надеюсь, вы не пропустите первую часть статьи, потому что, не смотря ни на что, она принципиально важна.
Реклама домашних страниц.
Реклама, как таковая.
1 - Первый этап. Каталоги.
2 - Второй этап. Обмен баннерами и ссылками с тематическими ресурсами.
3 - Третий этап. Добавление в поисковые системы.
4 - Четвертый этап. Баннерные системы.
5 - Пятый этап. Нетрадиционные способы.
6 - Шестой этап. Как не потерять вашего посетителя.
7 - Седьмой этап. Повторение этапов.
Сразу поясню, почему я хочу поговорить с вами о рекламе домашних страниц отдельно.
Давайте рассмотрим эволюцию пользователя в интернете: сначала он гость, посещающий чужие сайты, знакомящийся с новыми людьми, чтобы переписываться с ними по почте, общаться в чате или на форумах. Но наступает момент, когда так хочется обзавестись собственным домиком, чтобы показать свою состоятельность и полноправность в гигантской паутине.
И вот когда домик отстроен, первые гости переступили его порог, похвалили, возникает такое свербящее чувство, которое можно назвать желанием популярности, желанием привлечь в свой домик толпы и толпы гостей в абсолютно разных целях: чтобы увеличить количество виртуальных друзей, а может быть найти любовь, или просто приобрести популярность, или даже извлечь выгоду из своего труда, заработать денюжку.
Все это вполне справедливые желания, т.к. и в реальной жизни нам свойственно самоутверждаться, но Интернет - это не тень реальной жизни, это информационная сеть, а простые домашние странички (обо всем и ни о чем, а точнее о вас любимых), они становятся мусором, когда в поиске важной, нужной и полезной информации человек натыкается на них, а не на то, что ищет в действительности. Поэтому, прежде чем ударяться в рекламные акции всеми правдами и неправдами, стоит задуматься: а нужно ли это? а как сделать, чтобы моя страница не стала мусором, а помогла найти мне друзей? А заработать?
Итак, сразу скажу, что заработок в интернете на пустом месте, из ничего, благодаря странице с баннерами спонсоров – миф, поверьте мне, и лучше забудьте об этом, не тратьте зря ни свое, ни чужое время.
Другое дело желание общения, некой популярности. Реклама вашей страницы в данном случае будет бесполезна, это все равно, что дать объявление в газете: вот мой дом, я там живу. Ну, и что? Кто вы такой, чтобы мы заинтересовались и пришли в гости? Другое дело, когда вы идете в какое-нибудь общественное место, клуб, знакомитесь там с новыми людьми, и говорите им, давая свой адрес:
- Вот мой дом, я там живу.
- О! – скажут они, - мы обязательно придем, нам с тобой было интересно пообщаться, и мы хотим узнать о тебе побольше и пообщаться еще не раз.
Т.е. я веду к тому, что домашняя страница, это как ваша квартира, чем больше у вас друзей, тем чаще они приходят к вам в гости, они заинтересованы в вас, именно поэтому им интересна ваша страница. Итак, для того, чтобы ваша страница была популярной, вы сами должны быть популярными. Благо, в интернете для этого много способов. Есть чаты, сайты знакомств, конференции и сайты, где люди общаются по определенным интересам, игровые сайты. Посещайте их, общайтесь, если вы интересны, то, посмотрев вашу анкету на таком сайте, люди обязательно посетят, и не раз, вашу домашнюю страницу.
И если у вас на душе все равно свербит и хочется добавить свою домашнюю страницу в поисковые системы и каталоги, тогда будьте вежливы, добавляйте ее в категории для Домашних страниц, они везде есть специально для вас. Повторюсь, не надо мусорить, вы поступите очень не красиво, если из-за того, что на вашей странице вы рассказываете о своей игрушечной машине, вы начнете позиционировать вашу страницу, как замечательный сайт об автомобилях. Это не даст популярности вашему сайту, т.к. на самом деле это не сайт об автомобилях, а лишь ваша домашняя страница, это только вызывает раздражение и негативные эмоции у тех, кого вы обманули.
Реклама, как таковая.
Я рассказывал о том, как сделать домашнюю страницу популярной, и читал нотации вам не просто так. Самое главное понять, что вы хотите достичь рекламной кампанией, и нужно ли вам это на самом деле.
Почему надо к рекламе подходить серьезно? Почему слово раскрутка надо отмести, как не состоятельное? Почему вы должны подходить к рекламе цивилизованно, когда вы можете просто начать «крутить» свой сайт и можете получить в день до 1000 посетителей с нуля при помощи специальных программ?
Потому что раскрутка это всего лишь фикция. Это посетитель, которого не было, который не вернется, который не пойдет по вашему сайту дальше первой страницы. Это зря затраченные усилия и потраченное время.
Для нас самое главное найти своего посетителя и заинтересовать его в том, что мы хотим ему предложить.
Но давайте по порядку, прежде всего вам следует понять, что количество и постоянный приток посетителей на вашем сайте зависит не только от рекламы, а также от наличия интересной, определенной группе людей, информации, ради которой они будут посещать ваш ресурс. Так, например, некоторые крупные компании, создают тематические информационные порталы относительно области своей деятельности, чтобы таким образом привлечь не только посетителей на свой сайт, но и потенциальных клиентов. Т.е. первое, что мы должны сделать, это качественный и интересный ресурс, сами понимаете, жиденькие сайты с 2-мя-3-мя десятками страничек, с информацией ни о чем, не могут претендовать на звание качественного ресурса.
Также хочу заметить, если вы создаете сайт для коммерческой организации, то лучше всего этот процесс от начала до конца поручить специалистам: и разработку, и рекламу, потому что и то, и другое взаимосвязано. По сути, сайт – это что-то вроде вашей рекламной брошюры: во время рекламной кампании вы привлекаете к ней внимание, чтобы ее прочли, и если ваш сайт-брошюра не интересен и не заинтриговал человека, пришедшего по рекламному объявлению, то смысл рекламной компании сводится к нулю.
Итак, поскольку я считаю, что коммерческие организации могут потратиться на рекламу, и даже должны, а обычные информационные порталы и некоммерческие организации часто не имеют возможности позволить себе относительно дорогостоящую рекламу, поэтому моя статья скорее для владельцев ресурсов последнего типа, поэтому я буду вести речь о бесплатных, или не очень дорогих способах рекламы сайта.
Когда, мы имеем качественный ресурс, хорошо продуманный, выверенный, стоящий того, чтобы о нем узнали, не надо нестись сломя голову на сайты поисковых систем и каталогов, не торопитесь. Следует продумать, какая аудитория заинтересована в вашем ресурсе: возраст, пол, профессиональная занятость этой аудитории – например, грузчики они или учителя. После того, как вы определились какова ваша аудитория, надо понять, где ваша аудитория в интернете обитает: на какие сайты ходит, какие журналы читает, и т.д. И только после этого мы начинаем охоту, господа :) .
Первый этап. Каталоги.
Первым делом мы добавляем себя в каталоги. Да-да, именно в каталоги, а не в поисковые системы, чуть позже объясню почему. Для добавления в каталоги нам надо придумать рекламное не слишком длинное объявление, такое, которое по возможности выделит ваш сайт среди других, подобных вашему, и может заинтересовать вашего потенциального посетителя. Объявление должно быть написано без грамматических ошибок, проверьте себя, не поленитесь, прежде чем оставлять объявление в каталогах.
Какие каталоги нас интересуют? Желательно каталоги, которые собирают в себе сайты с тематикой, подобной нашей. Т.е. если наш сайт рассказывает о медицинских проблемах, то имеет смысл поместить его в каталог, который освящает медицинские ресурсы. От обычных каталогов мы тоже не отказываемся, если у них есть раздел для сайтов с нашей тематикой, если нет, то не имеет смысла пихать информацию о нашем ресурсе туда для количества, не тратьте время.
Весьма рекомендую вам сайт http://1ps.ru - лучшего ресурса в плане поиска каталогов и добавления себя в них вам не найти. Однако, не добавляйте свой сайт через него в поисковики, это лучше делать вручную, и не сразу.
Второй этап. Обмен баннерами и ссылками с тематическими ресурсами.
Когда мы добавляем наш сайт в каталоги, то стоит обратить там свое внимание на интересные и посещаемые ресурсы со сходной нашему ресурсу тематикой. Зачем? Потому что мы будем обмениваться с ними ссылками и баннерами (желательно маленькими баннерами, кнопками).
Выберите несколько наиболее интересных ресурсов, которые предлагают обмен ссылками и баннерами, и напишите их владельцам письма, в которых поинтересуйтесь, не захотят ли они обменяться с вами ссылками или баннерами. Письмо должно быть вежливым, содержать ссылку на ваш ресурс и информацию, где вы собираетесь разместить баннер/ссылку портала, с которым хотите обмениваться.
Письмо должно именно предлагать - наглые письма: мол, я разместил на вас ссылку, а вы теперь разместите на меня – нельзя писать ни в коем случае. Помните, владелец крупного ресурса, посещаемого и устоявшегося, делает вам одолжение, размещая баннер или ссылку на вас, а не вы ему.
Предложите разместить его ссылку на первой странице вашего сайта, при этом будьте готовы согласиться на то, что в ответ вашу ссылку повесят в разделе с не слишком большой посещаемостью, и уж, в любом случае, не на главной странице.
Зачем нам это нужно: потому что третьим этапом будет размещение в поисковых системах, от того, какие ресурсы по качеству и сколько ресурсов на вас ссылается, зависит ваша позиция в списке результатов, выдаваемых поисковой системой пользователю на какой-либо запрос. Поймите, когда отпадет надобность, и вы добьетесь нужных вам результатов и посещаемости, вы можете отказаться от обмена баннерами/ссылками с другим ресурсом, или же заключить новые условия обмена.
Кстати, на втором этапе ваши друзья и знакомые могут вам помочь, разместив на ваш портал ссылку у себя на сайтах.
Третий этап. Добавление в поисковые системы.
Вы должны понимать, что сразу ничего не делается, прежде чем все ваши действия принесут результаты, пройдет какое-то время. Не надо никуда торопиться, ваш ресурс некоммерческий, от того, что к вам сразу не будет притока посетителей, трагедии не случится. К тому же бесплатная реклама не может быть сопоставима по эффективности с той, в которую вы вложили деньги.
В поисковые системы мы добавляем информацию о нашем ресурсе через неделю-другую, после того, как мы разобрались с каталогами и обменом. Мы это делаем в надежде, что к тому времени, как мы будем добавлять о себе информацию в поисковики, они успеют проиндексировать (заметить), страницы других сайтов, где появилась информация о нас.
Для поисковых систем мы заготавливаем заранее ключевые слова - это слова, которые, как мы предполагаем, будет вводить для поиска человек, когда он ищет ресурсы, содержащие такую информацию, как на нашем сайте. Также для поисковых систем мы заготавливаем интересное описание, нашего ресурса.
На что стоит обратить внимание при составлении списка ключевых слов - ключевые слова, должны встречаться в обычном тексте на страницах нашего сайта. Так, если мы берем слово «медицина», как одно из ключевых, оно должно быть в тексте на первой странице нашего сайта, и не только на ней, т.к. поисковые системы смотрят, соответствуют ли заявленные ключевые слова тем, что содержатся в тексте ваших страниц. От этого тоже зависит ваша позиция в списке результатов, выдаваемых поисковой системой пользователю.
Более того, есть специальные META тэги, которые мы должны прописать в коде всех страниц нашего сайта, они содержат ключевые слова и описание вашего сайта. Содержимое мета-тэгов не видно посетителю вашей страницы, зато учитывается поисковыми системами.
Четвертый этап. Баннерные системы.
Участвовать в баннерных системах имеет смысл, только если они тематические – т.е. допустим, баннерная система, в которой участвуют только сайты с медицинской тематикой. В универсальных баннерных системах, не подчиненных единой тематике участвовать вам не имеет смысла. Это не эффективно, ведь вы сможете показывать в день столько баннеров, сколько было показано на страницах вашего сайта, т.е. мало, а если их при этом не видит ваш потенциальный посетитель, человек, который заинтересован в предлагаемой вами информации, то эффективность баннерной рекламы стремиться к нулю, незаинтересованный человек просто не перейдет по баннеру на ваш сайт.
Баннерные системы нас могут интересовать также в том случае, если вы все-таки решили немного потратиться на рекламу. В этом случае вы можете купить баннерные показы на каких-нибудь крупных сайтах, где обитает ваш потенциальный посетитель.
Пятый этап. Нетрадиционные способы.
Вы можете мне не поверить, но этот этап может быть самым эффективным, для повышения посещаемости вашего сайта.
Ваша задача придумать, как еще можно рекламировать свою страницу. К сожалению, общего рецепта тут быть не может. Но я расскажу, как я действовал в случае с Постройкой.ру, в свое время, чтобы вы поняли, что я имею ввиду.
Я сидел, думал, как же сделать сайт популярнее. И мне пришла в голову замечательная идея: у меня есть замечательный и уникальный учебник по html, если сделать оффлайн версию, положить в архив, тогда можно будет поместить мой учебник на сайты-сборники разных программ, ведь я ничего от этого не теряю. Конечно, прежде чем сделать это, я посмотрел, дают ли эти сайты такую возможность, оказалось, что на них имеются специальные разделы для обучающих программ и мой учебник подходит для размещения там. Решено, сделано. Я разместил учебник по всем крупным файловым архивам. В итоге, через какое-то время посещаемость моего сайта заметно возросла, потому что посетители, прочитав оффлайн версию уникального учебника приходили на сайт в поисках других интересных и полезных материалов, а также советов автора.
Конечно, этот способ подойдет не всем. Но вы можете написать несколько интересных статей, и поместить их на крупные порталы, если статьи будут интересные, то читатель зайдет на ваш сайт, ведь в статье всегда указываются при публикации данные об авторе.
Я полагаю, это далеко не единственные нетрадиционные способы, стоит только приложить чуточку выдумки, и вы найдете хороший способ для рекламы своего сайта. В любом случае, это не должен быть способ навязывания: некоторые несознательные граждане захламляют чужие форумы и гостевые следующим образом - “Здрасте, я Вася Пупкин, мне ваш сайт нравится. Посетите мой сайт.” - это неправильное позиционирование вас и вашего ресурса, так вы только выставляете себя в дурном свете.
Шестой этап. Как не потерять вашего посетителя.
Чтобы посетитель возвращался к вам вновь и вновь, нужно периодически добавлять на сайт новую информацию. Кроме того, нужно постоянно поддерживать с посетителем общение: установите форум или гостевую книгу, где посетители смогут задавать вам вопросы. Старайтесь каждый день просматривать форум, гостевую книгу, почту, и отвечать на вопросы ваших посетителей.
Вы также можете устраивать опросы, чтобы узнать мнение своего посетителя, что ему нужно, это создаст у него впечатление, что он принимает участие в развитии вашего ресурса, ему будет это приятно. Вы можете устраивать конкурсы с небольшими призами. Вы можете сделать новостную рассылку + рассылку с частью новых материалов, которые появляются на сайте. И много чего еще.
Не забывайте, главное, это заинтересованность вашего посетителя в том, что вы ему предлагаете, он нужен вам, а вы должны попытаться стать нужными ему. Когда вы нужны посетителю, когда у него остаются хорошие и теплые впечатления о вашем сайте, он начинает рекомендовать вас друзьям, знакомым. Он начинает сам упоминать о вас на форумах и чатах, где он общается. Он добавляет на вас ссылку на своей странице, чтобы поделиться с другими таким хорошим ресурсом, как ваш. А это и есть лучшая реклама, а это и есть признание того, что ваш ресурс действительно замечательный.
Седьмой этап. Повторение этапов.
Каждый день в интернете появляется много разных и новых ресурсов. В том числе и каталоги, и поисковые системы, и новые сайты, близкие по тематике вашему. Ваша задача следить за новыми ресурсами, добавлять свой сайт в новые каталоги и поисковые системы. Если вы будете заниматься рекламой периодически, то у вас больше шансов сделать свой сайт посещаемым, и привлечь больше новых посетителей.
Для программирования расширенных хранимых процедур 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 необходимые для получения списка доменных пользователей;
- Создадим готовый проект (реализуем наше техническое задание)
Надеюсь - до скорой встречи!
Говорить о важности сетевых технологий на страницах сетевого издания немного странно, однако мы считаем, что даже среди сетевой публики, многие с трудом знакомы с важностью, особенно в современных условиях, объединения компьютеров в сеть. Статья повествует о важнейших элементах локальной сети, настройки под Windows XP и о наиболее часто задаваемых вопросах, связанных с построением, конфигурированием и администрированием локальных сетей.
Итак, напомним, что сети бывают локальные и глобальные. Локальные сети объединяют некоторое количество компьютеров в пределах одного или нескольких зданий. Такие сети иногда называют интранет. Глобальные сети подразумевают соединение различных локальных сетей в одну общую сеть, называемую Интернет.
Существует мнение, что если ты хоть раз поработал в составе сети, то работа без подключения к сети становиться болезненно тяжело. Да действительно, так, например наши компьютеры объединены в локальную сеть, подключенную с Интернет. Стоит произойти какой-нибудь неприятности с Интернетом, как работать становиться значительно тяжелее. Казалось бы, почему? Ведь по большому счету в сети мы видим просто чужие диски, иногда пользуемся вычислительными ресурсами удаленного процессора. Почему бы ни воспользоваться собственными дисками и мощностью собственного процессора. Все дело в информации. Ведь сегодня сеть это огромная база знаний, созданная усилиями каждого имеющего желание поделиться с другими своими знаниями и умениями. С одной стороны, это превращает сеть в некую «помойку» где из огромного объема информации приходится извлекать полезную информацию, с другой стороны нет ни одного другого электронного или любого off-line источника, способного дать ответ на абсолютно любой вопрос.
Сеть – развращает!
После длительной работы в сети иногда пользователь частично теряет возможность решать многие, простые вопросы обычными средствами. Так, например, поиск какой-либо информации без сети становиться просто невозможной. Единственным, доступным и действенным средством общения является e-mail или Интернет-пейджеры. С одной стороны «жители» сети являются достаточно сильными людьми, однако это касается только сети. В реальной ситуации, «сетевой житель» может быть достаточно слабым и беззащитным существом. Именно поэтому потеря доступа в сеть хотя бы на несколько дней, является достаточно тяжелой потерей для таких людей.
О чем эта статья?
Без сомнения, с точки зрения организации сети Windows XP самая простая операционная система от Microsoft. Точнее сказать, эта операционная система позволяет быстро и эффективно создавать небольшие сети для дома или небольшого офиса.
В этой статье мы расскажем о трех главных составляющих небольшой сети: совместное подключение к Интернет, совместное использование принтера, файлов и каталогов. В первую очередь мы нацеливаем эту статью на людей, только начинающих вникать во все тонкости «жизни» компьютера в сети. Однако и подготовленные пользователи смогут найти для себя не мало интересного.
Несмотря на наличие русской версии Windows XP, мы решили, что все примеры, приведенные в статье, будут для англоязычной версии Windows XP. Это значительно упростит создание сети для неопытных пользователей, использующих англоязычную версию.
Немного истории
Для того, что бы лучше понять превосходство сетевых решений в Windows XP давайте совершим краткий экскурс в историю развития операционных систем Windows. Для некоторых из Вас это отступление может быть раздражающим, однако нам было даже приятно вспомнить, чему мы радовались еще несколько лет назад. Давайте начнем с Windows 3.1.
Операционная система Windows 3.1 имела очень ограниченный инструментарий для организации даже самой простой сети и требовала использование программного обеспечения сторонних разработчиков. Возможно для операционной системы, выпущенной 10-12 лет назад, это было нормально. Специально для рабочих групп Microsoft выпустила Windows 3.11 for Workgroups, которая имела только протокол совместного использования файлов. Позднее в августе 1995 года была выпущена операционная система Windows 95. Несмотря на свою “глючность”, эта операционная система имела более продвинутые сетевые средства, однако по современным меркам все было очень сложно и недостаточно для требований современного пользователя. Через год была выпущена операционная система Windows NT 4.0, с дополнительными патчами и сервис паками. Windows NT 4.0 использовала интерфейс и принципы Windows 95. Главным отличием являлись наличие расширенных особенностей защиты, лучшие средства многозадачности, администрирование пользователей и больший упор на сетевую организацию для бизнес пользователей. Однако реализация сетевых особенностей оказалась еще сложнее, и недоступной для неподготовленного пользователя.
Через 2-3 года после Windows 95 были выпущены операционные системы Windows 98 и Millennium. Windows 98, за исключением NT, была первой настоящей 32-bit версией Windows с полностью 32-bit кодом. В то время как Windows 98 имела некоторые усовершенствование сетевого инструментария и возможностей, они все еще были похожи на Windows 95. Дополнительно Microsoft выпустила “Special Edition” Windows 98, известную как Windows 98 SE, в которой исправлены ошибки в сетевых протоколах. В феврале 2000 Microsoft выпустила Windows 2000. Эта система основана на ядре Windows NT и поэтому ее иногда называют Windows NT 5.0. Windows 2000 имеет очень продвинутые сетевые возможности, однако их реализация пока не проста, и напоминает Windows NT.
И наконец, сегодня мы стали свидетелями выпуска и развития операционной системы Windows XP. Обе версии (Professional и Home) являются очень красивым сочетанием сетевых возможностей NT, 2000 и простого и понятного пользовательского интерфейса.
Теперь, когда мы вспомнили, как развивались сетевые возможности операционной системы Windows, давайте переходить к нашей главной теме.
Физическая установка сети
Для упрощения, предположим, что мы используем в сети три компьютера – два “клиентских компьютера” и один «сервера». Для организации, даже такой маленькой сети нам понадобятся сетевые карты, которые устанавливаются в каждый компьютер, свич или хаб, а так же специальный сетевой кабель, называемый витая пара.
Выбор сетевой карты
В прошлом сетевая карта представляла собой отдельную ISA (для тех, кто не знает это такой старый стандарт слота расширения) или PCI плату. Причем их цена превышала 100$, что несколько ограничивало развития сетей в небольших организациях. Сегодня сетевая карта стала настолько доступной, что частенько ее интегрируют на системную плату. В случае, если Ваша плата не имеет интегрированного сетевого контроллера, то Вам придется воспользоваться внешней PCI платой. Карта должна соответствовать стандарту Realtek 10/100. Она стоит около 10$. Более дорогие карточки имеют множество дополнительных функций, обеспечивающих большую стабильность при передаче данных. Ниже на фотографии показан внешний вид типичной сетевой карты.
При выборе сетевой карты, необходимо обратить внимание на максимальную поддерживаемую скорость передачи 10/100. Это означает, что карта может передавать данные на скорости 10mbps и 100mbps в зависимости от сетевой архитектуры. Дополнительно необходимо, что бы карточка имела разъем RJ-45 (современный стандарт CAT5), поддерживающий скорость передачи 100mbps и обратно совместимый с 10mbps стандартом (именно такой разъем показан на фотографии). Самый последний стандарт “CAT6”, (пока находится в разработке) будет поддерживать скорости от 300mbps до 1gbps. Это означает, что Вы сможете копировать файлы в сети со скоростью 125 мегабайт в секунду. Это быстрее скорости современных жестких дисков. CAT5-E или категория 5 UTP Enhanced так же обратно совместима с 10, 100 и 1000Mbit Ethernet. Использование RJ-45 предпочтительнее, чем RJ-58, или больше известные как BNC. Этот разъем предназначен для подключения на более низких скоростях (ограничена 10mbps) коаксиальным кабелем.
Хаб против свича
Для управления всеми транзакциями (передача блоков информации) в сети используется устройство называемой хаб или свич. В чем отличие между этими двумя устройствами?. Во время передачи пакета данных хаб отправляет их сразу на все компьютеры, что значительно уменьшает пропускную способность канала. Свич, имеет встроенную память, в которой храниться информация о том, к какому порту подключен какой компьютер. Поэтому во время передачи пакета, он отправляется на определенный порт. Кроме того, свич позволяет использовать в сети контроллеры с разной скоростью передачи, при этом общая пропускная способность не будет опускаться до уровня контроллера с минимальной скоростью. Учитывая незначительное ценовое отличие мы настоятельно рекомендуем приобрести именно свич. На сегодняшний день впускаются свичи с 5, 8, 16, 24 или 32 портами. Цена устройства напрямую зависит от количества портов.
802.11a и 802.11b
Говоря об организации сети мы считаем необходимым затронуть вопрос беспроводных сетей, т.е. передающих информацию по радиоканалу. Такие сети становятся все популярнее, т.к. позволяют сделать размещение компьютеров более гибким, а пользователям использующим карманные компьютеры или ноутбуки, получить доступ к сети в любой точке офиса и даже за пределами. На сегодняшний день существует два стандарта 802.11a и 802.11b. Для реализации такого подключения необходимо использовать специальные хабы и сетевые карточки.
Как выбрать свич?
В принципе, любой. Например, мы используем 8-портовый свич от CNET, но другие брэнды, такие как Kingmax, Netgear, Dlink, 3COM так же имеют очень хорошее качество. В общем, в этом вопросе можно довериться компании, которая будет проводить у Вас сеть. Они обычно ставят то, что хорошо работает.
Рекомендации по конфигурированию сервера
Если Ваш сервер не планируется использовать для игр, нет необходимости использовать самый последний процессор Pentium 4 или Athlon XP с большим объемом оперативной памяти и емким жестким диском, а так же с самой последней графической картой GeForce 4. Главное, чего необходимо добиться, это стабильной круглосуточной работой. Так. Как сервер будет использовать Windows XP, он должен быть оснащен минимум 128MB RAM.
В идеале, Вы можете использовать процессор Pentium 2, III или Athlon 500MHz, при этом система будет достаточно хорошо работать в нашей среде.
Конфигурация сети в Windows XP
Установить сетевые параметры в Windows XP Вы можете несколькими способами. Во-первых, вручную. Этот метода предпочтительнее, т.к. позволяет контролировать все настройки. Во-вторых, для тех, кто ничего не понимает в сетевых терминах Microsoft включила мастер установки сети (Network Setup Wizard). Для запуска мастера, необходимо войти в “My Network Places” и нажать на “set up a home or small office network”. Нажмите Next, на втором экране будут описаны некоторые рекомендации по правильной установке. Фактически здесь Вы найдете полное руководство к действию. Нажимаем Next. Теперь для всех клиентских компьютеров Вы должны выбрать вторую опцию (The computer connects to the Internet through another computer on my network or through a residential gateway) и нажмите Next. На следующем экране Вы можете ввести или изменить имя компьютера. Теперь переходим к следующему окну, где мы сможем изменить название рабочей группе. Следующий экран резюмирует сделанные изменения и применяет их. На следующем экране Вам будет предложено создать диск установки сети. Так как мы делаем меленькую домашнюю сеть этот диск можно не создавать. Просто нажмите «Wizard and then Finish».
Мы просим извинить нас за нескончаемые переходы к следующему экрану, однако по другому описать действия мастера невозможно. В дальнейшем мы будем использовать первый, ручной режим.
[pagebreak]
Мастер сетевой идентификации
Теперь необходимо установить имя Вашего компьютера в рабочей группе, к которой он принадлежит. Для этого нажмите Start -> Settings -> Control Panel -> System -> и выберите закладку Computer Name. Сначала нажмите “Network ID”, что позволит активизировать мастер сетевой идентификации (Network Identification Wizard). На первом экране просто нажмите Next. На следующем экране нужно выбрать первую опцию (This computer is part of a business network, and I use it to connect to other computers at work), на следующем экране выберете вторую опцию (My company uses a network without a domain), Это приведет Вас к экрану показанном ниже...
Здесь Вы должны установить название рабочей группы. Эти действия Вы должны повторить на всех компьютерах Вашей сети.
Обращаем Ваше внимание, что некоторые broadband провайдеры используют свою собственную рабочую группу. В этом случае они должны Вас проинструктировать об использовании имени рабочей группы.
IP адресация
Прежде всего вы должны идентифицировать каждый компьютер в сети. Для этого служит так называемая IP (Internet Protocol) адресация. IP адрес – это уникальный номер Вашего компьютера в Вашей сети. IP адрес может быть “статическим” или “динамическим”. В своей внутренней сети Вы можете использовать IP адреса класса C, т.е. в диапазоне 192.168.0.1 до 192.168.0.254. Другими словами в одной рабочей группе может работать до 254 компьютеров. Обычно серверу назначают адрес 192.168.0.1. Когда Вы активизируете совместный доступ к сети (Internet Connection Sharing) по умолчанию Вашему серверу будет автоматически назначен этот адрес.
Конфигурация сервера
Примечание: Под XP и Windows NT для установки сетевых параметров Вы должны войти с правами администратора. OK – установив на все компьютеры сетевые карты, Вам необходимо назначить каждому компьютеру IP адрес. Для этого нажмите Start -> Settings -> Network Connections. Теперь кликните правой кнопкой мышки на “Local Area Connection” и выберите меню Properties. Затем укажите на протокол TCP/IP и нажмите Properties. Перед Вами откроется окно, позволяющее установить все необходимые сетевые параметры...
На скриншоте выше мы показываем настройку IP адреса для сервера. Пока этого достаточно. Ниже мы покажем, как конфигурировать клиентские компьютеры. Для того, что бы Вы лучше понять, как работает сервер в сети, мы приводим примерную схему подключения компьютеров рабочей группы к Интернет, через один компьютер.
Конфигурирование клиентских машин
Выше на скриншоте мы видим, что одному из клиентских компьютеров установлен IP адрес 192.168.0.5. Маска подсети устанавливается автоматически, по этому поводу Вам волноваться не стоит. Обратите внимание, что IP адрес должен быть уникальным, и не может повторяться внутри одной сети. В случае повторного использования IP адреса, Windows сообщит о возникновении проблемы с повторяющимся IP адресом. Ниже на рисунке, показано, что такое клиентский компьютер и его роль в сети.
Совместное использование Интернет
Как мы сказали в начале статьи, современная сеть должна решать три основные задачи: Совместный доступ к Интернет, совместное использование принтера и совместное использование файлов и папок. В принципе, все три задачи уже, так или иначе, решены в некоторых предыдущих версиях Windows. Однако в Windows XP они решены лучше и проще. Итак, в первую очередь давайте рассмотрим реализацию совместного доступа в Интернет. В нашем примере настройки клиентского компьютера мы устанавливаем обращение к серверу с IP адресом 192.168.0.1. Этот адрес указан как адрес шлюза, т.е. компьютера, через который все остальные будут обращаться в Интернет. Тот же адрес мы указываем в качестве первичного DNS (DNS – это сервис который позволяет по символьному имени узла, определить его физический IP адрес). Теперь, зайдите нажмите OK, что вернет Вас в первоначальное меню свойств сетевого соединения. Здесь откройте закладку Advanced и проверьте опцию Internet Connection Firewall. На клиентских машинах эта опция должна быть отключена.
Включение совместного доступа к Интернет
После завершения настройки всех клиентских машин, Вам необходимо активизировать доступ в Интернет на серверной машине. Для этого нужно войти в меню сетевых соединений (Start -> Settings -> Network Connections), выбрать иконку, через которую подключаетесь к провайдеру (по модему или быстрому каналу). В меню свойств учетной записи необходимо выбрать закладку Advanced, где Вы найдете все опции, необходимые для организации совместного доступа …
В первую очередь обратите внимание на включение Internet Connection Firewall для Internet соединения. Firewall – это система защиты, которая работает как защитный щит между внутренней сетью и внешним миром. Internet Connection Firewall (ICF) – это программный продукт, который используется для установки ограничений передачи информации от и к вашей рабочее группе. Мы рекомендуем разрешить эту опцию. В то время как мощность такого программного «щита» не может сравниваться с подобными аппаратными межсетевыми экранами, это сможет в некоторой степени защитить Ваши данные от различных сетевых неприятностей. Теперь обратите внимание на включении опции “Allow other network users to connect through this computer’s Internet connection”, которая позволит другим пользователям входить в Интернет через сервер. Если Вы хотите управлять различными установками учетных записей Интернет с других, клиентских компьютеров, включите опцию “Allow other network users to control or disable the shared Internet connection”. И последняя опция - “Establish a dial-up connection whenever a computer on my network attempts to access the Internet”. Ее включение позволит серверу в случае получения запроса к Интернет с любого клиентского компьютера автоматически установить соединение. Теперь нажмите OK для применения всех сделанных изменений. В принципе, Windows XP не требует перезагрузки при изменении сетевых настроек, однако мы настоятельно рекомендуем это сделать не только на сервере, но и на всех клиентских компьютерах. Теперь, Вы можете попробовать войти в Интернет с любого компьютера в Вашей сети, причем в случае с Windows XP Вы можете спокойно, без необходимости делать дополнительные настройки, использовать программы, подобные ICQ.
В случае если доступа к сети нет, попробуйте сначала проветрить правильность подключения всех кабелей, и включение концентратора или свича. Если все сделано правильно то при подключении сетевого кабеля к Вашей сетевой карте, на экране в tray области (рядом с часами, появиться сообщение о подключении сетевого кабеля на скорости 100 или 10Mb). В случае если этого не происходит, необходимо проверить включение опции отображения индикатора в сетевых настройках и проверить правильность и целостность кабеля. Далее попробуйте в окне DOS набрать команду ping 192.168.0.1, которая проверит соединение с серверной машиной. Если пинг не прошел, необходимо проверить работоспособность и настройку сетевых карт и свича. Кроме того, одной из причин имеющихся проблем может быть установка Windows XP поверх другой операционной системы имеющей настроенную сеть, либо компьютер использовал собственное подключение к Интернет. После неоднократной установки различных, предлагаемых на рынке, версий и вариаций Windows XP, мы пришли к выводу, что для полной работоспособности необходимо устанавливать новую ОС на чистый диск, или раздел.
Статус Интернет соединения
Теперь необходимо коснуться вопроса контроля состояние подключения к Интернет. Особенно это касается случая использования операционных систем отличных от Windows XP. Для доступа к этой опции нажмите Start -> Network Connections. Как Вы можете видеть Windows XP достаточно подробно показывает параметры соединения, такие как скорость соединения и трафик на Вашей клиентской машине. Кроме того, здесь Вы можете отключить Интернет соединение.
Совместное использование принтера
Теперь, когда Вы установили ICS, пришло время настроить принтер для совместного использования в рабочей группе. Эта возможность очень полезна для небольших компаний или отделов. Установив совместный доступ к одному или нескольким принтерам, Вы сможете значительно сэкономить не только на принтерах, но и на времени. Если на Вашем сервере еще не установлен принтер, сделать это можно с помощью меню Printers and Faxes, открыть которое можно так: Start -> Settings -> Printers and Faxes. Как только принтер будет установлен, кликните по его иконке правой клавишей мышки и выберете пункт Sharing...
В открывшемся окне просто нажмите “Share this printer” и наберите имя, под которым принтер будет виден в сети.
Совместное использование и доступ к файлам
И наконец, мы переходим к последнему наиболее частому использованию сети – совместному использования файлов и папок. Эта особенность позволит создавать в компании библиотеку документов, шаблонов и т.д. Открывать и ограничивать доступ к документам различных сотрудников. В общем, полностью организовать документооборот в компании. Честно сказать, с полным документооборотом мы преувеличили. На самом деле для этого необходимо использовать специальные продукты, способные индексировать и архивировать документы, осуществлять быстрый поиск и т.д. Однако Windows XP частично позволяет решить эти задачи, и позволяет сэкономить на приобретении программ третьи разработчиков.
Для того, что бы разрешить сетевой доступ к файлам и папкам нужно в My Computer выбрать диск, к которому нужно открыть доступ, и правой кнопкой войти в свойства диска, где выберите закладку Sharing как показано ниже...
В целом здесь все понятно, однако необходимо обратить внимание, на то, что в случае включения опции “Allow network users to change my files” Вы даете им полный доступ к своим файлам, т.е. не только редактирование, но и удаление. В случае совместной работы с Windows 2000 и NT с точки зрения защиты Вы можете отключить простой режим совместного использования файлов через меню View->Folder Options->[X]Use Simple File Sharing.
Добавление сетевых дисков
Для упрощения доступа к часто используемым сетевым дискам, ВЫ можете добавить их в свое окно My Computer и использовать как обычный диск на Вашем компьютере. Для этого Вам необходимо правой кнопкой мышки кликнуть на сетевое окружение, и в открывшемся контекстном меню выбрать “Map Network Drive...” .
Здесь выберите букву для нового диска, и укажите путь к нему. Если Вы не знаете точного пути, то можете воспользоваться кнопкой “Brouse…”.
Заключение
Конечно же эта статья не может претендовать на звание энциклопедии сетевых возможностей Windows, однако она позволила решить две важные задачи. Те кто достаточно хорошо разбирается в сетях, наверное смогли найти для себя некоторые дополнительные особенности, которые было просто лень искать самостоятельно без особой надобности. Те, кто вообще не разбирается в сетях, смогли понять, что для реализации достаточно эффективной сети вполне достаточно использовать Windows XP.
Однако, для реализации сети в Вашем офисе мы настоятельно рекомендуем обратиться к специалистам. Поверьте нашему опыту, что как только «технический специалист» Вашей компании начинает делать сеть, это становиться в непрекращающийся ремонт в квартире. Постоянно, что-то доделывается, возникают различные «подводные камни» и т.д. Лучше всего обратиться к сетевым специалистам. Причем совсем необязательно обращаться к большим сетевым интеграторам, привыкшим работать в масштабе большого предприятия, использующего несколько сотен компьютеров с различными серверами. Вполне достаточно обратиться к компаниям, имеющим опыт создания небольших сетей, имеющих монтажников, программистов, настройщиков и, что самое главное, службу сервиса. Такая группа специалистов кроме установки сети, подключения к Интернет, сможет решить проблему с установками сетевых версий программ (например, бухгалтерских, дизайнерских, инженерных продуктов). В конце концов, каждый должен заниматься своим делом.
Наряду с мета-тегами, которые повышают рейтинг веб-страниц и дают дополнительную информацию браузеру и поисковым системам, существуют и бесполезные мета-теги, их роль сводится только к тому, чтобы занимать лишнее место. Ниже рассмотрены некоторые такие мета-теги.
Тег, управляющий временем индексации сайта
<META NAME="revisit-after" content=<... days">
Тег говорит поисковому роботу посетить ваш сайт снова через заданное количество дней. Сегодня тег не работает потому, что крупнейшие поисковики официально объявили, что их роботы больше не слушаются этого тега. Это вполне логично, представим, что каждый сайт поставит время индексации один день, поисковики просто не справятся с такой огромной нагрузкой.
Тег для поисковых машин, управляющий индексацией страниц
<META NAME="robots" content="...">
Не имеет смысла, т.к. намного удобнее задать все команды для поисковика в одном текстовом файле с именем robots, а затем вносить в него изменения по мере необходимости, а не ворошить все страницы и вставлять этот тег в каждую из них.
Тег, определяющий тему
<META NAME="subject" content="...">
Прописывать тему страницы в мета-тегах просто нелепо, для этого существуют заголовки, названия. Поисковики не обращают на этот тег внимания. Если в теме будет написано одно, а сайт совершенно другой тематики, то результат будет тем более нулевым.
Тег, определяющий заголовок страницы
<META NAME="title" content="...">
Для заголовка страницы существуют специальные теги <title> и </title>. Поэтому, прописывание загловка в мета-тегах не имеет смысла хотя бы потому, что эта конструкция будет слишком громоздкой.
Тег, определяющий создателя сайта
<META NAME="site-created" content="...">
Т.к. очень малое количество пользователей сети ищут сайты по имени их создателя (чаще всего он вообще неизвестен), то и целесообразность этого тега можно поставить под сомнение. Такой тег уместен лишь для «культовых личностей», имя и фамилию котрых пользователи сами вводят в строку поиска.
Тег, определяющий язык, на котором написана страница
<META NAME="Content-Language" content="...">
Язык посковики и сами хорошо умеют определять, поэтому в подсказках не нуждаются, следовательно, тег лишний.
Тег, определяющий принадлежность авторских прав
<META NAME="Copyright" content="...">
Такое впечатление, что этот тег был придуман специально для российских разработчиков, потому что только в нашей стране уж очень любят лепить копирайты везде, где попало, и побольше. Прежде всего, тег излишен тем, что владельца авторских прав никто, кроме поисковых машин не увидит. Одно это делает тег почти бесполезным, уж лучше копирайт внизу страницы поставить. Ну а для тех, кто захочет код страницы посмотреть, послание можно и в комментариях оставить.
Тег, определяющий автора содержания страницы
<META NAME="Author" content="...">
В общем и целом, данный тег аналогичен предыдущему, т.к. обычно автор сайта является и владельцем авторских прав. А если имя автора ввести в строку поиска, то поисковик выдаст на первых местах те страницы, на которых имя (или ФИО) есть в тексте самой страницы и уже только потом в мета-тегах.
Тег, определяющий адрес страницы
<META NAME="Address" content="...">
Если честно, то этот тег вызывает у меня смех. Зачем указывать адрес страницы в мета-тегах, если его можно набрать в адресной строке. Или его придумали в те времена, когда поисковые машины находились на зачаточной стадии развития?
Тег, определяющий домашнюю страницу
<META NAME="home_url" content="...">
Сложно судить о смысле этого тега, но каков бы он ни был, использовать данный тег всё равно нецелесообразно. Причина проста — мета-теги не видны обычным посетителям страницы, их видят только поисковики!
Если у вас есть сайт, то вы хотите, чтобы он был посещаемым. А что делать с этими посетителями - это уже тема отдельной статьи. Мы же в этот раз поговорим о генерации трафика на ваш ресурс. Думаю, что одним из наиболее эффективных методов является написание (перевод) статей и публикация их на сайтах, которые пользуются популярностью и регулярно посещаются.
Тут даже не столь важно, или у вас информационный портал с множеством тематик и разделов, или же просто вы продаете/предлагаете что-то, пишите статьи сами или заказываете их у кого-то. Главное - это поток целевого трафика с данных каталогов на ваш сайт.
Приведу несколько правил для успешной генерации такого трафика:
1) Первым делом внимательно прочитайте правила публикации статей и новостей на данном ресурсе. Очень важно обратить внимание на способ оформления материалов - некоторые каталоги не пропускают html-теги в материале статьи.
2) Старайтесь не публиковать один и тот же материал на большом количестве сайтов - ведь поисковые боты могут принять его за дубликаты, а они в последнее время их очень не любят.
3) Естественно, что нашей целью будет не только информирование и донесение чего-то полезного до читателя, но и привлечение его на наш сайт. Ясное дело, что для этого нужно поставить несколько ссылок на ваш ресурс. Но тут важно не перестараться - достаточно будет одной ссылки в тексте статьи (в тему статьи, а не просто - "зайдите на мой сайт") и одной в блоке "информация об авторе".
4) Следует публиковать статьи лишь в тех тематических рубриках, которые соответствуют тематике вашей статьи. В противном случае ее либо не примут на публикацию, либо и читать-то никто не будет. А чтобы найти свой тематический сайт, наберите в гугле что-то типа: "ключевое слово" опубликовать статью (англоязычный вариант - "your keyword here" submit article).
5) Те, кто не боится спама, см. следующий пункт. Остальные - не публикуйте в открытом виде свой контактный e-mail адрес, или же заведите какой-нибудь специально для этих целей.
6) Не забывайте, что публикуете не только вы один, так что ваша статья быстро уйдет в самый низ архивов. Да и кто в них, этих архивах будет рыться, людям нужна свежая информация. Вот и совет вам - не забывайте почаще добавлять статьи, таким образом вы обеспечите себя стабильным трафиком.
Все протоколы обмена маршрутной информацией стека 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. Такой подход позволяет уменьшить в нашей гипотетической сети количество маршрутной информации в удаленных офисах без уменьшения способности маршрутизаторов корректно передавать пакеты.
Существует несколько разных способов форматирования элементов веб-страниц. Вообще под форматирование подразумевается придание им каких-либо нужных веб-дизайнеру атрибутов - например размер шрифта и его цвет. Но в этой статье мы не будем рассматривать именно такую работу со стилями - как показала практика их лучше менять средствами каскадных таблиц стилей - CSS. А это уже тема других статей.
Вы уже знаете, что для разделения страницы горизонтальной полоской необходимо воспользоваться тегом <hr>. Теперь давайте рассмотрим еще несколько методов изменения внешнего вида элементов нашей веб-страницы
Форматирование текста
В нашей страничке у есть строка ссылок "<p><a href="index.html">Главная страница</a> - <a href="aboutme.html">Обо мне</a></p>".
Попробуем сделать текст ссылок более крупным. Это можно сделать с помощью тега <b>, который отвечает за жирный шрифт (bold.
Поэтому наша строка "<p><a href="index.html">Главная страница</a> - <a href="aboutme.html">Обо мне</a></p>" преобразуется в "<p><a href="index.html"><b>Главная страница</b></a> - <a href="aboutme.html"><b>Обо мне</b></a></p>".
Вот как это будет выглядеть в коде:
Добавление изображений в веб-страницу
С помощью добавления изображений на страниц можно значительно увеличить ее привлекательность и добавить информативности. Пусть у вас есть изображение test.jpg, которое лежит в папке images. Тогда для его отображения на странице необходимо воспользоваться вот таким кодом:
У тега, который отвечает за вывод изображения, есть несколько параметров:
* Расположение изображения (директория).
* Ширина (width) и высота (height).
* Заголовок (title).
* Альтернативный текст (alt).
Параметры ширина и высота должны соответствовать реальным размерам изображения. В противном случае они уменьшат или увеличат его (естественно, что исходное изображение при этом останется прежних размеров).
Параметр заголовок используется для краткого описания картинки. Эта надпись появляется при наведении курсором мышки поверх картинки.
Последним, но не менее важным идет тег alt. Он очень важен для соответствия кода веб-страницы стандартам консорциума W3C. Этот тег отображается на месте изображения в том случае, если посетитель использует текстовый браузер или у него отключена функция отображения графики.
Такие поисковые машины, как Google и Яндекс (да и все остальные) могут использовать заголовки изображений для их индексации. В дальнейшем эта информация используется для поиска картинок по определенным ключевым словам.
Реферал - это url, с которого посетитель приходит на ваш сайт. К примеру, на странице http://www.site.com/links.html есть ссылка на ваш сайт. Если человек нажмет на нее, то он попадет на ваш сайт. Тогда url http://www.site.com/links.html будет вашим рефералом. Каждому владельцу ресурса не будет лишним знать, откуда именно заходят посетители на его сайт. Для тех, кому интересно решение данной проблемы (задачи) с помощью PHP, и посвящена данная статья.
Не спорю, что у любой уважающей себя CMS (content management system, система управления содержанием) есть модули (боты), которые отвечают за сбор статистики. Для тех же, у кого на сайте не стоит CMS, есть возможность попрактиковаться в написании и конфигурировании собственного мини-модуля статистики.
Его можно реализовать в небольшом скрипте, который будет отслеживать нажатия на ссылки, записывать их URL'ы в базу данных (в нашем примере это MySQL) и генерировать статистику в виде графика. Да и поможет разобраться, как это все работает на самом деле, не копаясь в модулях сторонних разработчиков.
Нам потребуется три файла:
* referer.sql (запрос к БД на создание таблицы, где будет храниться статистика);
* referer.php (сам скрипт);
* viewreferer.php (скрипт для просмотра статистики).
Для создания таблицы referer необходимо выполнить запрос referer.sql. Вот его содержание:
Теперь займемся файлом referer.php. Зададим значения переменным:
.
.
.
.
.
.
.
.
.
.
.
.
В переменную $ref заносим информацию о ссылке-реферере:
.
.
С помощью функции strtolower переводим значение переменной $ref в нижний регистр. Это делается для того, чтобы ссылки типа www.site.com, www.Site.com или WWW.SITE.COM были одинакового регистра.
Если переменная $ref не пустая,
.
.
то подключаемся к БД:
Производим выборку из столбца url, значение которого совпадает с $ref
Переменная $rows содержит количество совпадений
.
.
.
Если же не найдено ни одной записи (т.е c такого url'a еще не было рефералов)
устанавливаем значение переменной $hits в "1"
.
.
А далее просто выполняем вставку url'а и переменной $hits в нашу таблицу (referer):
Выполняем запрос:
.
.
.
Если же были найдены записи по данному url (т.е c этого url'a уже заходили рефералы),
Инкрементируем значение переменной $hits (увеличиваем на "1")
.
.
.
.
.
.
В ту страницу сайта, для которой необходима статистика по рефералам (как правило - это главная страница, index.php), необходимо вставить ссылку на скрипт referer.php. Предполагается, что файлы referer.php и index.php находятся в одной папке.
.
.
.
На этом и заканчивается содержимое скрипта referer.php. Но, как я написал выше, есть также и графическая статистика. Это будет наш третий файл - viewreferer.php.
Задаем переменные для подключения к БД:
.
.
.
.
.
.
Так как этот скрипт генерирует таблицу с графиком, то есть смысл для определенных диапазонов значений хитов назначить определенные цвета.
Опять соединяемся с БД:
Делаем выборку из БД и упорядочиваем ее по убыванию (desc) количества хитов (столбец hits).
Подсчитываем количество строк с уникальными рефералами (это попросту число строк в нашей таблице referer).
.
.
.
Если же не найдено ни одной записи (таблица пуста), то выводим сообщение:
Выбираем цвет для текущего значения hits:
Табличка с графиком строится как результат MySQL-запроса. В первой колонке содержится название url'а, а во второй - количество хитов, а в третей - цветная полоса.
.
.
.
.
.
.
.
.
.
.
.
Итак, все готово! Теперь можно периодически вызывать скрипт viewreferer.php и смотреть графическую статистику переходов на ваш сайт.
Очевидно, BDE содержит номер версии структуры, по крайней мере для файлов Paradox. (Я не могу поручиться за dBase и другие форматы.) Всякий раз при изменении структуры (например, в Database Desktop) BDE увеличивает номер версии. Следующий модуль содержит функцию, которая возвращает версию структуры базы данных: