क्यों UDP के माध्यम से DNS में 512 बाइट्स की सीमा है?


15

मैं उस प्रश्न (शीर्षक में एक) के उत्तर की तलाश में हूं और मुझे जो सबसे अच्छी चीज मिली है वह थी:

DNS प्रोटोकॉल डिजाइन में, यूडीपी परिवहन ब्लॉक आकार (पेलोड आकार) न्यूनतम नेटवर्क ट्रैफ़िक उत्पन्न करते हुए प्रदर्शन का अनुकूलन करने के लिए 512-बाइट्स तक सीमित किया गया है।

मेरा सवाल है: यह वास्तव में प्रदर्शन को कैसे बढ़ाता है और यूडीपी का उपयोग करते समय इस सीमा के लिए कोई अन्य कारण हैं?


5
प्रश्न वास्तव में एक झूठे आधार पर आधारित है (बहुत कम से कम एक पुराना है)। 512 बाइट पेलोड सीमा अधिक नहीं है, नीचे मेरा उत्तर देखें।
हाईक लिंडक्विस्ट

जवाबों:


19

512 बाइट पेलोड गारंटी देता है कि यदि पारगमन में खंडित हो तो DNS पैकेट पुनः प्राप्त किए जा सकते हैं। इसके अलावा, आम तौर पर बोलते हुए छोटे पैकेटों के बेतरतीब ढंग से गिराए जाने की संभावना कम होती है।

आईपीवी 4 मानक निर्दिष्ट करता है कि हर मेजबान 576 बाइट्स या उससे कम की पुनः पैकेट में सक्षम होना चाहिए। IPv4 हेडर (20 बाइट्स) के साथ, हालांकि यह 60 बाइट्स w / विकल्प के रूप में उच्च हो सकता है और 8 बाइट UDP हेडर, 512 बाइट पेलोड के साथ एक DNS पैकेट 576 बाइट्स से छोटा होगा।

जैसा @RyanRies कहता है: DNS बड़े पेलोड के लिए और ज़ोन ट्रांसफर और DNSSEC के लिए टीसीपी का उपयोग कर सकते हैं। जब टीसीपी खेलने में आता है तो बहुत अधिक विलंबता होती है, क्योंकि यूडीपी के विपरीत, किसी भी डेटा के प्रवाह शुरू होने से पहले क्लाइंट और सर्वर के बीच एक हैंडशेक होता है।


7
एक संबंधित नोट: कारण हमेशा 13 रूट DNS रिज़ॉल्वर के नाम (a.root-servers.net m.root-servers.net के माध्यम से) होगा क्योंकि वह अधिकतम संख्या है जो DNS क्वेरी के लिए प्रतिक्रिया के लिए फिट हो सकती है रूट 512 बाइट सीमा से अधिक के बिना। इस प्रकार, यहां तक ​​कि जब हम रूट DNS बुनियादी ढांचे में अधिक भौतिक सर्वर जोड़ते हैं, तो तार्किक रूप से हमेशा तेरह रूट सर्वर रहेंगे।
फोएबस

2
DNREC EDNS0 के लिए @RyanRies एक बड़े अनुमत पेलोड के साथ वास्तव में ऑपरेशन का सामान्य तरीका है, टीसीपी नहीं।
हेकैन लिंडक्विस्ट

1
सबसे छोटी अनुमत MTU 576 बाइट्स नहीं है, यह IPv4 में 68 बाइट्स और IPv6 में 1280 बाइट्स है।
कास्परड

1
@phoebus आप मुझे दिखा सकते हैं कि 13 सर्वर 512 बाइट से अधिक नहीं है जबकि 14 सर्वर करते हैं? इसके पीछे क्या गणना है?
टिटि वांग्सा बिन डामोर

1
512 + 60 + 8 = 580 बाइट्स, 576 नहीं, नहीं?
कार्लो वुड

12

आधुनिक डीएनएस वास्तव में अब यूडीपी के लिए 512 बाइट पेलोड तक सीमित नहीं है।

EDNS0 के साथ उपयोग में बड़ा पेलोड आकार निर्दिष्ट किया जा सकता है, जो आमतौर पर DNSSEC- जागरूक ग्राहकों के लिए भी होता है।

