NNTP: ¿qué es exactamente el Network News Transfer Protocol?

A principios de la década de los 80, mucho antes de que se creara la World Wide Web, se creó una plataforma mundial para el intercambio de información, llamada Usenet (originalmente UNIX User Network), que sigue existiendo hoy en día como un servicio de Internet independiente paralelo a la Web. Los grupos de noticias o newsgroups, como se denominan las áreas temáticas individuales de Usenet, han perdido mucha relevancia en las últimas décadas con la aparición de nuevos puntos de encuentro digitales, como foros o redes sociales.

Sin embargo, la estructura jerárquica de Usenet, basada en el clásico intercambio de mensajes cliente-servidor, tiene un enorme valor histórico. Esto es razón más que suficiente para echar un vistazo al NNTP (Network News Transfer Protocol), que es esencial para la comunicación entre servidores de noticias individuales y clientes.

¿Qué significa NNTP?

El Network News Transfer Protocol, también conocido como NNTP, es un protocolo de transferencia TCP/IP para mensajes en grupos de noticias o newsgroups. Estos grupos de noticias se utilizan principalmente en el contexto de la llamada Usenet, una especie de antepasado de los modernos foros de Internet, y son puntos de encuentro que permiten el intercambio de un número ilimitado de mensajes de texto sobre una amplia variedad de temas. La primera especificación del protocolo NNTP, registrada en RFC 977 data del año 1986. Desde entonces, el protocolo ha pasado por varias revisiones. La versión actual se encuentra en RFC 3977. Desde 2009, existe con RFC 5536, además, una Request for Comments que especifica el formato del mensaje de la transmisión NNTP con mayor precisión.

Nota

Hasta el desarrollo y lanzamiento del NNTP, la transmisión de datos en Usenet tenía lugar a través de líneas telefónicas usando el protocolo UNIX UUCP (Unix to Unix Copy).

¿Para qué se utiliza el protocolo NNTP?

Hoy en día, el NNTP ha perdido mucha relevancia en la comunicación digital, lo que está relacionado con el hecho de que la propia Usenet ya solo se utiliza esporádicamente y en círculos especializados. Desde 1986, el Network News Transfer Protocol ha sido un elemento indispensable para la red de información y se utiliza tanto en el lado del servidor como en el del cliente. Aparte de la transmisión de mensajes directos personales, Usenet se caracteriza por los grupos de noticias ya mencionados, que pueden crearse y gestionarse individualmente mediante el NNTP protocol. De este modo, a lo largo del tiempo numerosos subgrupos de noticias se han integrado en la jerarquía básica existente de la Usenet.

Nota

Los ocho temas principales de Usenet, también conocidos como Big Eight o Big-8 (los  grandes  8) son los siguientes:

- comp: Ordenadores.

- sci: Ciencia y tecnología.

- soc: Sociedad.

- talk: Temas generales.

- rec: Temas relacionados con el ocio, la recreación, el arte y la cultura.

- noticias: Información y noticias sobre la propia Usenet.

- misc: Miscelánea.

- humanities: Humanidades, Asuntos Culturales.

¿Cómo funciona el Network News Transfer Protocol?

El NNTP es un protocolo basado en texto y permite la transmisión de datos alterna entre el cliente y el servidor: por cada solicitud de NNTP se espera una respuesta del NNTP. Para esta comunicación, la IANA (Internet Assigned Numbers Authority) ha previsto el puerto TCP 119, que en este caso está reservado únicamente para este protocolo de comunicación. Una red TCP/IP como Internet es, por lo tanto, la estructura subyacente para la plataforma de información. El protocolo NNTP, que a su vez funciona en la capa de aplicación, se basa directamente en el protocolo TCP, que tiene la ventaja de garantizar una transmisión de datos segura y fiable.

El concepto básico de Usenet establece que un mensaje nuevo enviado desde un cliente NNTP a cualquier servidor NNTP se mantiene en ese servidor. Todos los demás clientes que deseen participar en la conversación pueden descargar ese mensaje o artículo en cualquier momento para mantenerse al día de ese grupo de noticias. Esto quiere decir que, si un cliente se conecta a un servidor NNTP, descarga primero todos los mensajes que se han publicado desde la última conexión a ese servidor. Por lo tanto, cuanto más tiempo haya estado desconectado el cliente, más tiempo durará el proceso de actualización al establecer la conexión.

Nota

