मान लिया गया है कि आपके कॉन्फ़िगर किए गए नेमसर्वर के पास इसके निपटान में कोई भी कैश्ड परिणाम नहीं है, maps.google.com को हल करने के लिए कितने नेमसर्वर को आपकी नेमसेवर क्वेरी की आवश्यकता होगी? इन सभी नाविकों को खोजने के लिए आप किस कमांड का उपयोग करेंगे? प्रत्येक स्तर से एक सूची दें और बताएं कि इस स्तर की आवश्यकता क्यों है।
अच्छा, चलो इस एक को अलग करो।
"मान लिया गया है कि आपके कॉन्फ़िगर किए गए नेमसर्वर के पास अपने निपटान में कोई कैश्ड परिणाम नहीं है" - सबसे पहले, यदि उसके पास कोई कैश्ड डेटा नहीं है , तो वह कुछ भी हल नहीं कर सकता है। रिज़ॉल्वर के कैश को प्राइम करने के लिए, आपके पास .
(AKA रूट) ज़ोन के लिए NS और एड्रेस (A, AAAA) रिकॉर्ड होना चाहिए । यह रूट नाम सर्वर है, जो root-servers.net.
जोन में पाए जाते हैं । उस क्षेत्र या उन DNS सर्वरों के बारे में कुछ भी जादुई नहीं है। हालाँकि, यह डेटा अक्सर DNS रिज़ॉल्वर को "बैंड से बाहर" प्रदान किया जाता है, जो कि रिज़ॉल्वर के कैश को प्राइम करने के लिए ठीक है। आधिकारिक-केवल नाम सर्वर को इस डेटा की आवश्यकता नहीं है, लेकिन नाम सर्वरों को हल करना है।
इसके अलावा, क्या करने के लिए "संकल्प"? उस नाम पर कोई RRtype? एक A
आरआर? या कुछ और? क्या वर्ग ( CH
/ Chaosnet, IN
/ इंटरनेट, ...)? सटीक प्रक्रिया अलग होगी, लेकिन सामान्य विचार समान है।
यदि हम मान सकते हैं कि हम जानते हैं कि रूट नाम सर्वरों को कैसे खोजना है, लेकिन इससे अधिक कुछ नहीं, और "समाधान" से हमारा मतलब है IN A
कि नाम के साथ जुड़े किसी भी आरआर की सामग्री प्राप्त करना , यह बहुत अधिक व्यावहारिक हो जाता है।
DNS नाम को हल करने के लिए, आप मूल रूप से नाम को लेबल में विभाजित करते हैं और फिर दाईं ओर से बाईं ओर अपना काम करते हैं। .
अंत में मत भूलना ; आप वास्तव में maps.google.com.
बजाय हल हो जाएगा maps.google.com
। जो हमें हल करने की आवश्यकता के साथ छोड़ देता है (हम यह जानते हैं, लेकिन एक DNS रिज़ॉल्वर कार्यान्वयन शायद नहीं होगा):
.
com.
google.com.
maps.google.com.
पता लगाने के साथ शुरू करें कि सामग्री कहां से मांगनी है .
। यह आसान है; हमारे पास पहले से ही वह जानकारी है: रूट नाम सर्वर नाम और आईपी पते । इसलिए हमारे पास एक रूट नाम सर्वर है। मान लें कि हम 198.41.0.4 का उपयोग करने का निर्णय लेते हैं (नाम a.root-servers.net
, 2001: 503: ba3e :: 2: 30) नाम संकल्प को जारी रखने के लिए। व्यवहार में, रिज़ॉल्वर द्वारा की गई पहली चीजों में से एक रूट ज़ोन सर्वर से रूट ज़ोन के लिए नाम सर्वरों की सटीक सूची के लिए पूछने के लिए प्रदान किए गए रूट सर्वर डेटा का उपयोग करने की संभावना होगी, इस प्रकार यह सुनिश्चित करना कि यदि कोई हो नाम और आईपी पते वैध और पहुंच योग्य हैं, इसका संकल्प शुरू होने पर रूट ज़ोन के लिए डेटा का एक पूर्ण और पूरा सेट होगा।
maps.google.com. IN A
198.41.0.4 के लिए DNS क्वेरी बंद करें । यह आपको जवाब में बताएगा कि "नहीं, यह मत करो, लेकिन यहाँ कोई है जो शायद जानता हो"; यह एक रेफरल है। इसमें NS
निकटतम क्षेत्र के रिकॉर्ड होते हैं, जिसके बारे में सर्वर को पता होता है कि किसी भी ग्लू रिकॉर्ड के साथ सर्वर उपलब्ध है। यदि कोई गोंद डेटा उपलब्ध नहीं है, तो आपको सबसे पहले उस एनएस रिकॉर्ड में नामित होस्ट को हल करना होगा जिसे आपने चुना था, इसलिए आईपी पते को प्राप्त करने के लिए एक अलग नाम का प्रस्ताव रखें; यदि गोंद डेटा उपलब्ध है, तो आपके पास एक नाम सर्वर का आईपी पता होगा जो उत्तर के लिए कम से कम "करीब" होगा। इस स्थिति में, यह com.
क्षेत्र के लिए सर्वर का सेट होगा , और गोंद डेटा भी प्रदान किया जाएगा।
com.
नाम सर्वर से एक ही सवाल पूछते हुए प्रक्रिया को दोहराएं । वे या तो नहीं जानते हैं, लेकिन आपको Google के आधिकारिक नाम सर्वरों के लिए संदर्भित करेंगे। इस बिंदु पर सामान्य मामले में यह हिट हो जाएगा या याद रखेगा कि गोंद डेटा प्रदान किया गया है या नहीं; com
डोमेन को केवल नाम सर्वर में रखने से रोकने के लिए कुछ नहीं है nl
, उदाहरण के लिए, जिस स्थिति में gTLD सर्वर से गोंद डेटा उपलब्ध होने की संभावना नहीं है। प्रदत्त गोंद डेटा भी अधूरा हो सकता है, या यदि आप वास्तव में अशुभ हैं तो यह गलत भी हो सकता है! आपको हमेशा उस अलग नाम प्रस्ताव को बंद करने के लिए तैयार रहना होगा जिसका मैंने ऊपर उल्लेख किया था।
मूल रूप से, आप तब तक चलते रहते हैं जब तक आपको aa
(आधिकारिक उत्तर) ध्वज सेट के साथ उत्तर नहीं मिल जाता है । यही कारण है कि इस सवाल का जवाब आपको बता देंगे आप जो चाह रहे हैं, या जो RR आप के लिए मौजूद नहीं है (या तो पूछा NXDOMAIN
, या NOERROR
शून्य प्रतिक्रिया डेटा रिकॉर्ड के साथ)। प्रतिक्रियाओं की तलाश में रहें SERVFAIL
(और एक कदम पीछे हटें और एक सर्वर प्राप्त करें, यदि आप एक प्राप्त करते हैं; यदि सभी नामित सर्वर वापस आते हैं SERVFAIL
, तो नाम समाधान प्रक्रिया विफल हो जाती है और SERVFAIL
ग्राहक को वापस आ जाती है )।
प्रत्येक सर्वर से पूर्ण RRname के लिए पूछने का विकल्प (जिसे बुरा व्यवहार माना जा सकता है) लेबल की विभाजित सूची का उपयोग करना है जिसे हमने पहले निर्धारित किया था, सर्वर द्वारा दिए गए नाम सर्वर से आगे रूट IN NS
और IN A
/ IN AAAA
RRs की ओर पूछें उस लेबल के लिए, और नाम समाधान प्रक्रिया को आगे बढ़ाने के लिए उन का उपयोग करें। यह व्यवहार में केवल थोड़ा भिन्न है, और यही प्रक्रिया अभी भी लागू होती है।
आप इस पूरी प्रक्रिया +trace
को dig
उपयोगिता के विकल्प का उपयोग करके अनुकरण कर सकते हैं , जो कि BIND के हिस्से के रूप में, या set debug
अंदर आता है nslookup
।
यह भी याद रखने योग्य है कि कुछ RRtypes (विशेष रूप NS
से MX
और कुछ अन्य; भी, A6
कुछ समय के लिए यथोचित रूप से अच्छी तरह से उपयोग किए गए थे, लेकिन अन्य आरआरएस को संदर्भित कर सकते हैं)। उस स्थिति में, आपको अपने ग्राहक को पूर्ण और उपयोगी उत्तर देने के लिए एक और नाम समाधान प्रक्रिया शुरू करनी होगी।
dig +trace
, लेकिन मुझे यकीन नहीं है कि स्तरों से क्या मतलब है। यह सर्वर दोष के लिए एक प्रश्न हो सकता है।