|
|
|
Протокол NNTP, описание команд
Сервер новостей UseNet использует протокол NNTP для взаимодействия с другими серверами. Механизм работы протокола NNTP во многом похож на механизм работы по протоколу SMTP. Протокол поддерживает канал обмена новостями и простейший интерфейс работы с распределенной базой данных новостей. При использовании в качестве транспортного протокола TCP, протокол NNTP, как правило, работает с портом 119. Команды и ответы протокола состоят из ASCII-символов. Если соединение позволяет передавать 8-битные данные, восьмой (старший) бит устанавливается в ноль. Команды могут содержать параметры, которые отделяются пробелами или символами табуляции. Каждая строка может содержать только одну команду (с параметрами или без), должна заканчиваться парой <CRLF> и быть длиной не более 512 байт. После обработки команды, сервер новостей возвращает статус обработки. Ответ сервера представляет собой строку, состоящую из числового кода обработки и текста (который может быть либо комментарием обработки команды, либо возвращаемой по команде информацией). Ответы бывают двух видов: текстовые и статус-ответы. Текстовые ответы следуют только после строки цифрового статус-ответа, который указывает на то, какого рода текстовый ответ будет за ним следовать. Текстовый ответ представляет собой последовательность строк текстового содержания, каждая из которых заканчивается комбинацией <CRLF>. Отдельная строка, содержащая только символ (.), а точнее комбинацию символов <CRLF>.<CRLF>, передается для обозначения конца текста. В случае, если исходный текст содержит в качестве первого символа строки символ (.), то при передаче он будет продублирован. На приемной стороне пользователь отбросит этот символ. Предполагается, что текстовые сообщения должны быть отображены на экране пользовательского терминала в отличие от статус-ответов, которые интерпретируются программой-клиентом пользователя. Статус-ответы являются сообщениями о статусе от сервера и индицируют ответ на последнюю команду, принятую от клиента. Строка статус-ответа начинается с 3-х цифрового кода, достаточного для различения всех возможных ответов. Некоторые из них предваряют передачу текста. Ниже приводится список основных кодов ответов, которые могут быть посланы NNTP-сервером. Они не являются строго привязанными к конкретным командам и могут быть возвращены как результат установления соединения, ошибки или других необычных ситуаций. Обычно коды ответов типа 1хх могут быть проигнорированы или отображены по желанию; коды 200 или 201 посылаются после установления соединения с NNTP-сервером в зависимости от того, разрешена публикация или нет; код 400 будет послан тогда, когда NNTP-сервер прекратит обслуживание (например, по запросу оператора); и коды 5хх указывают на то, что команда не может быть выполнена по каким-либо причинам. 100 Текст с инструкциями. 190 – 199 Отладка выхода. 200 Сервер готов - публикация разрешена. 201 Сервер готов - публикация не разрешена. 400 Прекращение обслуживания. 500 Команда не опознана. 501 Ошибка в синтаксисе команды. 502 Ограничение доступа или отказ в разрешении. 503 Ошибка программы - команда не выполнима. Примечание Числовые коды ответов сервера новостей составляют определенную иерархию и обозначают состояние сервера после выполнения команды. Описание кодов возврата выходит за рамки данной книги. Подробное описание структуры системы кодов вы можете найти, например, в RFC-977. Итак, после того как клиент установил TCP-соединение с сервером новостей, сервер отвечает приглашением к работе по протоколу NNTP (далее символом "S" будем обозначать сервер новостей, а символом "С" — клиента). Например: Код 200 означает, что данный сервер позволяет клиенту передавать ему новые статьи. Если код ответа — 201, сервер не позволяет клиенту передавать на него новые статьи: Теперь клиент может начать работу. Далее будут описаны наиболее употребительные в ежедневной работе команды NNTP.
где <groupname> — имя группы новостей, <last> и <first> — номера последней и первой статьи в группах, р — флаг, показывающий, может ли клиент отправлять свои статьи в эти группы ('n' — не может, 'у' — может). Несмотря на то, что сервер новостей может позволять читать и отправлять ему статьи, некоторые конференции могут быть закрыты на чтение. Например, статьи группы должны быть определенным образом зашифрованы или могут передаваться в группу только через председательствующего группы — модератора. Это не зависит от общих настроек сервера, а определяется параметрами конкретной группы.
где 211 — код успешного открытия группы (если код =411, такой группы нет), число 104 — количество статей в группе, 10011 — номер первой статьи группы, 10125 — номер последней статьи. После выполнения этой команды создается указатель на текущую статью, который по умолчанию будет указывать на первую статью в группе.
Если сервер уже имеет данную статью, он ответит, что копия статьи у него уже есть. Если указанной статьи нет, сервер попросит ее отправить, и пользователь может отправить статью. При отправке клиент должен передать всю статью целиком, включая заголовок и тело сообщения в том же формате, в каком он получает статьи от данного сервера. Передача сообщения завершается строчкой, содержащей символ "." (т. е. последовательностью "<CRLF>.<CRLF>"). Ситуация, когда сервер новостей не имеет сообщения, в то время как оно находится у его клиента, может возникнуть, например, если клиент работает с несколькими серверами, которые еще не успели или не могут по каким-либо причинам обменяться данными сообщениями.
|
|
|