20.3. ¿Cómo maneja Usenet las noticias?

Actualmente, Usenet ha crecido a enormes dimensiones. Los servidores que llevan todos los grupos usualmente transfieren algo como 60 MB diarios. [1] Por supuesto, esto requiere mucho más que mezclar ficheros. Vamos a dar una mirada a la manera en la mayoría de los sistemas Unix manejan las noticias de Usenet.

Las noticias empiezan cuando los usuarios crean y publican los artículos. Cada usuario introduce un mensaje en una aplicación especial llamada lector de noticias, el cual lo formatea apropiadamente para su transmisión al servidor de noticias local. En entornos Unix el lector de noticias normalmente emplea la instrucción inews para transmitir artículos al servidor de noticias usando el protocolo TCP/IP. Sin embargo, también es posible escribir el artículo directamente en un fichero dentro de un directorio especial llamado cola de noticias. Una vez que la publicación se entrega al servidor local de noticias, éste toma la responsabilidad de entregar el artículo a otros usuarios de noticias.

Las noticias son distribuidas a través de la red por varios transportes. El medio acostumbraba a ser UUCP, pero hoy el tráfico principal se lleva por sitios de Internet. El algoritmo de encaminamiento usado se llama flooding.[2] Cada sitio mantiene varios enlaces (news feeds) a otros servidores. Cualquier artículo generado o recibido por el sistema de noticias local es reenviado a ellos, a menos que ya haya pasado por ellos, en cuyo caso será descartado. Un sitio puede averiguar todos los sitios por los que ha pasado el artículo observando el campo Path: de la cabecera. Este campo contiene una lista de todos los sistemas que ha atravesado el artículo, separados por un signo de admiración[3].

Para distinguir los artículos y reconocer los duplicados, los artículos de Usenet llevan un identificador de mensajes, (especificado en el campo Message-Id: de la cabecera), el cuál es una combinación del nombre del servidor y un número de serie. <serial@site >. Para cada artículo procesado, los sistemas de noticias registran su identificador en un fichero llamado history contra el cual se cotejan los artículos recién llegados.

El flujo entre dos servidores cualquiera puede ser limitado por dos criterios. Uno, al artículo se le asigna una distribución (en el campo Distribution: de la cabecera), que puede ser usado para confinarlo dentro de un determinado grupo de servidores. Por otro lado, los grupos de noticias intercambiados pueden ser limitados por ambos sistemas, el remitente y el receptor. El conjunto de grupos de noticias y distribuciones que le es permitido transmitir a un servidor se mantienen usualmente en el fichero sys.

El número de artículos normalmente requiere que se hagan mejoras al esquema anterior. En redes UUCP los sistemas recogen los artículos en un periodo de tiempo y los combinan en un único fichero el cuál es comprimido y enviado al servidor remoto. Esto se llama procesado por lotes[4].

Una técnica alternativa es la del protocolo ihave/sendme que previene la transmisión de artículos duplicados en primer lugar, así se ahorra ancho de banda de la red. En lugar de poner todos los artículos en un bloque y enviarlo, sólo se envían al servidor remoto los IDs combinados en un gran mensage llamado “ihave”. El servidor remoto lee este mensaje, lo compara con su fichero "history" y retorna la lista de artículos que quiere en un mensaje “sendme”. Sólo los artículos requeridos son enviados.

Claro, el protocolo ihave/sendme sólo tiene sentido si involucra dos grandes servidores que reciben noticias de varias fuentes independientes entre sí, y que intercambian noticias con la frecuencia suficiente como para generar un flujo de noticias eficiente.

Los servidores de Internet generalmente confían en el software basado en TCP/IP que usa el Protocolo de Transferencia de Noticias (NNTP). NNTP se describe en el RFC-977; el cuál es responsable de transferir las noticias entre servidores nuevos y provee acceso a Usenet a usuarios individuales en nodos remotos.

Se conocen tres maneras diferentes de transferir las noticias con NNTP. Una es la versión en tiempo real de ihave/sendme, también conocida como push[5] las noticias. La segunda técnica es llamada pull[6] las noticias, en la cuál el cliente requiere una lista de artículos de un grupo de noticias o jerarquía determinado que han llegado al servidor después de una fecha especificada y elige aquellas que no encuentra en su fichero "history". La tercera técnica es la lectura interactiva de noticias y le permite a usted o a su lector de noticias recuperar artículos de un grupo especificado, también colocar artículos con la información de cabecera incompleta.

Cada servidor guarda las noticias en una jerarquía de directorios bajo /var/spool/news, cada artículo en un fichero separado y cada grupo en un directorio separado. El nombre del directorio se construye a partir del nombre del grupo, cuyos componentes son los componentes de la ruta. De este modo, los artículos de comp.os.linux.misc se guardan en /var/spool/news/comp/os/linux/misc. Los artículos de un grupo reciben números de acuerdo a su orden de llegada. Este número sirve como nombre del fichero. El rango de los números de los ficheros vigentes se conserva en un fichero llamado active el cual al mismo tiempo sirve como la lista de grupos del sistema.

Toda vez que el espacio en disco es un recurso finito, se tiene que empezar a desechar artículos después de un tiempo. [7] A esto se llama expiración. Usualmente los artículos de un determinado grupo y jerarquía expiran al cabo de un número fijo de días después de llegar. El autor puede invalidar esta fecha de expiración especificando una fecha de expiración en el campo Expires: de la cabecera del artículo.

Ahora usted tiene bastante información para escoger qué leer después. Los usuarios de UUCP pueden leer sobre C-News en Capítulo 21. Si usted está usando una red TCP/IP, lea acerca de NNTP en Capítulo 22. Si necesita transferir volúmenes moderados de noticias sobre TCP/IP, el servidor descrito en ese capítulo puede ser suficiente. Para instalar un servidor de noticias pesado que pueda manejar grandes volúmenes de material, vaya a leer acerca de Internet News en Capítulo 23.

Notas

[1]

Espera un minuto: 60 MB a 9,600 bps, son 60 millones mutiplicados por 1024, eso es ¡… mutter, mutter… Eh! eso es 34 horas!

[2]

N. del T.: inundación.

[3]

N. del T.: notación bang-path

[4]

batching

[5]

empujar

[6]

tirar

[7]

Algunas persontas dicen que Usenet es una conspiración entre vendedores de modems y discos duros.