Эта книга научит вас применять Perl для решения задач, необходимых в современных сетевых приложениях. Множество примеров и еще более многочисленные упражнения дают не просто полезную информацию, но и готовые программы, которые вы можете сразу поместить в свои приложения. Книга поможет вам овладеть практическими приемами и методами, с которыми вы сможете разрабатывать на Perl любые Web-приложения на основе протокола CGI.
Основное внимание в книге уделяется важным вопросам разработки Web-приложений, таким как работа с базами данных, обработка форм и файлов, безопасность, электронная почта и работа с графикой. Кроме того, в этой книге подробно рассматриваются некоторые более специальные темы: обработка Web-форм и получение через них данных пользователя, файлы cookie, отслеживание щелчков и счетчики доступа, применение модуля Apache mod_perl, связывание переменных с базами данных, встраивание кода Perl в HTML при помощи модуля HTML:Mason, управление документами через Web, создание динамических изображений, применение XML и его производных — RSS и RDF.
Книга рассчитана на программистов средней и высокой квалификации.
Какие данные можно получить о посетителе сайта при помощи php (браузер, ip, url и другое) или сервере (имя, почта и другое)?
Как расшифровываются переменные окружения в PHP (SERVER, REDIRECT и др) и что они передают?
DOCUMENT_ROOT - Путь к корневой папке сайта. Для локального веб-сервера значение может принимать вид z:/home/htmlbook.ru/www, а в других случаях зависит от операционной системы сервера и используемого программного обеспечения. GATEWAY_INTERFACE - Версия CGI (Common Gateway Interface, общий шлюзовый интерфейс). Значение обычно равно CGI/1.1. HTTP_ACCEPT - Типы файлов, которые способен принять браузер. В качестве значения возвращается список поддерживаемых MIME-типов разделенных между собой запятой, например: text/html, application/xhtml+xml. HTTP_CONNECTION - Тип соединения браузера с веб-сервером. Так, значение keep-alive означает, что браузер поддерживает постоянное соединение с сервером. При этом в течение одного сеанса соединения разрешено делать несколько запросов. Повторного соединения в таком случае уже не происходит. HTTP_HOST - Доменное имя сайта. Обычно различают имена с префиксом www (www.tradebenefit.ru) и без него (tradebenefit.ru). Переменная вернёт тот адрес сайта, который указан в адресной строке браузера. HTTP_REFERER - Адрес страницы, с которой пользователь перешел на данный сайт, он еще называется реферер. HTTP_USER_AGENT - Идентификатор используемого браузера и операционной системы. В качестве значения возвращается строка, содержащая ключевые слова. Например, следующая строка
говорит, что пользователь использует браузер Firefox 6.0.2 под операционной системой Windows 7.
QUERY_STRING - Запрос, который указан в адресной строке после вопросительного знака (?). Обычно пишется в форме «переменная=значение», где переменные разделяются между собой амперсантом. Рассмотрим пример.
REMOTE_ADDR - IP-адрес посетителя сайта. REQUEST_METHOD - Метод отправки данных на сервер. По умолчанию применяется метод GET. REQUEST_URI - Адрес запрашиваемого документа. Отсчёт ведётся от корня сайта, т.е. для полного адреса http://site.ru/1.html вернется значение 1.html. SERVER_ADDR - IP-адрес компьютера, на котором размещается сайт. SERVER_ADMIN - Адрес электронной почты администратора сайта. SERVER_NAME - Имя сервера. SERVER_PORT - Порт, по которому ожидается получение данных. SERVER_PROTOCOL - Протокол для получения и отправки данных. Значение обычно равно HTTP/1.1. SERVER_SOFTWARE - Программное обеспечение установленное на сервере. Для веб-сервера Apache возвращается номер версии (Apache/2.2.4), а также версия PHP (PHP/5.3.3).
В статье продемонстрированы программные методы экспортирования данных из программы "1С:Предприятие 7.7".
Экспорт данных из 1С в Текстовой файл TXT, CSV
Экспорт данных из 1С в файл dBase формата DBF
Экспорт данных из 1С на лист MS Excel
Управление MS Word из 1С
Методы работы с MS Word через OLE активно использованы в конфигурации "Договоры". Для определения числового кода текстовых констант MS Word использована обработка "Константы VBA".
Все началось до банального просто - любимый директор сказал "Хочу!". Аргументация была следующей:
* Переводится много бумаги для печати и отправки по факсу (клиентов много, потому отправленные счета сразу выбрасываются: найти нужный документ даже через день - нереально)
* Электронная почта "есть в наши дни у всех и каждого" (то, что сам директор ею не пользуется - другой вопрос :-) )
* Тратится меньше времени персонала (не нужно сидеть и ждать перед факсом, стартовать, "прошло"/"не прошло", ...)
* Легче вести учет когда и что было отправлено.
Сначала ставился вопрос отправки документов вообще - что может быть проще? Сохранить таблицу как файл MS-Excel, вызвать внешнюю программу отправки с параметрами - и все. Потом возникли сомнения:
* А вот клиенты отредактируют файл - и будут доказывать что мы такой и отправили,
* В файле передается рисунок печати - они его смогут использовать с какой-нибудь темной целью.
Сразу же было предложено отправить как рисунок, благо я знал, что это можно сделать, но как - еще не представлял. Согласие получено, и вот начались поиски соответствующих программ...
Подбор нужного инструментария
Некоторое время я стараюсь использовать бесплатные программы, а не ломать те, за которые нужно платить деньги. Так что одним из условий (не главным, но в результате выполненным почти на 100%) была бесплатность инструментария.
Понятно, что для получения рисунка на выходе нужен виртуальный принтер, на который можно печатать любой документ. Выходным форматом был выбран tiff как достаточно распространенный, предполагая что его можно будет конвертировать в любой формат, если возникнет необходимость. Были испробованы многие принтеры, встреченные в просторах Internet`а, как бесплатные, так и нет. Большинство из них умеют печатать кроме искомого tiff еще и pdf документы, но не один не удовлетворял условиям передачи в них внешних параметров (важно было указать место сохранения и возможно имя файла для уменьшения коллизий, поскольку работа происходит на сервере терминалов). В конечном итоге выбор пал на AFPL Ghostscript 8.14 for Win32 и драйвер переадресации порта принтера RedMon.
Ghost Script умеет конвертировать данные из ps, eps, pdf в разные форматы (те же ps, eps, pdf, языки принтеров вроде PCL6 от HP, и рисунки). Получать данные он может как из файла, так и из входящего потока (stdin для посвященных). RedMon умеет данные, полученные от драйвера принтера, передавать как входной поток выбранной программе. Кроме того устанавливает несколько системных переменных, одну из которых (%REDMON_USER% - имя пользователя, печатающего документ) мы будем использовать.
Итак - используемый режим связки: установка PS принтера в системе, указание ему виртуального порта RedMon, пересылка исходящего PS потока от принтера на Ghost Script, формирование tif по указанным настройкам.
Настройки для режима работы Ghost Script хранятся в файле одном для всех, потому в схему добавим еще одно звено: RedMon передает данные не Ghost Script, а скрипту WSH, а уже он откорректировав настройки под пользователя, передает дальше поток для Ghost Script. Потому еще одна программа, которая нам нужна: Windows Script 5.6 for Windows. Нужна именно версия 5.6, поскольку во встроенной в Windows 2000 версии 5.1 отсутствует необходимый метод Exec().
Еще возможно нам понадобится компонент для вывода рисунков с прозрачным фоном. Пока приходится использовать Active_BMP, упоминаемый на безвременно почившем hare.ru. Этот компонент умеет отображать прозрачными только 2-х цветные bmp (по крайней мере только с ними у меня получилось добиться прозрачности), но за неимением лучшего... :-) (Если кто знает бесплатный ActiveX компонент для отображения gif с прозрачным слоем - скажите в форум или мыло)
Собственно для отправки почты из командной строки я уже полгода пользуюсь Postie, потому искать ничего нового не пришлось.
Приступим (установка и регистрация программ)
Установка WSH проблем не вызывает (конечно, если вы не попытаетесь установить версию для 9X/NT4 на 2000/XP, как я это сделал, причем осознал это только взявшись за статью - уже месяц сервер живет в этом режиме :-) ): запуск scripten.exe (scr56en.exe), ответы на все вопросы, перезагрузка.
Установка Ghost Script не требует даже перезагрузки. Единственный момент - от пытается по умолчанию установится в каталог %SystemDrive%\gs - я его устанавливал в %SystemDrive%\Tools\gs - так мне удобнее. (ниже в скобках я буду писать свои настройки, с которыми у меня работает живая система).
Для установки RedMon нужно его распаковать в некий каталог (%SystemDrive%\Tools\RedMon) и запустить setup.exe из него. В файлах readme.txt и redmon.hlp находится подробная информация по установке и стандартной настройке redmon.
Регистрация Active_BMP осуществляется распаковкой файлов в каталог (%SystemDrive%\Tools\OLE\ActiveBMP) и запуском из этого каталога "regsvr32 Bmp_1c.ocx".
В дальнейшем каталоги с RedMon и Active_BMP нам не понадобятся, так что про них смело можно забыть (но не удалять совсем с диска :-) ).
Postie устанавливается простым извлечение его в нужный каталог (%SystemDrive%\Tools\Postie).
Теперь нам необходимо настроить принтер. Для этого из папки принтеры выбираем "Добавить". Тип принтера - локальный, отказываемся от автоматического поиска и добавляем порт: тип порта: Redirect Port, имя: RPT1. На следующем шаге выбираем модель PS-принтера (в RedMon рекомендуется Apple LaserWriter II NT или Apple Color LaserWriter 12/600 если вы хотите цветное изображение). Я использовал Apple LaserWriter II NT, т.к. мне нужно было черно-белое изображение. Сразу после этого я переименовал принтер в более соответствующее его функциям название: "Send EMail". Теперь нам необходимо настроить порт. Для этого открываем настройки принтера, ищем страницу "Порты" и жмем кнопку "Конфигурировать порт".
Дальнейшие настройки отличаются от стандартных, описанных в redmon.hlp:
* "Redirect this port to the program:"="cscript.exe" (без кавычек, естественно),
* "Arguments for this programs are:"="Наш\Скрипт\С\Полным\Путем.js" (%SystemDrive%\Tools\gs\PrnUser.js) (в кавычках, если путь содержит пробелы),
* "Output:"="Program handles output"
* "Run:"="Hidden"
* "Run as user" снята (у меня вызывало ошибку, если установлено)
* "Shut down delay:"="300"
Кнопка "Log file" нужна во время отладки всей системы отправки почты, хотя можно оставить запись лога и в рабочем режиме - все равно он перезаписывается, а не накапливается.
Соглашения о настройках
Скрипт, который мы указали в настройках порта, принимает данные с принтера и согласно настройкам, сохраненным из внешней программы (1С или другой), отправляет его по почте как рисунок (в скрипте предусмотрены проверки на корректность значений). Поскольку единственное, что мы можем получить из печатного задания - это имя пользователя (%REDMON_USER%), то с каждым пользователем мы будем работать в его каталоге, при этом одновременная печать 2-х заданий от одного пользователя невозможна. (Если вам удастся передать в скрипт другую информацию из 1С, например: уникальный идентификатор задания или имя файла - сообщите мне). У меня используется самописный компонент SysTools для получения профиля пользователя по его имени. Поскольку он еще только в альфа-версии выкладывать не буду, если кому нужен - вышлю по почте. Итак, предположим, у нас есть каталог, в котором хранятся данные пользователей (%MyProfiles%\User1, %MyProfiles%\User2, ...). К личном каталоге пользователя мы будем создавать подкаталог SendMail для отправки почты.
Временные файлы для работы мы будем хранить во временном каталоге (переменная %TEMP% для системы, поскольку запускаться скрипт будет от имени Local service).
Все остальные настройки и пути к файлам заданы в переменных вначале скрипта - их можно (и нужно) изменить для себя.
Файл, в котором 1С сохраняет настройки называется %UserProfile%\SendMail\mail.ini и имеет следующую структуру: каждая строка - поле=значение, кроме поля BODY, которое обязательно идет последним и может быть растянуто на несколько строк.
Пишем программу
В этом разделе будут показаны и пояснены тексты нескольких модулей, входящих в демонстрационную конфигурацию. Скрипт на языке JavaScript здесь описан не будет, поскольку несоответствует тематике раздела. Надеюсь - комментариев внутри скрипта будет достаточно для пожелавших разобраться в его работе.
Поскольку в 1С не предусмотрена модульная организация программ, то сложные вещи я обычно строю по такой схеме: законченная функциональность - во внешней обработке, параметры в которую передаются через СписокЗначений, и вспомагательная процедура/функция в глобальном модуле, которая этот список заполняет из параметров. Так было сделано и здесь.
Функция запроса параметров отправки почты (кому, от кого, тема и пр.) в глобальном модуле выглядит так:
[pagebreak]
В этой функции переданные параметры записываются в список значений, который передается внешней обработке ПараметрыОтправкиПочты.ert в подкаталоге ExtForms каталога базы данных. Запрос параметров имеет вид:
Возвращенные значения записываются в файл, параметры которого (путь, имя, и т.п.) заданы в конце глобального модуля.
В самой обработке ничего интересного нет: чтение параметров из списка, отображение и проверка параметров при нажатии кнопки Отправить. Если не заданы необходимые параметры (ОтКого, Кому) или адреса E-Mail указаны не правильно - будет выдано сообщение и форма не закроется.
Рассмотрим параметры вызова даной функции:
* Заголовок - заголовок формы, на рисунке - синяя надпись "Тестовый документ №3 от 30.04.04";
* Кому, ОтКого, Копия - E-mail или список E-Mail`ов (через ",");
* Тема, Сообщение - соответствующие параметры письма;
* Запретить - какие поля запрещены для редактирования (на рисунке - поле Тема);
* БезФормы - если 1: форма не отображается и при правильных параметрах письмо отправится автоматически.
Следующая функция вызывает эту и если все прошло успешно - вызывает внешнюю обработку для небольшой предподготовки таблицы при печати и отправки ее:
Здесь уже большая функциональность перенесена на обработку. Она (обработка) вообще не открывается, только выполняет некоторые действия. Рассмортим параметры:
* Таб - Значение типа "Таблица", которую и будем печатать;
* Заголовок, Кому, ОтКого, Копия, Тема, Сообщение, Запретить, БезФормы - просто передаются в функцию глПараметрыОтправкиПочты и подробно рассмотрены в ней;
* Масштаб - масштаб печати таблицы. Если не задан - автомасштаб по ширине.
В обработке всего 2 процедуры: ПроверитьПараметр для проверки корректности переданных значений и ПриОткрытии, в которой подготавливается и печатается таблица. Выглядит весь модуль обработки так:
Код: (1c)
Вот практически и все, что касается программы в 1С. Некоторые сервисные функции, которые не были описаны здесь, можно посмотреть в примере конфигурации. Таким образом ничего сложного здесь нет. Больше сложностей вызывает настройка системы для правильной работы. Выглядит отправленный документ приблизительно так:
Замечания в процессе эксплуатации
Сразу скажу - в боевом режиме система работает недолго (с 15.04.2004), но даже за это время были замечены некоторые "особенности" работы:
* Формат tiff оказался не таким уж стандартным. Потому пришлось его заменить на png. Сделать это нужно в двух местах: в суффиксе исходящего файла в скрипте (чтобы Postie правильно поставил его Content-Type:) и в настройках GS (параметр -sDEVICE=pngmono собственно и задает выходной формат файла). Можно заменить и на еще более стандартный jpeg, но при этом сильно вырастет размер файла. К сожалению gif уже не поддерживается в текущей версии GS (как я понял из документации - из-за возможных проблем с лицензированием этого формата). Можно добится поддержки gif, выдрав ее из исходников предыдущих версий и перекомпилировав текущую, но я пока этого не делал. Возникла мысль передавать в настроечном файле (%UserProfile%\SendMail\mail.ini) параметры, как отправлять изображения (jpeg, tif, png; color/mono; ...) и в скрипте динамически менять.
* PostScript шрифты, идущие в поставке GS, не так хорошо "вылизаны", как TrueType. Потому русские буквы выглядят жирнее англиских. Пока жалоб на это не было :-)
* В новой версии Postie у меня почему-то не работает ключ -bcc (ошибки не выдает, но и не отправляет по указанным адресам). Так и не разобрался - пришлось откатится на старую версию (POSTIE Version 4)
* Хотя ломать ничего и не пришлось, но все-таки мы нарушаем лицензию Postie, который "free for personal use". Может кто знает другую программу отправки почты из коммандной строки?
Благодарности
Моему любимому директору - за неуемный ум и новые интересные задания.
Вадиму Ханасюку - за неопубликованную здесь, но полезную компоненту SysInfo (получение каталога профиля пользователя по имени) и помощь в поиске нужного софта.
Всем сотрудникам, которые не мешали работать.
В этой статье я приведу пример того, как из PHP скрипта отправляется электронная почта с помощью функции mail().
Простейший пример отправки выглядит так :
Как мы видим, всё достаточно просто.
Первый параметер функции - электронный адрес получателя.
Второй параметер - заголовок (Subject) письма.
Третий параметер - тескст сообщения.
Также можно использовать необязательный четвёртый параметер - хедеры (headers) письма. Этот параметер используется для форматирования сообщения. Т.е. для установки кодировки, формата, указания отправителя и так далее.
Вот ещё один пример с использованием четвёртого параметра:
Письма также можно отправлять и в HTML виде. Тогда вместо
пишем
Ну вот, в принципе, и всё.
Заголовок, естественно, можно расширять, но я описал только самые используемые его части.
Данная статья полностью посвящена такому аспекту раскрутки сайта, как регистрация в каталогах. На примерах рассмотрим регистрацию в наиболее популярных каталогах: Top.Mail.ru, Yandex, Rambler's TOP100.
В процессе размещения сайта в каталогах нет ничего сложного. Благо, эти системы становятся более совершенными и простыми в использовании для владельцев сайтов. Как правило, для добавления сайта в каталог нужно выбрать соответствующий раздел каталога (или подкаталог в нем). Потом вам необходимо будет вручную заполнить регистрационную форму. Нажимаем "Разместить", "OK", "Submit" (в разных каталогах по-разному, но суть одна) - и все, ваш сайт в каталоге. Правда, его еще проверят модераторы на соответствие тематики сайта выбранному каталогу. И не нарушает ли ваш ресурс законов страны, в которой расположен каталог. Как правило, это относиться лишь к сайтам, размещенным на бесплатном хостинге. Это еще один из доводов в пользу платного хостинга - бесплатный сыр может оказаться вовсе не бесплатным.
Модератор всегда прав
Когда размещаете свой сайт в каталоге, не забывайте о пользователях. Ведь именно для них он и предназначен, поэтому постарайтесь наиболее точно составить его описание. В лучшем случае модератор каталога просто изменит его описание, или перенесет сайт в другую рубрику. В худшем... Будем стараться, чтобы такого не случилось. Советую также внимательно читать правила размещения ресурса в каталоге. И, само собой, придерживаться его требований и правил. Как и в любом деле, здесь нужно быть очень аккуратным и следовать правилам предоставления данной услуги.
По поводу выбора каталога, хочу заметить еще кое-что. Как правило, пользователи не случайно заходят в тот или иной каталог (рубрику) - хотя бывают и исключения :) Получается, что человек заинтересован именно в сайтах данной тематики, он ищет информацию в определенной области (наука, новости, автомобили и т.д.). Я думаю, он вряд ли зайдет на сайт, который не соответствует интересующей его тематике. А, случайно попав не него, долго на нем не пробудет. Но это, как правило, а в реальной жизни все может быть.
Шаги к успеху
А теперь о размещении в каталоге более детально. При регистрации вам предлагают внести название вашего сайта и его краткое описание. В названии, как правило, необходимо разместить название вашей организации (если сайт о ней) или же просто официальное название вашего сайта. Пусть это будет "Интернет-магазин "Все для кошек", "Домашняя страничка кота Мурчика", "Молокозавод "Лакомства для кошек" и т.п.
Можно, конечно, попробовать разместить в названии несколько ключевых слов. Можно, но в данном случае все на ваш страх и риск. Тут главное не перестараться, дабы не снискать немилость у владельцев каталога. И чем ресурс-владелец каталога популярнее, тем с ключевыми словами ситуация сложнее.
Теперь остановимся на описании сайта. Оно располагается сразу же после URL'а вашего сайта. Как и название, описание сайта является не менее важным. Тут главное еще до регистрации придумать описание, сбалансированное как по краткости, так и по соответствию тематике. Я думаю, что не стоит в нем использовать какие-либо жаргонные слова и делать его слишком длинным. Скорее всего модератору это понравиться, и будьте уверены, что он его заменит на свой лад. Вот чтобы не проверять судьбу, лучше этого не делать.
Ну а если составить описание вам все же сложно, то посмотрите описания сайтов с похожей тематикой. Гляди и появится идейка-вторая. Только вот копировать описание точь-в-точь я бы не советовал - проявите смекалку, пофантазируйте, переберите кучу вариантов. И у вас обязательно получится - не сомневайтесь. "Зато такого описания ни у кого нет" - разве это не может не радовать?
Еще можно использовать свой meta-description тег (если он удачно подобран). А почему бы и нет? Смело вносите его в описание сайта для каталога, не забывая при этом о вышеперечисленных советах.
Еще посоветую использовать те слова, которые часто встречаются на страницах вашего сайта. Если таковых вы не находите, или их совсем маловато, то тут следует призадуматься. Сайт у вас один, регистрировать вы его будете один раз, а его содержание будете часто менять (в идеале). Так почему бы сразу не оптимизировать текст под несколько ключевых слов? Я думаю, намек вам понятен...
Поэтому постарайтесь максимально придерживаться моих рекомендаций и у вас все непременно получиться. Конечно, у каждого каталога свои правила и требования к размещению ресурса. Тем не менее, главными остаются правильно выбрать раздел и составить понятное/точное описание.
Поменьше слов - побольше дела!
Ну а теперь рассмотрим наиболее популярные каталоги РУнета.
1) Яндекс
Тут ничего сложного нет. У Яндекса самая простая (по крайней мере из всех, что мне попадались) регистрация. Итак, заходим на Яндекс, на сайте находим ссылочку добавить сайт. А далее все просто - в строку постредине страницы вносим URL вашего сайта и жмем "Добавить".
Не лишним будет заметить, что Яндекс регистрирует только русскоязычные сайты или же представляющие интерес для русскоязычной аудитории.
2) Рамблер
У Рамблера каталог называется Rambler's TOP100. Вот на него-то мы и заходим Rambler's TOP100. Нажимаем на ссылочку "добавить ресурс" и переходим к соглашению о регистрации в каталоге. Прочитав его, жмем на кнопку "зарегистрировать". Ну а дальше все должно быть понятно, как-никак русским же языком все написано :)
Советую при выборе цвета счетчика подумать, как он будет сочетаться с цветовой гаммой вашего сайта. И не жмите дважды кнопку "зарегистрировать" :)
3) Рейтинг@Mail.ru
С регистрацией в данном каталоге у вас тоже не должно возникунть проблем. Сверху есть ссылка "зарегистрироваться в рейтинге@mail.ru" (так вот у них каталог своеобразно называется - как их почта).
Одно замечание - так как тематических каталогов и подкаталогов у них довольно много, то советую выбрать тот из них, который максимально соответствует тематике вашего сайта (можете просто зайти в заинтересовавший вас каталог и посмотореть на сайты, которые в нем размещены).
CPanel предлагает владельцу хостинга удобную оболочку для конфигурирования и управления всеми доступными ему настройками хостинга (хотите больше - берите выделенный сервер). Основной особенностью этой системы является то, что она настолько проста в использовании, что разобраться в ней вам не составить большого труда и вам вовсе не обязательно нанимать системного администратора.
В CPanel есть большое количество инструментов, главные из которых представлены ниже
Site Tools - инструменты управление сайтом
Среди прочего, доступны такие инструменты, как Web Protect (редактор .htaccess), задание собственных страниц ошибок, редирект, редактирование MIME-типов, возможность редактировать Apache handlers, устанавливать расширения FrontPage и файловый менеджер.
Email - электронная почта
Позволяет создавать, удалять и изменять пароли к электронным почтовым ящикам. CPanel также предоставляет возможность использовать оболочку Webmail для работы с почтой, автоответчики (Auto responders), перенаправления почты (Forwarders), списки рассылки (Mailing Lists) и многое другое.
Backup - резервное копирование
Бэкап позволяет делать копии всех файлов вашего сайта и баз данных. Скачать заархивированные копии можно как через FTP, так и другими доступными способами.
Stats - статистика
Присутствует несколько видов инструментов для анализа статистики вашего сайта. Среди самых популярных можно выделить Webalizer web stats, Webalizer FTP stats, Analog stats, AWStats, последние посетители, посмотреть количество трафика и посмотреть лог-файл ошибок (error log).
FTP
Управляет работой FTP-аккаунтов. Можно добавлять, удалять и изменять пароль, разрешать анонимный доступ и удалять FTP сессии (FTP sessions).
Advanced Stuff - дополнительные возможности
Есть возможность добавлять или удалять поддомены (subdomains), настраивать редирект поддоменов (Subdomain Redirects) и их статистику.
Advanced Tools - дополнительные инструменты
Управление инструментами SSH доступа, GPG ключами и планировщиком Cron.
Также есть возможность инсталлировать на сайт готовые скрипты. Вот самые популярные из них: Inter Cart, Agora Cart, Bulletin Board, Java Chat, HTML Chat, phpMyChat, CGI Wrapper, Random HTML generator, Advanced Guestbook, Counter Generator, Java Clock Generator, Java Countdown Generator, Secure FormMail clone, CGIEmail, Entropy Search, Entropy Banner. Network Tools для DNS Lookup и Traceroute. Инструменты управления базами данных MySQL и phpMyAdmin.
Сетевой уровень в первую очередь должен предоставлять средства для решения следующих задач:
* доставки пакетов в сети с произвольной топологией,
* структуризации сети путем надежной локализации трафика,
* согласования различных протоколов канального уровня.
Локализация трафика и изоляция сетей
Трафик в сети складывается случайным образом, однако в нем отражены и некоторые закономерности. Как правило, некоторые пользователи, работающие над общей задачей, (например, сотрудники одного отдела) чаще всего обращаются с запросами либо друг к другу, либо к общему серверу, и только иногда они испытывают необходимость доступа к ресурсам компьютеров другого отдела.
Желательно, чтобы структура сети соответствовала структуре информационных потоков. В зависимости от сетевого трафика компьютеры в сети могут быть разделены на группы (сегменты сети). Компьютеры объединяются в группу, если большая часть порождаемых ими сообщений, адресована компьютерам этой же группы.
Для разделения сети на сегменты используются мосты и коммутаторы. Они экранируют локальный трафик внутри сегмента, не передавая за его пределы никаких кадров, кроме тех, которые адресованы компьютерам, находящимся в других сегментах. Тем самым, сеть распадается на отдельные подсети. Это позволяет более рационально выбирать пропускную способность имеющихся линий связи, учитывая интенсивность трафика внутри каждой группы, а также активность обмена данными между группами.
Однако локализация трафика средствами мостов и коммутаторов имеет существенные ограничения.
С одной стороны, логические сегменты сети, расположенные между мостами, недостаточно изолированы друг от друга, а именно, они не защищены от, так называемых, широковещательных штормов. Если какая-либо станция посылает широковещательное сообщение, то это сообщение передается всем станциям всех логических сегментов сети. Защита от широковещательных штормов в сетях, построенных на основе мостов, имеет количественный, а не качественный характер: администратор просто ограничивает количество широковещательных пакетов, которое разрешается генерировать некоторому узлу.
С другой стороны, использование механизма виртуальных сегментов, реализованного в коммутаторах локальных сетей, приводит к полной локализации трафика - такие сегменты полностью изолированы друг от друга, даже в отношении широковещательных кадров. Поэтому в сетях, построенных только на мостах и коммутаторах, компьютеры, принадлежащие разным виртуальным сегментам, не образуют единой сети.
Приведенные недостатки мостов и коммутаторов связаны с тем, что они работают по протоколам канального уровня, в которых в явном виде не определяется понятие части сети (или подсети, или сегмента), которое можно было бы использовать при структуризации большой сети. Вместо того, чтобы усовершенствовать канальный уровень, разработчики сетевых технологий решили поручить задачу построения составной сети новому уровню - сетевому.
Согласование протоколов канального уровня
Современные вычислительные сети часто строятся с использованием нескольких различных базовых технологий - Ethernet, Token Ring или FDDI. Такая неоднородность возникает либо при объединении уже существовавших ранее сетей, использующих в своих транспортных подсистемах различные протоколы канального уровня, либо при переходе к новым технологиям, таким, как Fast Ethernet или 100VG-AnyLAN.
Именно для образования единой транспортной системы, объединяющей несколько сетей с различными принципами передачи информации между конечными узлами, и служит сетевой уровень. Когда две или более сетей организуют совместную транспортную службу, то такой режим взаимодействия обычно называют межсетевым взаимодействием (internetworking). Для обозначения составной сети в англоязычной литературе часто также используется термин интерсеть (internetwork или internet).
Создание сложной структурированной сети, интегрирующей различные базовые технологии, может осуществляться и средствами канального уровня: для этого могут быть использованы некоторые типы мостов и коммутаторов. Однако возможностью трансляции протоколов канального уровня обладают далеко не все типы мостов и коммутаторов, к тому же возможности эти ограничены. В частности, в объединяемых сетях должны совпадать максимальные размеры полей данных в кадрах, так как канальные протоколы, как правило, не поддерживают функции фрагментации пакетов.
Маршрутизация в сетях с произвольной топологией
Среди протоколов канального уровня некоторые обеспечивают доставку данных в сетях с произвольной топологией, но только между парой соседних узлов (например, протокол PPP), а некоторые - между любыми узлами (например, Ethernet), но при этом сеть должна иметь топологию определенного и весьма простого типа, например, древовидную.
При объединении в сеть нескольких сегментов с помощью мотов или коммутаторов продолжают действовать ограничения на ее топологию: в получившейся сети должны отсутствовать петли. Действительно, мост или его функциональный аналог - коммутатор - могут решать задачу доставки пакета адресату только тогда, когда между отправителем и получателем существует единственный путь. В то же время наличие избыточных связей, которые и образуют петли, часто необходимо для лучшей балансировки нагрузки, а также для повышения надежности сети за счет существования альтернативного маршрута в дополнение к основному.
Сетевой уровень позволяет передавать данные между любыми, произвольно связанными узлами сети.
Реализация протокола сетевого уровня подразумевает наличие в сети специального устройства - маршрутизатора. Маршрутизаторы объединяют отдельные сети в общую составную сеть. Внутренняя структура каждой сети не показана, так как она не имеет значения при рассмотрении сетевого протокола. К каждому маршрутизатору могут быть присоединены несколько сетей (по крайней мере две).
В сложных составных сетях почти всегда существует несколько альтернативных маршрутов для передачи пакетов между двумя конечными узлами. Задачу выбора маршрутов из нескольких возможных решают маршрутизаторы, а также конечные узлы.
Маршрут - это последовательность маршрутизаторов, которые должен пройти пакет от отправителя до пункта назначения.
Маршрутизатор выбирает маршрут на основании своего представления о текущей конфигурации сети и соответствующего критерия выбора маршрута. Обычно в качестве критерия выступает время прохождения маршрута, которое в локальных сетях совпадает с длиной маршрута, измеряемой в количестве пройденных узлов маршрутизации (в глобальных сетях принимается в расчет и время передачи пакета по каждой линии связи).
[pagebreak]
Сетевой уровень и модель OSI
В модели OSI, называемой также моделью взаимодействия открытых систем (Open Systems Interconnection - OSI) и разработанной Международной Организацией по Стандартам (International Organization for Standardization - ISO), средства сетевого взаимодействия делятся на семь уровней, для которых определены стандартные названия и функции.
Сетевой уровень занимает в модели OSI промежуточное положение: к его услугам обращаются протоколы прикладного уровня, сеансового уровня и уровня представления. Для выполнения своих функций сетевой уровень вызывает функции канального уровня, который в свою очередь обращается к средствам физического уровня.
Рассмотрим коротко основные функции уровней модели OSI.
Физический уровень выполняет передачу битов по физическим каналам, таким, как коаксиальный кабель, витая пара или оптоволоконный кабель. На этом уровне определяются характеристики физических сред передачи данных и параметров электрических сигналов.
Канальный уровень обеспечивает передачу кадра данных между любыми узлами в сетях с типовой топологией либо между двумя соседними узлами в сетях с произвольной топологией. В протоколах канального уровня заложена определенная структура связей между компьютерами и способы их адресации. Адреса, используемые на канальном уровне в локальных сетях, часто называют МАС-адресами.
Сетевой уровень обеспечивает доставку данных между любыми двумя узлами в сети с произвольной топологией, при этом он не берет на себя никаких обязательств по надежности передачи данных.
Транспортный уровень обеспечивает передачу данных между любыми узлами сети с требуемым уровнем надежности. Для этого на транспортном уровне имеются средства установления соединения, нумерации, буферизации и упорядочивания пакетов.
Сеансовый уровень предоставляет средства управления диалогом, позволяющие фиксировать, какая из взаимодействующих сторон является активной в настоящий момент, а также предоставляет средства синхронизации в рамках процедуры обмена сообщениями.
Уровень представления. В отличии от нижележащих уровней, которые имеют дело с надежной и эффективной передачей битов от отправителя к получателю, уровень представления имеет дело с внешним представлением данных. На этом уровне могут выполняться различные виды преобразования данных, такие как компрессия и декомпрессия, шифровка и дешифровка данных.
Прикладной уровень - это в сущности набор разнообразных сетевых сервисов, предоставляемых конечным пользователям и приложениям. Примерами таких сервисов являются, например, электронная почта, передача файлов, подключение удаленных терминалов к компьютеру по сети.
При построении транспортной подсистемы наибольший интерес представляют функции физического, канального и сетевого уровней, тесно связанные с используемым в данной сети оборудованием: сетевыми адаптерами, концентраторами, мостами, коммутаторами, маршрутизаторами. Функции прикладного и сеансового уровней, а также уровня представления реализуются операционными системами и системными приложениями конечных узлов. Транспортный уровень выступает посредником между этими двумя группами протоколов.
Функции сетевого уровня
Протоколы канального уровня не позволяют строить сети с развитой структурой, например, сети, объединяющие несколько сетей предприятия в единую сеть, или высоконадежные сети, в которых существуют избыточные связи между узлами. Для того, чтобы, с одной стороны, сохранить простоту процедур передачи пакетов для типовых топологий, а с другой стороны, допустить использование произвольных топологий, вводится дополнительный сетевой уровень.
Прежде, чем приступить к рассмотрению функций сетевого уровня , уточним, что понимается под термином "сеть". В протоколах сетевого уровня термин "сеть" означает совокупность компьютеров, соединенных между собой в соответствии с одной из стандартных типовых топологий и использующих для передачи пакетов общую базовую сетевую технологию. Внутри сети сегменты не разделяются маршрутизаторами, иначе это была бы не одна сеть, а несколько сетей. Маршрутизатор соединят несколько сетей в интерсеть.
Основная идея введения сетевого уровня состоит в том, чтобы оставить технологии, используемые в объединяемых сетях в неизменном в виде, но добавить в кадры канального уровня дополнительную информацию - заголовок сетевого уровня, на основании которой можно было бы находить адресата в сети с любой базовой технологией. Заголовок пакета сетевого уровня имеет унифицированный формат, не зависящий от форматов кадров канального уровня тех сетей, которые могут входить в объединенную сеть.
Заголовок сетевого уровня должен содержать адрес назначения и другую информацию, необходимую для успешного перехода пакета из сети одного типа в сеть другого типа. К такой информации может относиться, например:
* номер фрагмента пакета, нужный для успешного проведения операций сборки-разборки фрагментов при соединении сетей с разными максимальными размерами кадров канального уровня,
* время жизни пакета, указывающее, как долго он путешествует по интерсети, это время может использоваться для уничтожения "заблудившихся" пакетов,
* информация о наличии и о состоянии связей между сетями, помогающая узлам сети и маршрутизаторам рационально выбирать межсетевые маршруты,
* информация о загруженности сетей, также помогающая согласовать темп посылки пакетов в сеть конечными узлами с реальными возможностями линий связи на пути следования пакетов,
* качество сервиса - критерий выбора маршрута при межсетевых передачах - например, узел-отправитель может потребовать передать пакет с максимальной надежностью, возможно в ущерб времени доставки.
В качестве адресов отправителя и получателя в составной сети используется не МАС-адрес, а пара чисел - номер сети и номер компьютера в данной сети. В канальных протоколах поле "номер сети" обычно отсутствует - предполагается, что все узлы принадлежат одной сети. Явная нумерация сетей позволяет протоколам сетевого уровня составлять точную карту межсетевых связей и выбирать рациональные маршруты при любой их топологии, используя альтернативные маршруты, если они имеются, что не умеют делать мосты.
Таким образом, внутри сети доставка сообщений регулируется канальным уровнем. А вот доставкой пакетов между сетями занимается сетевой уровень.
Существует два подхода к назначению номера узла в заголовке сетевого пакета. Первый основан на использовании для каждого узла нового адреса, отличного от того, который использовался на канальном уровне. Преимуществом такого подхода является его универсальность и гибкость - каков бы ни был формат адреса на канальном уровне, формат адреса узла на сетевом уровне выбирается единым. Однако, здесь имеются и некоторые неудобства, связанные с необходимостью заново нумеровать узлы, причем чаще всего вручную.
Второй подход состоит в использовании на сетевом уровне того же адреса узла, что был дан ему на канальном уровне. Это избавляет администратора от дополнительной работы по присвоению новых адресов, снимает необходимость в установлении соответствия между сетевым и канальным адресом одного и того же узла, но может породить сложную задачу интерпретации адреса узла при соединении сетей с разными форматами адресов.
Протоколы передачи данных и протоколы обмена маршрутной информацией
Для того, чтобы иметь информацию о текущей конфигурации сети, маршрутизаторы обмениваются маршрутной информацией между собой по специальному протоколу. Протоколы этого типа называются протоколами обмена маршрутной информацией (или протоколами маршрутизации). Протоколы обмена маршрутной информацией следует отличать от, собственно, протоколов сетевого уровня. В то время как первые несут чисто служебную информацию, вторые предназначены для передачи пользовательских данных, также, как это делают протоколы канального уровня.
Для того, чтобы доставить удаленному маршрутизатору пакет протокола обмена маршрутной информацией, используется протокол сетевого уровня, так как только он может передать информацию между маршрутизаторами, находящимися в разных сетях. Пакет протокола обмена маршрутной информацией помещается в поле данных пакета сетевого уровня, поэтому с точки зрения вложенности пакетов протоколы маршрутизации следует отнести к более высокому уровню, чем сетевой. Но функционально они решают общую задачу с пакетами сетевого уровня - доставляют кадры адресату через разнородную составную сеть.
С помощью протоколов обмена маршрутной информацией маршрутизаторы составляют карту межсетевых связей той или иной степени подробности и принимают решение о том, какому следующему маршрутизатору нужно передать пакет для образования рационального пути.
На сетевом уровне работают протоколы еще одного типа, которые отвечают за отображение адреса узла, используемого на сетевом уровне, в локальный адрес сети. Такие протоколы часто называют протоколами разрешения адресов - Address Resolution Protocol, ARP. Иногда их относят не к сетевому уровню, а к канальному, хотя тонкости классификации не изменяют их сути.