NNTP

NNTP ("Network News Transfer Protocol") não é um pacote de software, mas sim um standard usado na Internet. Ele é baseado em uma conexão serial, geralmente sobre TCP, entre um cliente, em qualquer lugar da rede, e um servidor, que mantém os artigos armazenados em disco. Vários comandos permitem que clientes recuperem, enviem e submetam artigos.

Ultimamente, a Usenet tem crescido em enormes proporções. Sites que oferecem todos os grupos transferem algo como 60MB de dados por dia. As mensagens são distribuídas através de vários meios de transportes. O histórico, por assim dizer, é o UUCP. Hoje, porém, a maior parte do tráfego é gerado por sites da Internet. O algoritmo de roteamento usado é chamado "flooding". Cada site mantém um número de links ("news feeds") para outros sites. Cada artigo gerado ou recebido pelo sistema local de news é repassado para todos estes sites conectados, a menos que tal artigo já tenha passado por lá. Um site pode descobrir todos os outros sites pelos quais um artigo já passou através do campo Path:, localizado no cabeçalho.

O fluxo entre quaisquer dois sites pode ser limitado de duas maneiras. A primeira, através do campo Distribution:, usado para limitar o artigo a um certo conjunto de sites. Uma outra opção é que os próprios sites restrinjam os grupos que desejam trocar entre si.

Para otimizar a troca de mensagens entre os sites, é usado o protocolo ihave/sendme, também conhecido por "pushing". Ele permite que artigos duplicados não sejam transferidos para outros sites, portanto economizando banda passante. O processo funciona da seguinte maneira. Todos os ids (que são únicos) de todas as mensagens a serem transferidas são combinados em um único arquivo chamado "ihave", que é enviado ao site remoto. Este lê a mensagem, compara os ids com seu arquivo history (é nele que fica o registro de todos os ids que já passaram pelo site), e rotorna ao site original apenas os ids que lhe interessam, através de uma mensagem "sendme". O protocolo NNTP ainda suporta, a saber, os esquemas de "pulling" e "interactive newsreading".

Em cada site, os artigos são armazenados em uma hierarquia de diretórios abaixo de /var/spool/news, sendo cada artigo em um arquivo separado e cada grupo em um diretório individual. O nome do diretório é formado a partir do nome do grupo. Assim, por exemplo, comp.os.linux.misc geraria um diretório chamado /var/spool/news/comp/os/linux/misc. Já os artigos recebem, como nome, números de acordo com a ordem em que chegam em um site.

Sendo espaço em disco um recurso finito, é necessário que artigos sejam desprezados após algum tempo para dar lugar a outros. Geralmente, artigos de certos grupos ou hierarquias expiram após um número pré-determinado de dias após sua chegada ao site. A este mecanismo dá-se o nome de Expiração ("expiring").

A especificação completa do NNTP pode ser encontrada na RFC977.