Опубликован: 08.12.2008 | Доступ: свободный | Студентов: 544 / 31 | Оценка: 4.55 / 4.64 | Длительность: 15:21:00
Лекция 7:

Поддержка протоколов интернета и SMTP

Протокол Network News Transfer Protocol (NNTP)

Поскольку протокол доставки сетевых новостей NNTP приобретает все большую популярность, мы даем краткий обзор архитектуры этого протокола. Затем рассмотрим наиболее актуальные аспекты администрирования NNTP.

Архитектура NNTP

Протокол NNTP задает способ распространения, запроса, поиска и доставки новостных статей в интернете. Клиент, которому нужно получать выборку подмножества статей в базе данных, называется подписчиком. NNTP позволяет подписчику запрашивать определенное подмножество статей, а не выполнять поиск всех статей из базы данных. До разработки протокола NNTP были популярны два метода распространения новостных элементов: почтовые списки рассылки инернета и система новостей Usenet.

Почтовый список рассылки интернета, известный под названием сервера рассылки,используется для распространения новостей с помощью списков рассылки электронной почты. Подписчик отправляет сообщение в список рассылки, и это сообщение передается по электронной почте всем членам списка. Но для отправки отдельной копии сообщения каждому подписчику требуется значительная часть пространства на диске, пропускной способности и ресурсов ЦП. Кроме того, для полного распространения сообщения тратится от нескольких минут до нескольких часов в зависимости от размера списка и наличия физических ресурсов, используемых для распространения. Поддержка списка подписчиков требует значительных затрат на администрирование, если только для автоматизации этой функции не используется программа сторонних фирм.

Хранение и считывание сообщений из центрального узла вместо отправки сообщения электронной почты каждому подписчику существенно снижает использование этих ресурсов. Эта альтернатива обеспечивается системой новостей Usenet. Кроме того, Usenet позволяет подписчику выбирать только те сообщения, которые он хочет прочитать, а также обеспечивает индексирование, перекрестные ссылки и следит за истечением срока хранения сообщений.

Протокол NNTP построен путем моделирования спецификаций новостей Usenet в документе RFC 850, но он имеет меньше требований к структуре, содержимому и хранению новостных статей. Он выполняется как фоновая служба на одном хосте и допускает соединения с другими хостами в локальной сети или через интернет. Когда подписчик подсоединяется к серверу NNTP, он передает команду NEWSGROUPS, чтобы определить, созданы ли на этом сервере новые группы новостей. Если да, то сервер уведомляет подписчика и пре-доставляет ему возможность подписаться на новые группы новостей. После этого подписчик подсоединяется к нужной группе новостей и с помощью команды NEWNEWS может выяснить, имеются ли новые статьи, поступившие после предыдущего подсоединения подписчика. Подписчик получает от сервера список новых статей и направляет запрос на передачу некоторых или всех статей. И, наконец, подписчик может ответить на новостную статью или поместить на сервер новую статью с помощью команды POST

NNTP использует для своих соединений протокол TCP и аналогичные SMTP команды и ответы. По умолчанию для NNTP используется ТСР-порт 119. Команды NNTP состоят из имени команды, после которого в некоторых случаях следует параметр. Они не зависят от регистра используемых букв. Каждая строка содержит только одну команду и не должна превышать 512 символов, включая пробелы, знаки пунктуации и конечные символы CR-LF (возврат каретки/перевод строки). Команды нельзя продолжать на следующей строке.

Ответ сервера содержит текст или информацию о состоянии. Текстовые ответы выводятся на экран в клиентской программе подписчика, а ответы с информацией о состоянии интерпретируются клиентской программой в отображение на экране.

Каждая строка с ответом о состоянии начинается с трехразрядного числового кода. Первая цифра ответа указывает на успешное выполнение, отказ или продолжение выполнения предыдущей команды. В таблице ( таблица 7.5) приводится смысловое значение для первой цифры. Вторая цифра указывает функциональную категорию ответа. Эти категории приводятся ниже (см. таблица 7.6). Третья цифра указывает конкретный ответ.

Таблица 7.5. Смысл первой цифры кода ответа о состоянии
Первая цифра Смысловое значение
1хх Информативное сообщение.
2хх Успешный прием команды.
Зхх Пока успешный прием команды; отправить остальную часть команды.
4хх Команда передана правильно, но не может быть выполнена по некоторой причине.
5хх Команда не реализована или неверна, либо произошла серьезная программная ошибка.
Таблица 7.6. Смысл второй цифры кода ответа о состоянии
Вторая цифра Смысловое значение
х0х Соединение, начальная установка и различные сообщения.
x1x Выбор группы новостей.
х2х Выбор статьи.
хЗх Функции распространения.
х4х Размещение в группе новостей (публикация).
х8х Нестандартные расширения (частная реализация).
х9х Отладочная информация.

Обычно коды 2хх отправляются при начальном соединении с сервером NNTP в зависимости от разрешений доступа. Код 400 отправляется, когда сервер NNTP прерывает работу, а коды 5хх указывают, что команду нельзя выполнить по какой-то необычной причине. В таблице далее ( таблица 7.7) приводится список некоторых кодов, с которыми вы столкнетесь при поиске и устранении проблем соединений NNTP.

Таблица 7.7. Часто используемые коды ответов о состоянии NNTP
Код Смысловое значение
100 Help-текст.
190-199 Отладочная информация.
200 Готовность сервера; размещение в группе новостей разрешено.
201 Готовность сервера; размещение в группе новостей не разрешено.
400 Работа службы прекращена.
500 Нераспознаваемая команда.
501 Ошибка в синтаксисе команды.
502 О граничение доступа или отказ в полномочиях.
503 Сбой программы; команда не выполнена.

