Warum ist DNS über UDP auf 512 Byte begrenzt?

Warum ist DNS über UDP auf 512 Byte begrenzt?

Ich habe nach einer Antwort auf diese Frage (die im Titel) gesucht und das Beste, was ich gefunden habe, war:

Beim Entwurf des DNS-Protokolls wurde die Blockgröße (Nutzlastgröße) für den UDP-Transport auf 512 Byte begrenzt, um die Leistung zu optimieren und gleichzeitig den Netzwerkverkehr auf ein Minimum zu reduzieren.

Meine Frage ist: Wie genau verbessert dies die Leistung und gibt es noch andere Gründe für diese Einschränkung bei der Verwendung von UDP?

Antwort1

Die 512 Byte große Nutzlast garantiert, dass DNS-Pakete wieder zusammengesetzt werden können, wenn sie während der Übertragung fragmentiert werden. Außerdem besteht im Allgemeinen eine geringere Wahrscheinlichkeit, dass kleinere Pakete zufällig verloren gehen.

DerIPv4-Standardgibt an, dass jeder Host in der Lage sein muss, Pakete von 576 Bytes oder weniger wieder zusammenzusetzen. Mit einem IPv4-Header (20 Bytes, mit Optionen können es aber bis zu 60 Bytes sein) und einem 8-Byte-UDP-Header ist ein DNS-Paket mit einer Nutzlast von 512 Bytes kleiner als 576 Bytes.

Wie @RyanRies sagt: DNS kann TCP für größere Nutzlasten und für Zonenübertragungen und DNSSEC verwenden. Wenn TCP ins Spiel kommt, gibt es viel mehr Latenz, da im Gegensatz zu UDP ein Handshake zwischen Client und Server stattfindet, bevor Daten fließen.

Antwort2

Modernes DNS ist für UDP nicht mehr auf eine Nutzlast von 512 Byte beschränkt.

MitEDNS0Bei Verwendung kann eine größere Nutzlastgröße angegeben werden, was auch häufig bei DNSSEC-fähigen Clients der Fall ist.

Die Unterstützung größerer Nutzlasten über UDP ist ein zweischneidiges Schwert. Sie ist jedoch teilweise der Grund, warum die Verwendung von Nameservern fürVerstärkungsangriffeist populärer geworden, da man eine bessere Verstärkung erreichen kann, wenn der Angreifer eine Abfrage verwendet, die eine große Antwort erhält.

Sehenrfc2671für die wesentlichen Details von EDNS0

Antwort3

DNS-Operationen, z. B. Abfragen und Zonenwartungsoperationen, verwenden standardmäßig Port 53. Aus Leistungsgründen verwenden Abfragen das UDP-Protokoll mit einer Blockgrößenbeschränkung von 512 Byte. TCP kann optional für Abfrageoperationen auf Transaktionsbasis ausgehandelt werden, aber aufgrund des mit TCP verbundenen Leistungsmehraufwands ist dies im Wesentlichen eine theoretische Möglichkeit. In der Vergangenheit wurde das Überschreiten der Antwortgrößenbeschränkung von 512 Byte normalerweise um jeden Preis vermieden, und tatsächlich war die Beschränkung auf 13 IPv4-Root-Server das Maximum, das in einer einzelnen 512-Byte-UDP-Transaktion zurückgegeben werden konnte.

Ron Aitchison – Pro DNS und BIND 10 – 2011

Antwort4

Es ist eine QOS-Sache.

Da UDP zustandslos ist, ist eine Fehlerbehandlung von Paketen nicht möglich.

Wenn die Paketgröße also auf einer Maximalgröße gehalten wird, ist die Wahrscheinlichkeit größer, dass sie ihr Ziel erreichen, und die Auswirkungen einer fehlenden Fehlerbehandlung werden verringert.

verwandte Informationen