Original Article: How the Usenet News Protocols Work
Author: people.dsv.su.se

  

Como funcionam os protocolos de notícias Usenet

O Usenet News é um sistema distribuído de conferência por computador. É interessante por causa desta idade, as primeiras versões da Usenet News já estavam em operação em torno de 1980. Para o meu conhecimento, nenhum sistema de conferência distribuída existia antes da Usenet News, mesmo que existissem alguns sistemas não distribuídos antes da Usenet News. como o Forum-Planet, KOM e em vez disso. Por muitos anos, a Usenet News foi o maior serviço de conferência mundial, mesmo que hoje seja cada vez mais substituído por sistemas de internet social mais modernos, como o Facebook. Mas a UsenetNews não está morta, ainda está em operação quando esta está escrita (no ano de 2016).
    As conferências na Usenet News são chamadas de grupos de notícias, e as mensagens são chamadas de artigos. O Usenet News também é usado para a distribuição de objetos binários, como o código do objeto, que é então codificado em um formato de texto. O Usenet News é um dos sistemas de conferência distribuídos mais antigos na internet, já foi apoiado no ano de 1980. Naquela época, grande parte da comunicação não foi feita na internet, mas usando vários outros protocolos para comunicação entre servidores.
   Temas de grupos de notícias sobre uso de computadores, mas também sobre questões culturais e de vida.
   O princípio básico da Usenet News é que os servidores locais lidam com a maioria das funcionalidades. A Usenet News padroniza duas variantes dos protocolos NNTP: uma para comunicação entre servidores adjacentes, uma para comunicação entre um cliente e um servidor. Cada servidor pode baixar tanto quanto quiser do que está disponível em qualquer um dos servidores adjacentes. O controle de loop é tratado tanto por uma lista de rastreamento como por uma lista das IDs de mensagens de mensagens recebidas armazenadas por cada servidor, para que o servidor possa rejeitar a mesma mensagem novamente. Este procedimento para distribuição de notícias pode ser comparado ao vazamento de água em uma superfície horizontal plana; a água flui para fora em todas as direções (veja a figura abaixo).

server-server-server

"Vertendo água" princípio da distribuição de notícias Usenet


A figura abaixo mostra como novos artigos são encaminhados de servidor para servidor no Usenet News. Um servidor diz aos seus servidores adjacentes quais itens ele oferece, o servidor solicita os que ainda não obteve via outra rota. Às vezes, há apenas uma maneira de distribuir as notícias entre grupos de servidores, por exemplo, entre a Europa e a América, quando a Usenet News era jovem e a comunicação em todo o Atlântico era muito cara em comparação com o que é hoje..


Esta figura mostra como novos artigos foram originalmente encaminhados do servidor para o servidor no Usenet News.


Informações sobre um usuário, como o quanto esse usuário viu, são armazenadas no cliente. O servidor não precisa saber quais usuários estão usando. Existem muitos softwares de interface de usuário diferentes para a Usenet News, alguns deles, é claro, não fornecem todas as funções disponíveis.
   Uma desvantagem com o procedimento descrito nesta figura é que causa tempos de espera entre um comando IHAVE e um SENDME. Para evitar isso, um procedimento alterativo muito usado hoje é usar dois comandos, CHECK e TAKETHIS. CHECK solicita a um servidor se quer certos artigos, e TAKETHIS envia artigos. O servidor que fornece artigos pode usar o TAKETHIS para enviar artigos, o que acredita que o servidor receptor deseja, mesmo que o servidor receptor não tenha solicitado isso. Isso permite um fluxo de comandos TAKETHIS enviando provavelmente novos artigos. A transmissão é mais rápida porque o servidor de envio pode enviar artigos que o servidor de recebimento já possui. Isso pode parecer ineficaz, mas a vantagem com transmissão de novos artigos é mais valiosa se mais de 95% dos artigos forem realmente novos.
   Além disso, a Usenet News fornece uma funcionalidade interessante que restringe a comunicação apenas aos membros de um grupo de notícias que trabalham na mesma organização ou vivem na mesma área ou país. Esta funcionalidade, no entanto, não é muito utilizada, e sua existência é controversa, pois isso significa que diferentes usuários terão visões diferentes do mesmo grupo de notícias.
   Usenet News tem um comando cancelar , que pode apagar as mensagens já enviadas. Somente o autor da mensagem cancelada e o administrador do newsserver local podem cancelar uma mensagem. Uma vez que, no entanto, é muito fácil falsificar sua identidade, esse comando representa um risco de segurança óbvio, e o comando é conhecido por ter sido usado para cancelar mensagens por razões políticas. O comando também é usado (não é bastante apropriado) por cancelbots, robôs (= programas automáticos) que cancelam spams óbvios, identificando mensagens com o mesmo conteúdo enviado para muitos grupos de notícias diferentes. Usenet News também geralmente possui um campo de cabeçalho Supersedes, que se refere de uma nova mensagem a uma mensagem antiga. Este cabeçalho normalmente cancela a mensagem antiga.
   Obsoletes no X.400 tem algumas semelhanças com as Substituições no Usenet News, e também pode ser usado para obter um efeito semelhante ao comando cancelar, obsoleto uma mensagem com uma mensagem vazia. No entanto, cancelar no Usenet News realmente exclui mensagens, enquanto obsoletes são informações para o destinatário UA, que não precisa causar exclusão. Muitos UAs armazenam a versão nova e antiga, de modo que o destinatário pode optar por ver a versão obsoleta se assim o desejar.
   A restrição mais importante da Usenet News é que os grupos fechados não são bem suportados.
