Resumo
- O RFC 3403 guardou regras DDDS em registros NAPTR, mas a posição física na resposta não definia execução. O cliente ordenava por
ORDERe aplicavaPREFERENCEapenas dentro do mesmo nível. - Depois de uma correspondência, não podia atravessar outro
ORDERpor reconhecer um serviço posterior. Additional, DNSSEC e êxito do destino eram provas distintas.
Uma resposta DNS aparece como linhas e convida o leitor a tratar a primeira como prioridade. O RFC 3403 recusou essa inferência. NAPTR devolvia um conjunto de candidatos, e a sequência normativa precisava ser encontrada nos próprios registros.
Publicado em outubro de 2002 na trilha de padrões, o documento definiu DNS como banco de regras DDDS. A chave era um nome de domínio válido; o cliente consultava NAPTR, tipo 35, e recebia regras. O RFC substituiu 2915 e 2168 como especificação formal do registro.
ORDER reconstituía a delegação, do menor valor para o maior. Registros com o mesmo ORDER eram a mesma regra sob o ponto de vista de autoridade. Encontrada uma correspondência, o cliente não podia considerar outro ORDER, salvo a exceção explícita de seleção complexa no algoritmo DDDS.
Assim, servidor, cache ou biblioteca podiam reorganizar o RRset sem mudar seu sentido. Um cliente que escolhesse o primeiro Services conhecido trocaria a estrutura publicada por um acidente de apresentação.
PREFERENCE classificava alternativas com o mesmo ORDER. Correspondia a Priority e permitia tentar uma opção menos preferida por razões como suporte fraco ao protocolo principal. Não autorizava cruzar a fronteira de autoridade.
Também não era balanceamento. O campo comunicava qualidade entre regras equivalentes. Distribuição de tráfego pertencia a SRV ou múltiplos registros A. Usar preferência como peso inventaria uma semântica ausente.
Flags e Services eram definidos pela aplicação, inclusive quais indicadores eram terminais. Reconhecer uma string não provava que o cliente entendia o contrato da aplicação.
REGEXP e REPLACEMENT eram formas mutuamente exclusivas. A primeira atuava sobre a string original; a segunda carregava um domínio totalmente qualificado para substituição simples, sem compressão. Preencher ambas tornava o registro errado.
O arquivo de zona acrescentava outra transformação. Barras invertidas precisavam de escape e frequentemente eram digitadas duas vezes para chegar uma vez ao cliente. Por isso o recibo deve comparar expressão administrada e expressão recebida.
Os textos usavam UTF-8. Fora de ASCII, a correspondência precisava operar por pontos de código, não bytes. Regras dependentes de locale POSIX eram proibidas, pois mudariam entre clientes.
Várias aplicações podiam colidir no mesmo nome. A separação podia vir de zonas próprias, expressões ancoradas em entradas específicas ou Flags e Services da aplicação. Coabitação não significava um contrato único.
Additional era otimização. Servidores podiam anexar A ou SRV relevantes com a mesma autenticidade, mas aplicações tinham de funcionar quando essa seção nunca fosse preenchida. Ausência pedia nova consulta, não rejeição do NAPTR.
TTL preservava coerência temporal. Se uma regra usada expirasse durante fallback, todo o algoritmo recomeçava. Unir começo antigo e final novo fabricaria uma sequência talvez inexistente em qualquer instante.
Se a consulta após uma reescrita falhasse, o RFC recomendava relatar falha em vez de voltar para outros caminhos. Backtracking oportunista transformaria delegação ordenada em busca e esconderia o ponto da ruptura.
DNSSEC podia autenticar os dados NAPTR, mas não provava expressão segura, ordenação correta, Services apropriado ou sucesso final. O documento ainda advertia contra entregar regex sem validação a ambientes capazes de executar código.
O registro DNS Parameters da IANA mantém NAPTR no tipo 35: coordenação, não certificado de implementação. A única errata atual, 2868, está Held for Document Update e remove apenas this this da descrição de Services.
O recibo operacional deve guardar chave, RRset, DNSSEC, TTL, sequência recebida, grupos ORDER, PREFERENCE, Flags, Services, validade da substituição, UTF-8, comparação zona/rede, rejeições, regra escolhida, Additional usado, próxima consulta e resultado do consumidor.
A especificação inicial mínima de Lu Heng explica o desenho: padronizar a representação compartilhada e deixar o significado para cada aplicação. A primazia do código em execução testa o contrato: embaralhar RRset, remover Additional, mudar locale e expirar uma regra. A decisão correta segue autoridade, não aparência.
No RFC 3403, o primeiro NAPTR visto era apenas o primeiro exibido. A primeira regra era aquela que ORDER colocava primeiro.
Fontes
- RFC 3403
- Registro do RFC Editor
- Registro do IETF Datatracker
- Histórico no IETF Datatracker
- Referências no IETF Datatracker
- Erratas do RFC 3403
- RFC 3401
- RFC 3402
- RFC 3404
- RFC 2915
- RFC 2168
- RFC 1035
- RFC 2782
- RFC 4033
- RFC 4034
- IANA DNS Parameters
- Lu Heng: primazia do código em execução
- Lu Heng: especificação inicial mínima
Briefing para membros
Contexto aprofundado do perfil
Faça login com o nível de assinatura correto para desbloquear o briefing completo e as notas das fontes.
Apenas para Strategic Circle
Strategic Circle
Aberto a todos os leitores. Desbloqueie Briefings de perfil após se inscrever e fazer login.
Junte-se ao Strategic CircleSomente para Leadership Alliance
Leadership Alliance
Para proprietários e gestores qualificados de ativos de PI; faça login para desbloquear os briefings da Leadership Alliance.
Junte-se ao Leadership Alliance
