Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тема 10-глоб.doc
Скачиваний:
5
Добавлен:
17.08.2019
Размер:
221.7 Кб
Скачать

Протокол обмена новостями и принципы построения системы

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

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

С использованием NNTP ситуация существенно изменилась. При использовании интерактивного протокола программы-серверы могут обмениваться информацией о наличии сообщений и заказывать только те, на которые есть запросы.

В протоколе вводятся два уровня серверов. Центральный сервер обеспечивает централизованное хранение новостей в локальных сетях. Пользователи используют программы-клиенты для просмотра новостей. На этом же сервере хранятся и списки подписки пользователей на группы новостей. Промежуточный или "slave" (подчиненный сервер обычно устанавливается на машинах с большим числом пользователей и хранит только последние поступления. За всей остальной информацией он обращается к центральному серверу сети (рисунок 4.3).

Протокол NNTP определяет запросно-ответный механизм обмена сообщениями между серверами и сервером и программами-клиентами. Для этой цели в протоколе определен набор команд и ответов на них. Весь диалог осуществляется в текстах ASCII. Каждая команда состоит из идентификатора команды и параметров.

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

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

По команде IHAVE клиент, а это может быть как удаленный клиент, так и сервер (последнее более вероятно), сообщает серверу, что он уже имеет статью, чей идентификатор указан в качестве параметра команды.

По командам LAST и NEXT перемещают указатель текущей строки в группе, а по команде LIST получают список групп с указанием количества новых статей в них и начальным и конечным номерами статей. По командам NEWGROUPS и NEWNEWS можно получить списки новых групп и новых статей соответственно, а по команде POST отправить свою статью на сервер. Команда SLAVE сообщает о наличии в качестве клиента подчиненного сервера, команда QUIT позволяет завершить сеанс.

Рассмотрим примеры использования протокола NNTP. В первом примере используется относительная адресация статей. Буквой S обозначен сервер, а буквой C - клиент.

S: (слушает 119 порт TCP)

C: (запрашивает соединение по 199 порту TCP)

S: подтверждает соединение (код 200 Ok)

(клиент запрашивает список групп)

C: LIST

S: 215 list of newsgroups follows

S: net.wombats 00543 00501 y

S: net.unix-wizards 10125 10011 y

(more information here)

S: net.idiots 00100 00001 n

S: .

(клиент выбирает группу)

C: GROUP net.unix-wizards

S: 211 104 10011 10125 net.unix-wizards group selected

(there are 104 articles on file, from 10011 to 10125)

(клиент выбирает статью для чтения)

C: STAT 10110

S: 223 10110 <23445@sdcsvax.ARPA> article retrieved - statistics

only (article 10110 selected, its message-id is <23445@sdcsvax.ARPA>)

(клиент проверяет заголовок)

C: HEAD

S: 221 1010 <23445@sdcsvax.ARPA> article retrieved - head

follows (text of the header appears here)

S: .

(клиент запрашивает тело сообщения)

C: BODY 222 10110 <23445@sdcsvax.ARPA> article retrieved

S:

- body follows (body text here)

S: .

(клиент выбирает следующую статью)

C: NEXT

S: 223 10113 <21495@nudebch.uucp> article retrieved - statistics

only (article 10113 was next in group)

(клиент завершает сессию)

C: QUIT

S: 205 goodbye.

Второй пример иллюстрирует рассылку новостей.

S: (слушает порт 119)

C: (запрашивает соединение)

S: 201 Foobar NNTP server ready (no posting)

(клиент запрашивает новые группы 2 двух часов дня 15 мая 1985)

C: NEWGROUPS 850515 020000

S: 235 New newsgroups since 850515 follow

S: net.fluff

S: net.lint

S: .

(клиент запрашивает список новых статей с той же даты)

C: NEWNEWS * 850515 020000

S: 230 New news since 850515 020000 follows

S: <1772@foo.UUCP>

S: <87623@baz.UUCP>

S: <17872@GOLD.CSNET>

S: .

(клиент запрашивает статью <1772@foo.UUCP>)

C: ARTICLE <1772@foo.UUCP>

S: 220 <1772@foo.UUCP> All of article follows

S: (sends entire message)

S: .

(клиент сообщает, что у него есть статья)

C: IHAVE <4105@ucbvax.ARPA>

S: 435 Already seen that one, where you been?

(завершение сеанса)

C: QUIT

S: 205 Foobar NNTP server bids you farewell.

Весь этот диалог можно воспроизвести вручную по команде telnet:

telnet <доменный адрес сервера> 119