Prima che qualcuno chieda: ho visto Quando le query DNS utilizzano TCP anziché UDP? e non risponde alla mia domanda.
Tutto quello che continuo a sentire è " se la risposta è troppo lunga, DNS utilizzerà TCP ". Questo non spiega come succede però.
Quindi, ecco la situazione: il client DNS richiede la risoluzione di un record utilizzando UDP. Il record è troppo lungo per UDP:
- il server risponde con un codice operativo specifico, per fare in modo che il client passi a TCP
- il server non risponde affatto e il client riprova su TCP
- il server apre la connessione TCP al client (stupido, se conti NAT, ma chi lo sa?)
- client in qualche modo (?) 'sa' che una determinata query dovrebbe essere eseguita su TCP in modo da non disturbare UDP in primo luogo
- I pixel DNS trasformano magicamente UDP in TCP quando necessario
Ho cercato su Internet la risposta, ma c'è molto rumore (vedi sopra), e non riesco a scrivere una query Google appropriata per questo (né posso trovare le informazioni negli RFC, per quella materia) .
1.
e 4.
sono entrambi approssimativamente corretti (quale dei due dipende dalle circostanze).