¿Por qué DNS a través de UDP tiene un límite de 512 bytes?

¿Por qué DNS a través de UDP tiene un límite de 512 bytes?

He estado buscando una respuesta a esa pregunta (la del título) y la mejor que encontré fue:

En el diseño del protocolo DNS, el tamaño del bloque de transporte UDP (tamaño de carga útil) se ha limitado a 512 bytes para optimizar el rendimiento y al mismo tiempo generar un tráfico de red mínimo.

Mi pregunta es: ¿cómo mejora esto exactamente el rendimiento? ¿Existen otras razones para esta limitación al utilizar UDP?

Respuesta1

La carga útil de 512 bytes garantiza que los paquetes DNS se puedan volver a ensamblar si se fragmentan en tránsito. Además, en términos generales, hay menos posibilidades de que se eliminen aleatoriamente paquetes más pequeños.

Elestándar IPv4especifica que cada host debe poder reensamblar paquetes de 576 bytes o menos. Con un encabezado IPv4 (20 bytes, aunque puede llegar a 60 bytes con opciones) y un encabezado UDP de 8 bytes, un paquete DNS con una carga útil de 512 bytes será más pequeño que 576 bytes.

Como dice @RyanRies: DNS puede usar TCP para cargas útiles más grandes y para transferencias de zona y DNSSEC. Hay mucha más latencia cuando TCP entra en juego porque, a diferencia de UDP, hay un protocolo de enlace entre el cliente y el servidor antes de que los datos comiencen a fluir.

Respuesta2

El DNS moderno ya no está limitado a una carga útil de 512 bytes para UDP.

ConEDNS0en uso, se puede especificar un tamaño de carga útil mayor, lo que también suele ser el caso de los clientes compatibles con DNSSEC.

El soporte para cargas útiles más grandes a través de UDP ha sido un arma de doble filo; sin embargo, es en parte la razón por la que se utilizan servidores de nombres paraataques de amplificaciónse ha vuelto más popular porque se puede lograr una mejor amplificación si el atacante utiliza una consulta que obtiene una gran respuesta.

Verrfc2671para conocer los detalles esenciales de EDNS0

Respuesta3

Las operaciones de DNS, por ejemplo, las consultas y las operaciones de mantenimiento de zonas, utilizan de forma predeterminada el puerto 53. Por motivos de rendimiento, las consultas utilizan el protocolo UDP con un límite de tamaño de bloque de 512 bytes. TCP se puede negociar opcionalmente transacción por transacción para operaciones de consulta, pero debido a la sobrecarga de rendimiento incurrida con TCP, esto es esencialmente una capacidad teórica. Históricamente, se solía evitar a toda costa exceder el límite de tamaño de respuesta de 512 bytes y, de hecho, el límite de 13 servidores raíz IPv4 era el máximo que se podía devolver en una sola transacción UDP de 512 bytes.

Ron Aitchison - Pro DNS y BIND 10 - 2011

Respuesta4

Es una cuestión de QOS.

Debido a que UDP no tiene estado, no es posible el manejo de errores de paquetes.

Por lo tanto, al mantener los paquetes en un tamaño máximo, hay una mayor probabilidad de que lleguen a su destino, reduciendo el impacto de la ausencia de manejo de errores.

información relacionada