Таким протоколом стал NNTP ( Network News Transport Protocol ), представляющий собой нечто промежуточное между IMAP4 и POP3 протоколами. Независимо от организации групп новостей, все они связаны в единую иерархическую структуру. Образно можно уподобить конференции дереву папок, а сообщения - хранящихся в них файлам. Фактически можно рассматривать каждую группу новостей, как папку IMAP4, со своими собственными атрибутами.
Однако протокол NNTP содержит много нововведений, не встречавшихся ранее в почтовых системах. Одна из решаемых им проблем - обеспечение синхронизации сообщений. Тысячи NNTP-серверов, порой даже не подозревающих о существовании друг друга, должны иметь идентичное содержимое. На какой бы из них не поступило новое сообщение, оно должно быть разослано всем остальным серверам.
Здесь не будет приводиться подробное описание используемых алгоритмов синхронизации. Не то, чтобы они были слишком сложны для понимания, но механизмы взаимодействия NNTP-серверов скрыты от пользователя и существуют далеко не в единственном варианте - от тривиальной рассылки, до самоорганизующейся распределенной базы данных.
Бесплатных news-серверов много, но хорошихсреди них очень мало. Чаще всего конференции открыты только на чтение. Посылка сообщений (если даже она и разрешена) обычно никуда не уходит дальше этого сервера. Поэтому ничего не остается, кроме как воспользоваться услугами, предоставляемыми собственным Internet-провайдером.
К счастью, существует масса специальных программ для поиска общедоступных NNTP-серверов. Неплохо себя зарекомендовал “New Hunter” ( http://www.slip.net/~rain/nh/) механизм работы которой будет рассмотрен в «дополнении».
Для подключения к NNTP-серверу необходимо установить с ним TCP-соединение по сто девятнадцатому порту.
Рисунок 012 Подключение к NNTP-серверу
Если соединение установлено успешно, через секунду на экране telnet-клиента должно появится приглашение приблизительного вида:
· 201news.rnd.runnet.ru InterNetNews NNRP server INN 2.2 21-Jan-1999 ready ( no posting).
Код ответа 201 (в тексте он выделен жирным шрифтом) обозначает, что сервер не позволяет клиенту создавать новые сообщения (иными словами постинг [232]запрещен). В том случае, когда постинг разрешен, сервер возвращает код 200 и строку наподобие «posting ok».
Полное описание кодов возврата содержится в RFC-977, и поэтому не приводится в данной книге.
Список доступных конференций можно получить с помощью команды “LIST”. При медленном соединении эта операция может занять продолжительное время, поскольку количество конференций обычно очень велико. Поэтому ниже приводится лишь фрагмент ответа сервера:
· LIST
· 215 Newsgroups in form "group high low flags".
· control 0004971978 0004971979 n
· junk 0000000001 0000000002 n
· test 0000010149 0000010150 y
· a.bsu.programming 0000000718 0000000715 y
· a.bsu.religion 0000009622 0000009613 y
· a.bsu.talk 0000000190 0000000184 y
· aaa.inu-chan 0000000000 0000000001 m
· ab.arnet 0000000045 0000000046 m
· ab.general 0000001678 0000001677 y
· akr.internet 0000000379 0000000375 y
·…
Пара чисел, следующих за именем группы, указывает номера первого и последнего из доступных сообщений.
Врезка «для начинающих» *
Ограниченные дисковые ресурсы сервера не позволяют ему сохранять все сообщения. По истечении некоторого промежутка времени (варьирующегося зависимости от настройки от недели до месяца) старая корреспонденция удаляется. Предполагается, что подписчики регулярно посещают сервер, и все необходимое сохраняют на своем локальном компьютере.
Конечно, это чрезвычайно неудобное решение доставляет много хлопот пользователям и засоряет их жесткие диски. Поэтому, в сети возникли специализированные сервера, занимающиеся архивированием всех (или избранных) конференций. Некоторые из них имеют развитую систему поиска, без которой было бы немыслимо ориентироваться в миллионах сообщений.
Большой популярностью пользуется служба «Deja News» ( http://dejanews.com), позволяющая не только читать, но отправлять сообщения в конференции.
Флаг, расположенный в конце каждой строки, может принимать один из трех следующих значений: “y”, “n” и “m”. Значение “y” говорит о том, что создание новых сообщений в этой конференции разрешено; “n” запрещает такую операцию и “m” обозначает модерируемою конференцию.
Читать дальше