
Я искал ответ на этот вопрос (тот, что в заголовке), и лучшее, что я нашел, было:
В конструкции протокола DNS размер транспортного блока UDP (размер полезной нагрузки) ограничен 512 байтами для оптимизации производительности при одновременной генерации минимального сетевого трафика.
Мой вопрос: как именно это повышает производительность и есть ли другие причины такого ограничения при использовании UDP?
решение1
Полезная нагрузка в 512 байт гарантирует, что пакеты DNS могут быть повторно собраны, если они фрагментированы в пути. Кроме того, в целом меньше вероятность случайного отбрасывания пакетов меньшего размера.
Theстандарт IPv4указывает, что каждый хост должен иметь возможность повторно собирать пакеты размером 576 байт или меньше. С заголовком IPv4 (20 байт, хотя он может быть и 60 байт с опциями) и 8-байтовым заголовком UDP пакет DNS с полезной нагрузкой в 512 байт будет меньше 576 байт.
Как говорит @RyanRies: DNS может использовать TCP для больших полезных нагрузок и для зонных передач и DNSSEC. Когда в игру вступает TCP, задержка намного больше, потому что, в отличие от UDP, между клиентом и сервером происходит рукопожатие, прежде чем какие-либо данные начнут передаваться.
решение2
Современный DNS больше не ограничивается полезной нагрузкой в 512 байт для UDP.
СEDNS0при использовании можно указать больший размер полезной нагрузки, что также часто встречается в случае клиентов, поддерживающих DNSSEC.
Поддержка больших объемов полезной нагрузки по UDP оказалась палкой о двух концах, однако, это отчасти причина, по которой использование серверов имен дляатаки усилениястал более популярным, поскольку можно добиться лучшего усиления, если злоумышленник использует запрос, который получает большой ответ.
Видетьrfc2671для получения подробной информации о EDNS0
решение3
DNS-операции, например, запросы и операции по обслуживанию зоны, по умолчанию используют порт 53. Из соображений производительности запросы используют протокол UDP с ограничением размера блока в 512 байт. TCP может опционально согласовываться на основе транзакции за транзакцией для операций запроса, но из-за накладных расходов на производительность, возникающих при использовании TCP, это по сути теоретическая возможность. Исторически превышения ограничения размера ответа в 512 байт обычно избегали любой ценой, и действительно, ограничение в 13 корневых серверов IPv4 было максимальным, которое можно было вернуть в одной 512-байтовой транзакции UDP.
Рон Эйчисон - Pro DNS и BIND 10 - 2011
решение4
Это вопрос QOS.
Поскольку протокол UDP не сохраняет состояние, обработка ошибок пакетов невозможна.
Таким образом, при ограничении максимального размера пакетов повышается вероятность того, что они достигнут места назначения, что снижает влияние отсутствия обработки ошибок.