Antes que alguém pergunte: eu já vi Quando as consultas DNS usam TCP em vez de UDP? e isso não responde à minha pergunta.
Tudo o que continuo ouvindo é " se a resposta for muito longa, o DNS usará o TCP ". Isso não explica como isso acontece.
Então, aqui está a situação: o cliente DNS solicita a resolução de um registro usando UDP. O registro é muito longo para o UDP:
- servidor responde com código de operação específico, para que o cliente mude para TCP
- servidor não responde e o cliente tenta novamente por TCP
- servidor abre a conexão TCP com o cliente (estúpido, se você contar NAT, mas quem sabe?)
- de alguma forma, o cliente (?) 'sabe' que a consulta especificada deve ser executada sobre TCP para que não se incomode com o UDP em primeiro lugar
- Os pixies do DNS transformam UDP em TCP quando necessário
Eu tenho procurado por toda a Internet a resposta, mas há muito barulho (veja acima), e não consigo escrever uma consulta adequada do Google para isso (nem consigo encontrar as informações nos RFCs). .
1.
e 4.
ambos estão aproximadamente corretos (qual dos dois depende das circunstâncias).