12 . Принципы организации Usenet. Протокол NNTP. Usenet— компьютерная сеть, используемая для общения и публикации файлов. Usenet состоит из ньюсгрупп, в которые пользователи могут посылать сообщения. Сообщения хранятся на большом количестве серверов, которые обмениваются ими друг с другом. В настоящее время практически весь Usenet-трафик передаётся по Интернету, а формат сообщений и способ их передачи очень похож на электронную почту. Однако, если электронная почта используется прежде всего для общения «один на один», то Usenet действует по принципу «один для всех». Сообщения, которые пользователь публикует (англ. posts) в Usenet, организуются в тематические категории, называемые новостными группами (англ. newsgroups) или конференциями, которые, в свою очередь, организуются в собственную иерархию, подобную структуре доменных имён. Например, группы sci.math и sci.physics находятся внутри иерархии sci (сокращение от англ. science — наука). С помощью приложений для работы с Usenet пользователь может «подписаться» на определённые конференции. Когда пользователь отправляет сообщение, вначале оно становится доступно только на его сервере. Но каждый сервер news обменивается сообщениями с несколькими другими соседними серверами, и таким образом сообщение должно оказаться на каждом сервере в сети. Usenet — распределённая система. Новости «бродят» по сети. От сервера к серверу. От клиента к клиенту. По умолчанию сообщения задерживаются на 5 дней. Существуют порядка 10 групп верхнего уровня. Usenet выполняет роль и функции периодического издания. Следует выделить открытые и закрытые конференции. Последние — для огнаниченного числа пользователей. Также по контролю за публикациями: модерируемые (управляемые), пост- модерируемые (наблюдаемые), немодерируемые. Для участия в конференции — послать письмо на сервер, который поддерживает... Надо найти поле «новостная группа». Причём тело письма не анализируется. Если не находит это поле, пытается выполнить команды, которые находятся в письме. В заголовке обязательно должны быть поля: 1. Newsgroups: Новостная группа — там может быть указано несколько конференций. 2. Distribution: Область распространения world — весь мир / ru - Россия / local (только ваш узел). 3. Subject: тема конференции. Необязательные поля: Keywords: Ключевые слова (для индексирования) Summary: Аннотация Команды сервера: help — выслать описание команд сервера, не «оказать помощь» list — выслать список конференций, которые поддерживает news-сервер. subscribe <имя конференции> - подписаться на конференцию (только заголовки) feed <имя конференции> - подписаться с получением полностью всех статей unsubscribe <имя конференции> - отменить подписку на конференцию forget — окончательно отключиться от сервера check — выдать список конференций, на которые Вы подписаны, с указанием режимов подписки group <имя конференции> - сделать конференцию «текущей» (для команд ARTICLE, INDEX, LINDEX) article <N> - выслать указанную статью index <N1> <N2> - выдать список статей текущей конференции в диапазоне номеров от N1 до N2 index <-N> - выдать список последних N статей текущей конференции quit — конец задания для сервера NNTP — протокол, разработанный для обмена сообщениями в телеконференциях между серверами usenet (ньюссерверами). По строению этот протокол во многом сходен с протоколом приема и передачи электронной почты SMTP. Существует вариация протокола NNTP, называемая NNRP (Network News Readers Protocol). Она отличается только набором поддерживаемых команд, и предназначена для чтения конференций с сервера новостей клиентским ПО в режиме онлайн. Функционально NNTP ориентирован на то, что статьи отправляются подписчикам при их появлении на сервере, а NNRP — по запросу клиента. За NNTP закреплен TCP-порт 119. При подключении к NNTP-серверу по SSL (т. н. NNTPS) используется порт 563. NNTP предполагает, что сервера новостей постоянно подключены к Интернету. Когда онлайн-технологии были менее распространены, сервера новостей обменивались новостями посредством uucp. Протокол NNTP, как и SMTP, является текстовым, то есть все команды и ответы на них являются обычными текстовыми строками. Важной особенностью протокола NNTP является его эффективность в случае сложных графов связей между серверами новостей. Чтобы одно и то же сообщение не передавалось многократно, обычно отправляющий сервер сначала сообщает идентификатор нового сообщения, а само сообщение отправляет только после подтверждения принимающей стороны о том, что этого сообщения там ещё нет. В случае расширения stream NNTP эта концепция развивается ещё дальше: отправляющая сторона шлёт список идентификаторов новых статей, не дожидаясь ответа на каждый из них, и сами статьи, если принимающая запросила их по идентификаторам. Часто сервера новостей держат постоянно открытыми одну или несколько NNTP-сессий, чтобы не открывать их каждый раз заново при получении новых сообщений. В протоколе вводятся 2 уровня серверов: центральные сервер — обеспечивает централизованное хранение... промежуточные сервер == подчинённый сервер — обычно устанавливается на машинах с большим количеством пользователей — хранит только последние поступления. Во всех остальных случаях за информацией обращаются к центральному серверу сети. NNTP определяется запросно- ответный механизм для общения между сервером и программами-клиентами. Для этой цели определён набор команд и ответов на них. Весь диалог осуществляется в текстах ASCII. Каждая команда состоит из идентификатора команды и параметров. article, body, head, stat... Существуют 2 способа запросить статью: по её идентификатору, либо по номеру статьи в группе.Если используется команда BODY — только тело статьи.HEAD — только заголовок. По команде STAT устанавливается текущая позиция в группе по идентификатору статьи. При этом никакой информации не возвращается. По команде GROUP выбирается группа новостей. При этом указатель устанавливается на первую запись. HELP — разрешённые для использования команды. Можно перемещать указатель на текущей строе вперёд/назад — NEXT/PREV. LIST — список групп с указание количества новых статей. Порт 119 TCP. Клиент запрашивает по порту 199 соединение. Затем сервер подтверждает соединение (код 200, аналогия с FTP). Затем клиент запрашивает список групп. Затем сервер отвечает: 215. Клиент начинает выбирать группу — и мы отправляем... GROUP <название группы>. Код ответа: 211. Сервер показывает, что у него есть. Клиент начинает выбирать статью для чтения. 104, 10011, 10125. После этого клиент начинает проверять заголовок. И после этого запрашивает тело сообщения. Выдаётся опять номер статьи. Затем будет выбираться статья. И после