Cuando un servidor recibe un nuevo mensaje a través del Network News Transfer Protocol, añade un ID de mensaje único a ese mensaje o artículo. Este tiene el formato "<número consecutivo@News-server>" y se utiliza para la identificación inequívoca y para la recuperación y referencia si otros clientes o usuarios desean reaccionar o responder con su propio mensaje.

Asimismo, con el fin de distribuir los nuevos mensajes en toda la red de Usenet, los servidores individuales reenvían los mensajes recibidos a todos los demás servidores del NNTP que conozcan. Antes de hacerlo, añaden su propio nombre al path-header o cabecera del mensaje NNTP para no volver a recibirlo.

NNTP: ejemplo de transmisión de mensajes

Después de haberte explicado los fundamentos del Network News Transfer Protocol en las secciones anteriores, te mostramos un ejemplo concreto de comunicación entre los clientes y los servidores. El punto de partida es el Cliente 1, que introduce un nuevo mensaje o artículo en Usenet:

Los pasos individuales de la transmisión del mensaje, que aparecen en este diagrama, se pueden resumir así:

  1. El usuario del Cliente NNTP 1 escribe un nuevo mensaje (o artículo) y envía estos datos al servidor NNTP 1.
  2. El Servidor 1 de NNTP proporciona al mensaje un ID de mensaje único y añade su nombre a la cabecera. Este conoce al Servidor NNTP 2 y al servidor NNTP 3 y reenvía el mensaje a ambos.
  3. El Servidor NNTP 2 recibe el mensaje e inserta su nombre en la cabecera. El Servidor NNTP 3 recibe también el mensaje, añade su nombre a la cabecera, y reenvía el mensaje al servidor 4 de NNTP, que conoce.
  4. El Servidor NNTP 4 recibe y procesa este mensaje. Después, añade su propio nombre a la cabecera. Después, contacta con el servidor 5, que conoce, y le envía los datos.
  5. El Servidor NNTP 5 añade su identificación a la cabecera. Entonces, evalúa las entradas de la cabecera y por lo tanto no intenta reenviar el mensaje a los servidores 2 y 3, aunque los conoce (las flechas rojas significan que se omite el envío).
  6. Tan pronto como están en línea, los clientes recogen el mensaje de su servidor personal de noticias. Por ejemplo, el Cliente NNTP 2 recibe la información directamente del servidor 1, mientras que el Cliente 6 la recibe del Servidor 4.

Resumen de los comandos de NNTP y códigos de estado

Los clientes y los servidores utilizan comandos ASCII para comunicarse con el protocolo NNTP. De este modo, con cada solicitud de NNTP, un cliente envía automáticamente uno de estos comandos. El servidor responde con un mensaje de estado y envía los datos solicitados al cliente. Los comandos más importantes para la comunicación NNTP aparecen en esta tabla:

Comando NNTP Función
LIST Solicita una lista de los grupos de noticias disponibles (incluyendo el primer y último número de artículo)
NEWGROUPS Consulta todos los nuevos grupos disponibles
NEWNEWS Consulta todos los nuevos artículos disponibles creados a partir de una fecha determinada
GROUP Especifica el grupo al que se realiza la solicitud
ARTICLE Permite consultar un mensaje específico mediante su número en el grupo o su ID de mensaje
HEADER Solicita solo la cabecera de un artículo
BODY Solicita solo el cuerpo de un artículo
STAT Es necesario para especificar el ID de mensaje de un artículo
NEXT Selecciona el siguiente artículo en el grupo de noticias
POST Informa al servidor que se está enviando un nuevo mensaje o artículo
QUIT Corta la conexión con el servidor NNTP

El mensaje de estado que el servidor devuelve como respuesta NNTP (incluyendo los datos solicitados) es un código numérico de tres cifras. La primera cifra se interpreta de la siguiente manera:

Código de estado del servidor de NNTP Significado
1xx Información general
2xx Comando recibido, ejecución completada
3xx Comando recibido, se requiere más información
4xx Comando recibido, ejecución no completada
5xx Comando desconocido

En la segunda cifra del código numérico se transmite la siguiente información:

Código de estado del servidor de NNTP Significado
x0x Información sobre la conexión, la configuración u otros datos
x1x Información sobre un grupo de noticias seleccionado
x2x Información sobre artículos seleccionados
x3x Información sobre transferencia de mensajes
x4x Información sobre los artículos enviados
x5x Respuesta de autenticación
x8x Mensaje para comandos añadidos no estandarizados
x9x Mensaje de depuración