Pour faire tres rapide : tcp est un proto "lourd" par rapport à "UDP" : il dispose entre autres, de fonctions "complexes" afin d'assurer que tout ce qui a été envoyé a bien été reçu. (c'est le fameux mode connecté en opposition à UDP qui est non connecté)
Pour une requête DNS , on a pas besoin de s'embêter avec des choses compliquées (pour schématiser) : la requête est envoyée au serveur qui, s'il la reçoit, va nous répondre. S'il ne la reçoit pas ? ben rien de bien grave : on a pas de réponse, on repose la question ! La fait que la première requête ce soit perdue n'est pas bien grave en somme
UDP, simple et léger (peu d'entête ajouté au paquet d'origine) se prête donc parfaitement à notre besoin.