# Network News Transport Protocol

Network News Transport Protocol (NNTP) es un protocolo inicialmente creado para la lectura y publicación de artículos de noticias en Usenet. Su traducción literal al español es "protocolo para la transferencia de noticias en red".

## Historia

NNTP tuvo sus comienzos en marzo de 1986 cuando Brian Kantor de la Universidad de San Diego,y Phil Lapsley de la Universidad de Berkeley crearon el RFC 977, especificación en la que se basó el NNTP en ese momento. Este protocolo tuvo otros colaboradores como fueron Stan Barber del Colegio de Medicina Baylor, y Erik Fair de Apple Computer.
En octubre de 2006, el IETF publicó el RFC 3977 que actualiza el protocolo NNTP y que incluye muchas de las mejoras creadas a lo largo de los años desde el RFC 977.
Hoy en día también algunos BBS usan este protocolo para dejar disponibles sus foros o áreas de correo de la red FidoNet u otras redes.

## Principio de funcionamiento

NNTP consta de un servidor en el que están almacenadas las noticias, y a él se conectan los clientes a través de la red.
La conexión entre cliente y servidor se hace de forma interactiva consiguiendo así un número de artículos duplicados muy bajo. Esto supone una gran ventaja respecto de servicios de noticias anteriores, en los que la tecnología por lotes era su principal aliada.
Esta conexión se realiza sobre el protocolo TCP. El puerto 119 está reservado para el NNTP. Sin embargo cuando los clientes se conectan al servidor de noticias mediante SSL se utiliza el puerto 563.
Cada artículo de noticias almacenado en el servidor está referenciado por el nombre de la máquina del cliente que ha publicado dicho artículo. Esta referencia queda presente en un campo de la cabecera llamado NNTP-Posting-Host.

## Posibilidades que ofrece este protocolo

Al igual que otros servidores de noticias, los clientes podrán listar los grupos de noticias disponibles y descargar, enviar y publicar artículos mediante órdenes específicas del NNTP.
Cuando se publica se está creando un artículo nuevo, y por lo tanto la cabecera del mensaje sólo tendrá parte de la información. Al enviar se está trabajando con un artículo que realmente existe y que posee una información completa en la cabecera y que también contiene el identificador del mensaje cuando se publicó.
Tanto los lectores de noticias como los clientes de transferencia de noticias pueden descargar los artículos. Esto permite el acceso simultáneo de muchos clientes a las noticias, sin contar con los grandes inconvenientes del NFS.

## Métodos de transferencia de noticias

Para transferir noticias utilizaremos dos métodos:
* Método pushing (activo): Cuando el cliente envía un artículo al servidor por este método, este le devuelve un código de respuesta por el cual se sabe si ya tiene ese artículo, o sin embargo no lo tiene y es transferido desde el cliente. La orden para realizar dicho proceso es IHAVE msgid.
Este método también se llama coloquialmente empujar.
Cabe destacar una gran desventaja, y es que cada artículo es buscado individualmente, por lo que esto supone un gran número de accesos a la base de datos y una gran carga para el servidor.
* Método pulling (pasivo):Con esta técnica se obtiene una lista de artículos de un grupo cuya fecha es posterior a la especificada por el cliente. Para ello se utiliza la orden NEWSNEWS. Después el cliente selecciona los artículos que no posee de la lista anterior, y le son transferidos. La orden ARTICLE sirve para realizar dicho propósito trabajando con cada uno de los IDs de los mensajes seleccionados.
Esta técnica también se puede llamar tirar.
Todo el proceso de transferencia de noticias está regulado por un estricto control por parte del servidor, ya que puede darse el caso de que exista información confidencial y ésta sólo puede ser vista por algunos clientes.
El protocolo IMAP también puede usarse para leer los grupos de noticias.

## Suplantación

Un problema presente en el protocolo NNTP es el spoofing, falsificación de noticias por medio de la suplantación de identidad de los clientes que participan en un grupo de noticias.
Una extensión del NNTP soluciona este problema y para ello pide una autentificación al usuario para algunas órdenes. Esto protege al servidor de noticias de un uso malintencionado.
Otros protocolos de transferencias de noticias, como el SMTP, también presentan este problema.

## Paquetes NNTP (sistema operativo Linux)

Entre los diferentes paquetes NNTP podemos destacar el demonio NNTP (nntpd), que es uno de los más conocidos y además es usado como referencia. Sus creadores son Stan Barber y Phil Lapsley. Este paquete se encuentra en cualquier distribución de Linux.
Otro paquete NNTP es el InterNetNews o INN. Fue creado por Rich Salz y combina dos protocolos, uno basado en NNTP y otro en UUCP. Esta característica hace a este paquete mejor que el anterior (nntpd) y es utilizado para manejar grupos de noticias de gran tamaño.