Resumo

  • O cliente obtinha DATE antes de emitir NEWNEWS, mas fazia a busca a partir do horário persistido na sessão anterior.
  • O intervalo seguinte começava cedo de propósito. Um Message-ID podia voltar e ser reconciliado; um artigo pulado entre dois marcos não deixaria pista local.
  • A lista expressava a chegada naquele servidor, dentro dos grupos escolhidos e da capacidade oferecida, sem entregar corpos nem prometer um arquivo global completo.

A consulta que fecha cedo demais

Considere um cliente que inicia a busca ao meio-dia e termina oito segundos depois. Durante a montagem da resposta, um artigo chega ao servidor. Se a seleção já foi feita, ele não entra na lista atual. Se o cliente grava como novo marco o horário do fim, o artigo fica antes do início da próxima consulta. Duas operações bem-sucedidas cercam uma chegada que nenhuma delas registra.

Esse tipo de perda não produz objeto de erro. O cliente nunca conheceu o Message-ID, portanto não sabe o que repetir. O histórico local parece contínuo porque nada nele denuncia a ausência.

A solução de RFC 3977 separa dois horários. Primeiro, o cliente pede DATE e guarda provisoriamente a resposta. Depois, executa NEWNEWS com o marco salvo na sessão passada. Só após receber e aceitar a lista substitui o marco antigo pelo valor que já havia capturado antes da consulta. A próxima busca cobre novamente o período em que a resposta anterior estava em trânsito.

Um índice remoto, não uma entrega

Em 1986, RFC 977 definiu NEWNEWS para receber grupos, data e hora e devolver os Message-ID de artigos postados ou recebidos desde então. Curingas ampliavam o conjunto, uma exclamação inicial retirava ramos e a ausência de correspondências era uma resposta válida.

O formato era intencionalmente estreito: uma linha por identificador, não o corpo do artigo. O cliente descobria candidatos e então decidia o que buscar. Ver um Message-ID na resposta não provava download, validação ou retenção futura.

A versão original ainda aceitava um parâmetro de distribuição. RFC 2980 registrou interpretações incompatíveis desse filtro e observou que NEWNEWS era frequentemente desativado. O mecanismo tinha gramática comum, mas não presença uniforme.

Novo para o servidor que viu chegar

RFC 3977 organiza três chaves. O Message-ID identifica o artigo de modo global. O número dentro de um grupo vale naquele servidor. O horário de chegada registra quando o artigo alcançou o servidor consultado. É esse terceiro valor que define “novo” para NEWNEWS.

A data declarada pelo autor não governa a seleção. Um texto antigo, recebido tarde, é uma chegada nova. A mesma mensagem pode ter horários diferentes em relays diferentes. A lista é, portanto, uma observação localizada, não uma cronologia absoluta da Usenet.

O relógio da fronteira acompanha essa autoridade. RFC 2980 descreveu DATE como UTC na perspectiva do servidor. RFC 3977 exige que venha do mesmo relógio usado para as chegadas de artigos e a criação de grupos. Não é substituto para NTP. É a forma de perguntar usando a régua temporal de quem fará a comparação.

A duplicata como margem documentada

Enquanto a consulta corre, o marco antigo continua valendo. Se houver queda antes da persistência completa, o reinício repete o intervalo. Trabalho refeito é preferível a declarar concluído algo que só começou.

A própria norma admite recuar o horário em dois ou três minutos para acomodar pequenos erros. Em seu exemplo, o mesmo Message-ID aparece em sessões consecutivas. A repetição mostra a margem em ação e pode ser eliminada por identidade.

Nem a ordem das linhas serve como cursor. RFC 3977 diz que ela não tem significado específico, pode mudar na mesma sessão e que um Message-ID pode aparecer mais de uma vez na mesma resposta. Repeti-lo vale como uma ocorrência. A estrutura lógica é um conjunto reconciliável, não uma fila temporal.

As bordas que o horário não conserta

Uma janela sobreposta não amplia um padrão de grupos estreito, não habilita comando ausente e não ressuscita o que o servidor já deixou de reportar. Uma resposta multilinha interrompida não autoriza o avanço. Trocar de servidor muda o relógio e o histórico de chegada, ainda que o campo do cursor mantenha o mesmo formato.

O registro de parâmetros NNTP da IANA lista NEWNEWS como a capacidade que indica disponibilidade do comando. Isso confirma nome e referência interoperáveis, não a política ou completude de uma instalação.

O mérito do desenho é escolher uma falha auditável. A duplicata carrega Message-ID; pode ser contada, comparada e reduzida a uma ocorrência. O item atravessado por um cursor adiantado não oferece sequer o nome daquilo que se perdeu.

Todo marco contém uma declaração

Um checkpoint não diz apenas “estou aqui”. Diz que o passado anterior a ele foi observado o bastante para não ser solicitado de novo. Guardar a hora do fim de uma operação pode certificar segundos que ficaram fora da própria seleção.

O NNTP manteve o marco anterior no comando até a resposta estar segura. O próximo horário era colhido antes e esperava sua vez. Assim, o protocolo não aboliu a incerteza; converteu parte dela em repetição identificável, em vez de deixá-la parecer um período vazio.

Fontes