मेरे डोमेन के लिए कई ए-रिकॉर्ड्स का उपयोग करना - क्या वेब ब्राउज़र कभी एक से अधिक प्रयास करते हैं?


94

यदि मैं अपने डोमेन के लिए कई ए-रिकॉर्ड जोड़ता हूं, तो उन्हें DNS सर्वर द्वारा एक राउंड रॉबिन ऑर्डर में वापस कर दिया जाता है।

उदाहरण:

192.0.2.1 A example.com
192.0.2.2 A example.com
192.0.2.3 A example.com

लेकिन अगर पहला होस्ट 192.0.2.1डाउन (पहुंच से बाहर) हो तो वेब ब्राउज़र कैसे प्रतिक्रिया करता है ? क्या वे दूसरे होस्ट की कोशिश करते हैं ( 192.0.2.2) या क्या वे उपयोगकर्ता को एक त्रुटि संदेश लौटाते हैं? क्या सबसे लोकप्रिय ब्राउज़रों के बीच कोई अंतर है?

यदि मैं अपने स्वयं के आवेदन को लागू करता हूं, तो मैं इसे लागू कर सकता हूं ताकि दूसरा उपयोग होने की स्थिति में पहले नीचे हो, इसलिए यह संभव है। और यह एक गलती सहिष्णु वेबसाइट बनाने के लिए बहुत उपयोगी होगा।

जवाबों:


87

हां, पिछले 5-10 वर्षों के अधिकांश ब्राउज़र अन्य ए रिकॉर्ड की कोशिश करेंगे यदि कोई जवाब देने में विफल रहता है। इसे कभी-कभी "ब्राउज़र रिट्री" या "क्लाइंट रिट्री" कहा जाता है। आप बहुत अधिक केवल इसके बारे में सामान देख पाएंगे जो विभिन्न ब्राउज़र कारनामों के संदर्भ में है, जो यह सुविधा साइटों का उपयोग न करने के लिए सक्षम बनाता है ( DNS रिबाइंडिंग और डीएनएस पिनिंग , एंटी-डीएनएस पिनिंग, एंटी-डेन्स पिनिंग, एंटी-एंटी देखें -आंटी-डीएनएस पिनिंग , और इसी तरह)। एक बुरा प्रतिष्ठा की तरह है, लेकिन यह साबित होता है कि यह मौजूद है।

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

लेकिन यह ऐसा कुछ नहीं है जिसका आप आवश्यक रूप से उपयोग करना चाहते हैं, यह ब्राउज़र संगतता, ओएस संगतता, प्रॉक्सी संगतता, कैश-कंट्रोल हेडर के बारे में बहुत सारे चेतावनी देने वाला है, इस पर अजीब प्रभाव पड़ने वाले हैं कि क्या यह याद है कि आईपी नीचे हैं या शुरू हो रहे हैं हर अनुरोध पर 30 सेकंड प्रतीक्षा करें, आपकी साइट के लिए कस्टम क्लाइंट लिखने वाले लोग getaddrinfo के बजाय gethostbyname का उपयोग करते हुए समाप्त होने जा रहे हैं और विफलता के सभी प्रकार की संभावित समस्याओं को संभालने में सक्षम नहीं हैं।

आप "मास्टर" और "दास" सर्वरों के लिए अनुमति देने के लिए कई ए रिकॉर्ड पर भरोसा नहीं कर सकते हैं, क्योंकि आप कभी नहीं जान पाएंगे कि कौन सा पता सूची से बाहर निकालने वाला है। वे सभी को बस चलने पर आगंतुकों को संभालने में सक्षम होने की आवश्यकता होती है, क्योंकि किसी को भी ट्रैफ़िक मिल सकता है यदि वह ऊपर है। एक ब्राउज़र सोच सकता है कि सूची से बाहर आपका तीसरा सर्वर सबसे अधिक आकर्षक है, हो सकता है कि वह सबसे नज़दीक दिखे, और यह चुन लेगा कि भले ही तीनों अभी भी ऊपर हैं।

लेकिन अगर आप सीमाओं के साथ रह सकते हैं और आपके पास एक सरल HTTP सिस्टम है, जिसके साथ आप ब्राउज़र इंटरैक्शन की भविष्यवाणी कर सकते हैं, तो यह काम करेगा।