Команды NNTP

Мы не можем привести здесь подробное описание каждой команды протокола NNTP. Однако имеет смысл дать описание нескольких команд, с которыми вы столкнетесь и в журнале событий, и в выходном файле журнала, на тот случай, если вам понадобится искать и устранять проблемы соединений протокола NNTP. На рис. 7.30 приводятся некоторые команды.

Команды ARTICLE, BODY, HEAD и STAT относятся к поиску и передаче статьи новостей. Команды HEAD и BODY идентичны команде ARTICLE, за исключением того, что они возвращают либо строки заго-ловка (HEAD), либо основной текст (BODY) данной статьи. Команда STAT не возвращает никакого текста, а только идентификатор сообщения.

Команда ARTICLE имеет две формы: в первой из них вслед за командой указывается идентификатор сообщения для статьи, которую нужно вывести на экран, и вторая форма указывается с параметром или без параметра. В первой форме команды ARTICLE выводится заголовок, пустая строка и основной текст указанной статьи. Подписчик получает идентификатор сообщения из диапазона номеров статей, полученного в ответе на команду NEWNEWS.

Во второй форме команды, ARTICLE <идентификатор сообщения>, выводится заголовок, пустая строка и основной текст сообщения. Подписчик выбирает номер сообщения из полученного списка статей, когда была выбрана данная группа новостей. Если номер опущен, предполага-ется текущая статья. Вот некоторые ответы с сообщениями об ошибках, возникающие при использовании этой команды:

  • "420 no current article has been selected" (не выбрана текущая статья);
  • " 423 по such article number in this group" (статьи с таким номером нет в данной группе);
  • " 430 no such article found" (не найдено такой статьи).
 Файл журнала для службы NNTP

Рис. 7.30. Файл журнала для службы NNTP

Команда GROUP должна сопровождаться именем группы новостей. Имена групп новостей не зависят от регистра используемых букв. Если запрашиваемая группа не существует, то подписчик получит сообщение об ошибке >"411 no such news group>" (Нет такой группы новостей). Если запрошенная группа существует, подписчик получит номера первой и последней статей в этой группе вместе с оценкой количества статей в группе. Эта оценка не обязательно в точности равна количеству статей.

Команда LIST возвращает список достоверных групп новостей и связанную с ними информацию. Для каждой группы передается строка текста, которая выглядит следующим образом:

<группа> <первая> <последняя> <р>

где

  • <группа> > - имя группы новостей;
  • <последняя> - номер последней известной статьи на данный момент в этой группе новостей;
  • <первая> - номер первой статьи на данный момент в этой группе новостей;
  • <р< - "у" или "п"; "у" указывает, что размещение (публикация) в группе новостей разрешено, а " п" указывает, что размещение не разрешено.

Возможно, что в ответе указано " у", но вы все равно не можете публиковаться в группе новостей, так как данная группа новостей либо мо-дерируется, либо имеет ограничения, либо отсоединилась по какой-либо причине.

Команда NEWSGROUPS сопровождается указанием даты, времени и необязательного параметра группы <рассылки> . Она выводит список групп новостей, созданных после указанных даты и времени. Дата указывается шестью цифрами в формате ггммдд. Ближайший век подразумевается первыми двумя цифрами. Так, 86 означает 1986, и 30 означает 2030. Параметр времени указывается шестью цифрами в формате ччммсс, причем часы указываются, исходя из 24 часов. Часовой пояс совпадает с часовым поясом сервера, если только не указана метка GMT, что соответствует времени на нулевом меридиане.

Необязательный параметр < группы рассылки > представляет список групп рассылки. Например, рассылочная часть net.trainsbydave -"net". При указании этого параметра рассылочная часть статьи сравнивается со списком групп рассылки. Выводятся только те группы, которые соответствуют указанным группам.

Администрирование NNTP

Служба NNTP используется в Exchange Server 2003 для создания асинхронных групповых дискуссий. Она настраивается для взаимодействия с внешними серверами NNTP, чтобы сделать популярные группы Usenet доступными внутренним образом для пользователей системы. NNTP в IIS используется вместо службы Internet News Service в Exchange Server 5.5. При инсталляции Exchange Server 2003 эта система расширяет возможности NNTP в Windows 2003, придавая ему способность связываться с другими серверами новостей через каналы новостей.

Вы можете создать в своей организации несколько серверов NNTP в виде структуры "начальник-подчиненный" (master-subordinate). Это позволит клиентам подключаться к набору серверов и при этом поддерживать точные представления содержимого групп новостей. Создание набора серверов обеспечивает масштабируемость для большой пользовательской сети, такой как у провайдеров услуг интернета (ISP), и отказоустойчивость в случае отказа подчиненных серверов.

Несмотря на то что главный сервер управляет номерами статей и поддерживает синхронизацию с подчиненными серверами, клиенты всегда подсоединяются к подчиненному серверу новостей. Конфигурация DNS автоматически распределяет клиентскую нагрузку равномерно между подчиненными серверами. Поскольку каждый подчиненный сервер поддерживает канал новостей (newsf eed) с главным сервером, то новая опубликованная статья сначала передается на главный сервер и не появится на подчиненном сервере, пока главный сервер не отправит эту статью на все подчиненные серверы.