Para grupos fechados, são utilizados grupos moderados. Para grupos moderados, todas as contribuições são enviadas via e-mail para o moderador, quem as aceita e as envia para distribuição. O moderador adiciona um cabeçalho aprovado e o softwe da Usenet News não aceitará nenhum artigo em newsgroups moderados, que não possuem o cabeçalho aprovado.
   Existem muitas maneiras de falsificar informações na Usenet News, por exemplo, adicionando um cabeçalho aprovado não fornecido pelo moderador. Mas também há robôs que continuam abrandando para detectar informações falsas e removê-las. Por causa disto, fingir não é um grande problema na Usenet News.
   O protocolo Usenet News é chamado de protocolo de transferência de notícias de rede (NNTP) e é especificado em RFC3977. O padrão para o formato dos artigos da Usenet News é especificado em RFC5536. A arquitetura da Usenet News é especificada em RFC5537.

A tabela abaixo lista os comandos NNTP mais comuns:

article [<Message-ID> | <Number>] Retorne o texto do artigo designado. Se nenhum parâmetro for dado, o próximo artigo será retornado. O ponteiro do artigo atual é colocado no artigo buscado.
body [<Message-ID>| <Number>] Como artigo, mas apenas retorna o body
group <newsgroup> Vá para o grupo de notícias designado
head [<Message-ID> | <Number>] As article, but only returns head
help Lista comandos disponíveis
ihave <messageID> Informa o servidor de um artigo disponível. O servidor pode então pedir o artigo ou recusá-lo.
last Define o ponteiro do artigo atual para a última mensagem disponível, devolva o número e o ID da mensagem.
list [active | newsgroups | distributions | schema] Retorna uma lista de newsgroups válidos no formato: primeiro grupo
newgroups <yymmdd hhmmss> ["GMT"] [<distributions>] Lista de novos grupos criados desde um determinado horário. "distributions" pode ser por exemplo, alt para obter apenas grupos de notícias no alt category.
newnews <newsgroups> <yymmdd hhmmss> ["GMT"] [<distributions>] Lista de ID de mensagem de artigos postados em um ou mais grupos de notícias após um horário específico. newsgroups pode ser. por exemplo. net. *. unix para combinar mais de um newsgroups. distributions verifica artigos que também têm esse outro grupo de notícias como destinatário.
next O ponteiro do artigo atual está avançado. Retorna o número e o ID da mensagem do artigo atual.
post Enviar um novo artigo de um cliente.
check Solicita a um servidor se quer certos artigos.
takethis Envia novos artigos, muitos podem ser enviados em sucessão e alguns dos artigos podem ser artigos que o servidor de recebimento já possui.


Há um problema com o newsgroups cabeçalho em uma mensagem enviada por e-mail. Diferentes sistemas usam este cabeçalho de duas formas diferentes:

  1. Para indicar que esta mensagem também foi enviada via Usenet News para os grupos de notícias indicados.
  2. Para indicar que esta é uma resposta pessoal, enviada apenas por e-mail, para uma mensagem postada nos grupos de notícias indicados.

Por causa desse problema, é melhor usar o Posted-To cabeçalho no e-mail para indicar que uma mensagem também foi enviada para certos grupos de notícias e os destinatários de e-mail devem ignorar qualquer newsgroups encabeçando uma mensagem de e-mail.

Tradicionalmente, a Usenet News não usou o padrão MIME para anexos binários, como imagens. Em vez de BASE64, UUENCODING ou yEnc é freqüentemente usado no Usenet News para incluir anexos binários, mesmo que o MIME hoje em dia também seja usado muito. Isso não existe no início da Usenet News, é claro, uma vez que a Usenet News é muito mais antiga do que o MIME. Manipulando anexos binários, o modo MIME é comum nos grupos de discussão principalmente discográficos, que por vezes contém algum código binário, como uma imagem, enquanto o yENC é usado principalmente em grupos de notícias especiais destinados principalmente à distribuição de código binário (geralmente código de objeto de programas). Devido às restrições de tamanho de mensagem, os anexos grandes geralmente são divididos em várias mensagens na Usenet News. Isso também ocorre no e-mail, mas é mais frequente no Usenet News, uma vez que alguns servidores da Usenet News tentam economizar espaço ao não aceitar artigos acima de um limite de tamanho certo. Tanto o MIME como o Usenet News têm métodos para indicar como um cliente pode combinar peças automaticamente em uma mensagem completa ou anexos.