ओह, आपको बहुत सारे लोगों से यह कहना होगा कि यह अस्तित्व में नहीं है (क्योंकि यह 15 साल पहले सच था)। लेकिन आप कई नामों के साथ एक डोमेन नाम के लिए टेलनेट-आईएनजी की कोशिश कर सकते हैं, कुछ मृत आईपी और कुछ अच्छे लोगों के साथ, अगर आपको इसे साबित करने की आवश्यकता है (हाँ, यहां तक ​​कि अच्छे पुराने टेलनेट अब getaddrinfo का उपयोग करते हैं और इन दिनों कई ए रिकॉर्ड को इनायत से संभालते हैं - यह IPs की एक अच्छी सूची को प्रिंट कर देगा जो इसे तब तक कोशिश कर रहा है जब तक कि यह आखिरकार सफल न हो जाए।


12
यहां नेशनल ब्यूरो ऑफ इकोनॉमिक रिसर्च की एक रिपोर्ट है जो जोफ के जवाब का समर्थन करती है।
मार्को

3
वास्तव में, जबकि stackexchange.com एक आईपी को इंगित करता है, Google कई लौटाता है: $ dig google.com @ ns1.b.com ;; उत्तर अनुभाग: google.com 300 इन ए 74.125.226.6 google.com। 300 इन ए 74.125.226.7 google.com। 300 इन ए 74.125.226.0 google.com। 300 इन ए 74.125.226.4 google.com। 300 IN 74.125.226.8 google.com। 300 इन ए 74.125.226.2 google.com। 300 इन ए 74.125.226.1 google.com। 300 इन ए 74.125.226.3 google.com। 300 इन ए 74.125.226.5 google.com। 300 इन ए 74.125.226.14 google.com। 300 IN 74.125.226.9
लुई सेंट-अमोर

1
क्षमा करें, लेकिन मुझे नहीं लगता कि यह कैसे काम करता है। ब्राउजर्स का आईपी एड्रेस को हल करने से कोई लेना-देना नहीं है - जो सिस्टम सॉफ्टवेयर में होता है। यदि आप एकाधिक ए रिकॉर्ड प्रदान करते हैं, तो आपको यह मान लेना चाहिए कि किसी भी दिए गए ग्राहक को सूची से एक यादृच्छिक प्राप्त होगा।
जान स्टाइनमैन 18

19
यह है कि यह कैसे समकालीन ब्राउज़रों में काम करता है। वे सभी सिस्टम से एकल IP पता प्राप्त करने के बजाय कई आईपी पते प्राप्त करने और आंतरिक रूप से विफलता को संभालने के लिए getaddrinfo () जैसे सिस्टम कॉल का उपयोग करने का चयन करते हैं। अन्य टिप्पणीकार और उत्तरदाता जोफ के अंतिम पैराग्राफ से "बहुत से लोग आपको बता रहे हैं कि यह अस्तित्व में नहीं है" का हिस्सा है। मेरा मानना ​​है कि उनका मतलब अच्छी तरह से है लेकिन वे गलत सूचना फैला रहे हैं।
रॉबर्ट टुपेलो-श्नाइक

1
"ब्राउजर्स 5-10 साल पहले" के जोफ के बयान का समर्थन करने के लिए, यहां नेशनल ब्यूरो ऑफ इकोनॉमिक रिसर्च द्वारा किया गया एक परीक्षण है जिसमें कहा गया है कि आप इस तरह के सिस्टम को IE 8 पर काम कर रहे हैं। :)
जोमार सेविजो

5

चेतावनी दी है कि Windows Vista RFC3484 (यानी IPV6 से IPV4 के लिए बैकपोर्टिंग) के बेवकूफ हिस्सों को लागू करता है और वह आईपी पता पसंद करेगा जो यादृच्छिक रूप से एक को चुनने के बजाय उपयोगकर्ता के आईपी पते के साथ सबसे उपसर्ग बिट्स को साझा करता है। चूंकि अधिकांश उपयोगकर्ताओं के पास आईपी पते हैं जो 192.168 से शुरू होते हैं, जिसका अर्थ है कि आपके आईपी पते में से जो भी सबसे उपसर्ग बिट्स को साझा करने के लिए होता है, उसे अधिकांश विस्टा ट्रैफ़िक मिलेगा। Microsoft ने विंडोज 7 और बाद में इस विशेष मुहावरे को ठीक कर दिया, इसलिए यह उतना मुद्दा नहीं है जितना पहले हुआ करता था।


विस्टा, यह एक अच्छा एक है!
द जूल

3

यह मूल डीएनएस लोड बैलेंस वितरण तकनीक है: डीएनएस राउंड रॉबिन। इसका ब्राउज़र से कोई लेना-देना नहीं है, यह रिज़ॉल्वर के कार्यान्वयन और DNS पते के स्थानीय / दूरस्थ कैश पर निर्भर करता है। परिवर्तन यह है कि यदि कोई सर्वर विफल हो जाता है, तो DNS परत में कैशिंग के कारण आपकी वेबसाइट अप्राप्य हो सकती है।

विकीपीडिया पर राउंड रॉबिन डीएनएस के बारे में एक बुनियादी स्पष्टीकरण के लिए यहां देखें ।


1
खैर, चूंकि ब्राउज़र रिज़ॉल्वर है - यह ब्राउज़र के कार्यान्वयन पर निर्भर करता है, जैसा कि मुझे पता है।
जोनास

2
नहीं, सिस्टम लाइब्रेरी हैं जो DNS नेमसेवर का उपयोग करके डीएनएस को हल करती हैं जिसे आप सिस्टम में सेटअप करते हैं। फ़ंक्शन मानक ऑपरेटिंग सिस्टम लाइब्रेरी का हिस्सा हैं।
23

