Протокол NNTP

Все знают о таких программах для работы в одноранговой сети, как Napster, Kazaa и т.д. Однако сколько человек знают о новостных группах в двоичном формате? Держу пари, что немногие. Подобные группы основаны на протоколе NNTP, который и является основной целью написания настоящей статьи. Итак, читайте, чтобы узнать больше о NNTP!

NNTP или Сетевой протокол передачи новостей (Network News Transfer Protocol) является не слишком известным видом протокола. В принципе, это — одна из услуг, предоставляемых Вам поставщиком доступа к Internet, которая уже успела сформировать собственную индустрию. Такие компании, как Supernews и Easynews утратили свою популярность в соотношении с группами alt.binaries.* Если Вам повезло, то поставщик доступа к Internet предложит Вам хорошие серверы NNTP для личного пользования. Что же представляют собою двоичные группы новостей? Говоря простым языком, они являются именно тем, о чем говорит их наименование, т.е. двоичными группами новостей. Под двоичностью я подразумеваю возможность загрузки картинок, программ, кино, музыки и т.д., т.е. осуществление передачи в двоичном формате. В таких группах находится практически все, что Вы только можете пожелать. Большая часть материалов здесь охраняется авторским правом, так что он даже не подлежит закачке. Именно большое разнообразие материала и сделало подобные группы новостей такими популярными в среде пользователей. Что же составляет протокол, используемый для доступа к этим группам и закачки материала из них? На этот вопрос Вы как раз сможете найти ответ в данной статье!

Шоу начинается

Итак, NNTP, как и любой другой протокол, унифицирован с моделью клиента/сервера и представляет собою протокол прикладного уровня, что определяется ссылками Модели взаимодействия открытых систем OSI. NTTP использует в качестве протокола транспортного уровня Протокол управления передачей TCP и, само собою разумеется, Internet-протокол IP для маршрутизации. NNTP позволяет также производить двусторонний прием и получение информации. Другими словами, он позволяет Вам посылать сообщение в группу новостей и производить скачивание необходимой информации, независимо от того, определяется ли закачка Американским стандартным кодом обмена информацией ASCII или же является двоичной по своей сути. Port 119 это порт, ассоциируемый с серверами NNTP, которые известны как группа новостей USENET.

Одинаковый по своему назначению с другими протоколами прикладного уровня, о чем уже говорилось выше, NNTP также имеет последовательность кодов состояния, большинство из которых идентичны Протоколу передачи гипертекстовых файлов HTTP. Коды состояния используются для передачи данных в различных режимах обратно пользователю NNTP. Различные коды состояния сгруппированы следующим образом:

1xx – Информационное сообщение
2xx – Команда верна
3xx – Команда верна, продолжить
4xx – Команда верна, но не может быть исполнена
5xx – Команда не исполнена (обычно из-за ошибки сервера)

Подобные сообщения появляются довольно часто, когда Вы загружаете или подкачиваете различные материалы. Они отображаются на Вашем клиенте NNTP. Один из самых популярных видов клиентов — Grabit, однако есть также и NewsBin Pro. NNTP также несколько напоминает HTTP в том, что он содержит такие команды, которые идентичны командам GET, POST, или HEAD, встречающимся в HTTP. Команда NEXT в NNTP означает переход к “следующей” статье в группе новостей. Данная команда довольно проста. Команда POST, за которую говорит само наименование, используется для отправки сообщений в группу новостей. Данное сообщение может заключать запрос на определенный эпизод телешоу, который Вы пропустили, и который, к счастью для Вас, содержится в данной новостной группе. В данном случае, Вы отправите сообщение с запросом загрузить данный теле-эпизод, записанный кем-либо. Полный список команд и их назначение Вы можете найти здесь . Не следует бояться читать Запросы на комментарии RFC по протоколу. Они обычно написаны довольно понятным языком. Кроме того, Вам просто необходимо ознакомиться с ними, так как они представляют собою важную информацию по протоколам.

Как выглядит пакет NNTP?

