Je cherchais une réponse à cette question (celle du titre) et la meilleure chose que j'ai trouvée était:
Dans la conception du protocole DNS, la taille du bloc de transport UDP (taille de la charge utile) a été limitée à 512 octets pour optimiser les performances tout en générant un trafic réseau minimal.
ma question est: comment cela améliore-t-il exactement les performances et existe-t-il d'autres raisons pour cette limitation lors de l'utilisation d'UDP?
La charge utile de 512 octets garantit que les paquets DNS peuvent être réassemblés s'ils sont fragmentés en transit. De plus, de manière générale, il y a moins de chances que des paquets plus petits soient abandonnés de manière aléatoire.
Le norme IPv4 spécifie que chaque hôte doit être capable de réassembler des paquets de 576 octets ou moins. Avec un en-tête IPv4 (20 octets, bien qu'il puisse atteindre 60 octets avec options) et un en-tête UDP de 8 octets, un paquet DNS avec une charge utile de 512 octets sera inférieur à 576 octets.
Comme le dit @RyanRies: DNS peut utiliser TCP pour les charges utiles plus importantes et pour les transferts de zone et DNSSEC. Il y a beaucoup plus de latence lorsque TCP entre en jeu car, contrairement à UDP, il y a une poignée de main entre le client et le serveur avant que les données commencent à circuler.
Le DNS moderne n'est plus limité à 512 octets de charge utile pour UDP.
Avec EDNS en cours d'utilisation, une taille de charge utile plus grande peut être spécifiée, ce qui est également généralement le cas pour les clients prenant en charge DNSSEC.
La prise en charge de charges utiles plus importantes sur UDP a été une arme à double tranchant, cependant, c'est en partie la raison pour laquelle l'utilisation de serveurs de noms pour attaques d'amplification est devenue plus populaire car vous pouvez obtenir une meilleure amplification si l'attaquant utilise une requête qui obtient une réponse importante.
Voir rfc2671 pour les détails de EDNS0
Les opérations DNS par exemple, les requêtes et les opérations de maintenance de zone par défaut utilisent le port 53. Pour des raisons de performances, les requêtes utilisent le protocole UDP avec une limite de taille de bloc de 512 octets. TCP peut être éventuellement négocié transaction par transaction pour les opérations de requête, mais en raison de la surcharge de performances encourue avec TCP, il s'agit essentiellement d'une capacité théorique. Historiquement, dépassant les 512 octets la limite de taille de réponse était généralement évitée à tout prix, et en effet la limite de 13 serveurs racine IPv4 était le maximum qui pouvait être retourné dans une seule transaction UDP de 512 octets.
Ron Aitchison - Pro DNS et BIND 10-2011