यूडीपी पर बड़े पेलोड के लिए समर्थन एक दोधारी तलवार है, हालांकि, यही कारण है कि प्रवर्धन हमलों के लिए नेमसर्वर का उपयोग करना अधिक लोकप्रिय हो गया है क्योंकि आप बेहतर प्रवर्धन प्राप्त कर सकते हैं यदि हमलावर एक क्वेरी का उपयोग करता है जिसे एक बड़ी प्रतिक्रिया मिलती है ।

EDNS0 के नॉटी - ग्रिट्टी विवरण के लिए rfc2671 देखें


2
यह सच है, लेकिन अभी भी वहाँ रूटर्स और फ़ायरवॉल हैं जो 512 बाइट्स से अधिक यूडीपी डीएनएस पैकेट को गिराते हैं।
रयान रीज़

2
@RyanRies हां, जबकि यह व्यवहार का है जो आज के मानकों से गलत माना जाता है, यह कुछ ऐसा है जो अभी भी कभी-कभी समस्याओं का कारण बनता है। (सिद्धांत रूप में अगर किसी के पास इस तरह की सीमा है, तो संबंधित सॉफ़्टवेयर को संभालने की क्षमता का विज्ञापन न करने / बड़ी प्रतिक्रिया नहीं भेजने के लिए कॉन्फ़िगर करने का पता चलेगा।)
हाकैन लिंडक्विस्ट

1

डिफ़ॉल्ट संचालन पोर्ट 53 के उदाहरण, क्वेरीज़ और ज़ोन रखरखाव संचालन के लिए DNS संचालन। प्रदर्शन कारणों से, क्वेरी यूडीपी प्रोटोकॉल का उपयोग 512 बाइट्स के ब्लॉक-आकार की सीमा के साथ करते हैं। टीसीपी को क्वेरी संचालन के लिए लेनदेन-दर-लेन-देन के आधार पर वैकल्पिक रूप से बातचीत की जा सकती है, लेकिन टीसीपी के साथ किए गए प्रदर्शन के कारण, यह अनिवार्य रूप से एक सैद्धांतिक क्षमता है। ऐतिहासिक रूप से, 512-बाइट प्रतिसाद आकार सीमा से अधिक आमतौर पर सभी लागतों से बचा जाता था, और वास्तव में 13 IPv4 रूट-सर्वर की सीमा अधिकतम थी जो एक एकल 512-बाइट यूडीपी लेनदेन में वापस किया जा सकता था।

रॉन ऐचिसन - प्रो डीएनएस और बंड 10 - 2011


धन्यवाद। क्या हम उद्धरण के स्रोत को जान सकते हैं (इसका श्रेय देने के लिए)?
पोथी कालीमुथु

-2

इसकी एक क्यूओएस बात है।

क्योंकि UDP स्टेटलेस है, पैकेटों की त्रुटि-हैंडलिंग संभव नहीं है।

इस प्रकार, पैकेटों को अधिकतम आकार में रखने से, एक बड़ा बदलाव है कि वे अपने गंतव्य तक पहुंच जाएंगे, त्रुटि से निपटने की अनुपस्थिति के प्रभाव को कम करते हुए।


बड़े पैकेट का मतलब यह नहीं है कि यूडीपी टीसीपी में विफल रहता है। क्या मैं गलत समझ रहा हूं कि आप क्या कह रहे हैं?
mfinni

शायद तुम सही हो। मुझे लगता है कि मैंने एक प्रस्तावित RFC में कहीं पढ़ा है।
गेरथ मैकडैड

UDP विफल नहीं है, लेकिन विशेष रूप से DNS के लिए अगर UDP का उपयोग करते समय प्रतिक्रिया बहुत बड़ी है, तो इसके परिणामस्वरूप एक छोटी सी प्रतिक्रिया होगी (वास्तविक प्रतिक्रिया में सभी डेटा शामिल नहीं है और यह इंगित करने के लिए 'छोटा' ध्वज सेट है) क्लाइंट इसके बजाय TCP का उपयोग करके पुनः प्रयास कर सकता है।
हाईक लिंडक्विस्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.