लेकिन nslookup cnn.comविंडोज पर और host cnn.comलिनक्स पर दोनों आईपी-पतों की एक सूची देते हैं, इसलिए यह निश्चित रूप से ब्राउज़र के कार्यान्वयन पर निर्भर करता है
जोनास

5
@ आइवेल: नहीं, यह सच नहीं है। यदि मैं एक जावा प्रोग्राम लिखता हूं और InetAddress.getAllByName ("example.com") के साथ एक नाम को हल करता हूं, तो मुझे सभी आईपी-पतों के साथ एक सूची मिलती है, इसलिए मैं उन सभी के लिए टीसीपी-कनेक्शन शुरू करना चुन सकता हूं यदि मैं चाहता हूं। और यह वही है यदि आप C. में getaddrinfo () का उपयोग करते हैं तो यह निश्चित रूप से एक विकल्प है कि डेवलपर्स ऑपरेटिंग सिस्टम को करते हैं और नहीं
जोनास

1
@ जे.मोनी यह सवाल बिल्कुल कार्यान्वयन के बारे में पूछ रहे हैं, कि हम इसे कैसे कर सकते हैं।
फ्रैंकलिन यू

0

ओएस निर्धारित करता है कि किस आईपी का उपयोग करना है, ब्राउज़र का नहीं। विंडोज लौटी हुई सूची को राउंडिन करेगा (सूची में डीएनएस से वापस पारित किया गया), हालांकि उसी पते का उपयोग तब तक जारी रहेगा जब तक कि डीएनएस फ्लश या आउट नहीं हो जाता। * ix कार्यान्वयन आंशिक रूप से बंडल किए गए tcp स्टैक कार्यान्वयन पर निर्भर करते हैं लेकिन आमतौर पर एक राउंड रॉबिन विधि का पालन करते हैं।


2
नहीं, यह गलत है। यदि मैं एक जावा प्रोग्राम लिखता हूं और एक नाम को हल करता InetAddress.getAllByName("example.com")हूं जिसके साथ मुझे सभी आईपी-पतों के साथ एक सूची मिलती है, तो मैं उन सभी के लिए टीसीपी-कनेक्शन शुरू करना चुन सकता हूं यदि मैं चाहता हूं। और यह वही है यदि आप getaddrinfo()सी में उपयोग करते हैं तो यह निश्चित रूप से एक विकल्प है जो डेवलपर्स करते हैं और ऑपरेटिंग सिस्टम नहीं। DNS-server केवल यह तय करता है कि IP- पतों की सूची किस क्रम में वापस आए।
जोनास

ठीक है, तो आप मैन्युअल रूप से स्टैक के साथ जो चाहें कर सकते हैं - आप अपना रोल भी कर सकते हैं और सभी को एक साथ जीत के बारे में भूल सकते हैं। हालांकि, यदि आप एक ऐप लिखते हैं और ओएस को अपनी चीज (अमूर्त दूर) करने देते हैं - तो व्यवहार उतना ही उल्लेखनीय है। आप विशेष रूप से पारंपरिक अनुप्रयोग व्यवहार के बारे में सवाल करते हैं - जो संभव नहीं है। अधिकांश डेवलपर्स अनसुलझे नाम का उपयोग करते हैं और ओएस को एक साथ कसकर युग्मन व्यवहार के बजाय यह करने देता है कि वह क्या करता है।
आइल

1
निश्चित नहीं है कि उत्तर को क्यों अस्वीकृत किया गया था, लेकिन सवाल यह है कि ब्राउज़र क्या करते हैं। वर्तमान में सभी ब्राउज़र ओएस को रिज़ॉल्यूशन करते हैं (फ़ायरफ़ॉक्स और क्रोम के लिए कुछ प्लगइन्स की कमी)। यदि आप इस बात का विवरण चाहते हैं कि उपलब्धता सुनिश्चित करने के लिए एक प्रदाता को नीचे कैसे जाना चाहिए - लोड बैलेंसरों या क्लस्टरिंग को देखें।
आइल

ब्राउज़र्स शायद जैसा आप कहते हैं - ओएस को डीएनएस लुकअप करते हैं, लेकिन यह ब्राउज़र को आईपी-पतों के साथ एक सूची लौटाता है । और सवाल यह है कि यदि पहला पता अनुपलब्ध है तो सबसे लोकप्रिय ब्राउज़र क्या करता है? क्या वे दूसरा प्रयास करते हैं?
जोनास

2
पीट टेनरीलो द्वारा आपके द्वारा उद्धृत लेख पुराना (आजकल ज्यादातर गलत है) पुराना माना जाता है। क्रोम के साथ, क्रोम: // नेट-इंटर्नल / # डीएनएस वर्तमान DNS कैश दिखाता है। मुझे विश्वास नहीं है कि ओएस हमेशा यह निर्धारित करता है कि किस आईपी का उपयोग करना है। कम से कम क्रोम के साथ आप एएएए का उपयोग करना चुन सकते हैं यदि उपलब्ध हो या केवल ए। ओपी बात कर रहा है कि कैसे ब्राउज़र DNS से ​​चयन करते हैं, न कि कैसे कंप्यूटर अपने DNS सर्वर को
खोजता है
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.