NNTP выглядит абсолютно также, как и любой другой протокол, базирующийся на Internet-протоколе IP. В нем присутствует заголовок Internet-протокола IP, за которым следует заголовок Протокола управления передачей TCP, к которому, в свою очередь, присоединяются данные прикладного уровня. В данном случае это будут данные NNTP. Ниже мы просмотрим два типа пакетов. Пожалуйста, запомните, что я записываю комментарии к пакету непосредственно под ним.

16:18:31.062500 IP (tos 0x0, ttl 128, id 49613, offset 0, flags [none], proto: UDP (17), length: 81) 192.168.1.102.1050 > 24.153.22.67.53:  30312+ A? nntp.slnt.phub.net.cable.rogers.com. (53)
0x0000:  4500 0051 c1cd 0000 8011 87e4 c0a8 0166  E..Q...........f
0x0010:  1899 1643 041a 0035 003d 30c9 7668 0100  ...C...5.=0.vh..
0x0020:  0001 0000 0000 0000 046e 6e74 7004 736c  .........nntp.sl
0x0030:  6e74 0470 6875 6203 6e65 7405 6361 626c  nt.phub.net.cabl
0x0040:  6506 726f 6765 7273 0363 6f6d 0000 0100  e.rogers.com....
0x0050:  01    

Пакет, находящийся выше, был сгенерирован, когда я активировал моего клиента NNTP ( в моем случае это Grabit, уже упоминаемый выше). Первым делом мой компьютер затребовал от поставщика Internet подсоединения по адресу IP, где находится новостной сервер NNTP, что мы видим на примере подчеркнутого ASCII. Работающий клиент Grabit получает “A”, т.е.: ответная запись Сервера доменных имен DNS—соединение с сервером NNTP.

16:18:31.250000 IP (tos 0x0, ttl 128, id 49636, offset 0, flags [DF], proto: TCP (6), length: 53) 192.168.1.102.1638 > 216.196.97.142.119: P, cksum 0xda64 (correct), 1259902493:1259902506(13) ack 3731847953 win 65514
0x0000:  4500 0035 c1e4 4000 8006 3c7d c0a8 0166  E..5..@...<}...f
0x0010:  d8c4 618e 0666 0077 4b18 961d de6f 7b11  ..a..f.wK....o{.
0x0020:  5018 ffea da64 0000 4d4f 4445 2052 4541  P....d..MODE.REA
0x0030:  4445 520d 0a                             DER..

После того, как закончено установление связи между TCP/IP и сервером NNTP, мой клиент запускает команду READER. В данном случае это означает, что он хочет загрузить заголовочный файл. Вы можете заметить, что подчеркнутый участок как раз и обозначает местоположение заголовка Пользовательского протокола данных UDP, а часть, выделенная полужирным шрифтом, обозначает начало данных NNTP и продолжается до конца пакета.

16:18:31.296875 IP (tos 0x0, ttl 128, id 49646, offset 0, flags [DF], proto: TCP (6), length: 72) 192.168.1.102.1638 > 216.196.97.142.119: P, cksum 0xaa51 (correct), 1259902506:1259902538(32) ack 3731847976 win 65491
0x0000:  4500 0048 c1ee 4000 8006 3c60 c0a8 0166  E..H..@...<`...f
0x0010:  d8c4 618e 0666 0077 4b18 962a de6f 7b28  ..a..f.wK..*.o{(
0x0020:  5018 ffd3 aa51 0000 4752 4f55 5020 616c  P....Q..GROUP.al
0x0030:  742e 6269 6e61 7269 xxxx xxxx xxxx xxxx  t.binaries.xxxxxx
0x0040:  xxxx xxxx xxxx xxxx                      xxxxxxx

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

Группы новостей alt.binary, в принципе, похожи на «прошлогодний Дикий Запад». В них содержится много отталкивающего и нелегального. Если у Вас есть дети, то я бы посоветовал Вам строго следить за тем, как ваше чадо использует подобные группы. Протокол NNTP—это средство, с помощью которого практически каждый может получить доступ к любым видам Медиа, от кино до картинок и полноценных программ. Помните также, что загрузка пиратской копии продукта, охраняемого законом об авторских правах, расценивается как воровство. Итак, я надеюсь, что проведенное мною ознакомление с протоколом NNTP было интересным; всегда готов ответить на Ваши вопросы. До следующего раза!