DNS राउंड रॉबिन: क्या ब्राउज़र ऑनलाइन रहने तक एक आईपी से चिपके रहते हैं?


14

यदि वे DNS सर्वर से कई ए-रिकॉर्ड प्राप्त करते हैं, तो अधिकांश ब्राउज़र कैसे व्यवहार करते हैं? जब तक यह पहुंच से बाहर है, तब तक एक आईपी से चिपके रहें (और केवल एक और उपयोग करें यदि आईपी नीचे है)? या वे बिना किसी कारण के सभी समय स्विच करते हैं?

यदि अधिकांश वर्तमान ब्राउज़र एक आईपी से चिपके रहते हैं, तो DNS-RR मेरे लिए एक साधारण विफलता समाधान के रूप में पर्याप्त होगा।


1
मैं सीधे आपके सवाल का जवाब नहीं दे सकता, लेकिन मैं आपको बताऊंगा कि आपको ब्राउज़र और OS दोनों स्तरों पर कैशिंग से निपटना है! मज़े :)
SpacemanSpiff


1
@ इयान - बहुत बढ़िया लिंक
स्पेसमैनस्पीफ

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

सभी ब्राउज़रों को कवर करने वाला एक भी नियम नहीं है, इसलिए बहुत कम से कम आपको यह निर्दिष्ट करने की आवश्यकता है कि आप
किसमें

जवाबों:


7

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

गूगल क्रोम

Google Chrome (v58 का उपयोग किया गया) एक पते (ए, AAAA, CNAME) के लिए सभी होस्ट प्रविष्टियों का अनुरोध करेगा और उन्हें एक सरणी ( address_list ) में डाल देगा । क्रोम तब पहली से आखिरी तक प्रत्येक आईपी पते पर सॉकेट खोलने का प्रयास करेगा, क्रोम सबसे तेज या निकटतम आईपी का प्रयास नहीं करेगा, यह पहले आईपी को मानता है (आपके अपस्ट्रीम डीएनएस रिसॉल्वर द्वारा दिया गया) सबसे अच्छा आईपी है। मेरे परीक्षणों में बाइंड और विन्डोज़ डीएनएस सर्वर प्रत्येक लुकअप में 50/50 के बंटवारे जैसा लगता है, यह देखते हुए आईपी के प्रति एक अलग क्रम देते हैं। इस कार्यक्षमता में उजागर किया गया हैchrome://net-internals/#events&q=type:SOCKET%20is:active

कर्ल (libcurl / 7.54.0)

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

DEFAULT_CONNECT_TIMEOUT: 0 मुझे लगता है कि यह कर्ल के साथ संभव नहीं था।

* After 149990ms connect time, move on!

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

इसका क्या मतलब है? DNS-RR कुछ सिस्टम के लिए ठीक है, लेकिन यह फेलओवर के लिए नहीं बनाया गया है। आपको उम्मीद करनी चाहिए कि डीएनएस लुकिंग के सभी परिणाम (सत्य का एक स्रोत) वैध और यातायात की सेवा के लिए उपलब्ध हैं। वहाँ आईपी उपलब्धता सुनिश्चित करने के कई तरीके हैं, इस तरह के आभासी नाव आईपी, BGP / रूटिंग चाल, आदि के रूप हैं उन्हें का प्रयोग करें

IPv4 केवल पर्यावरण में किए गए सभी परीक्षण, दोहरी-स्टैक परिणामों के साथ वापस आएंगे जब एक बार पर्याप्त बुनियादी ढांचा परीक्षण के लिए उपलब्ध होगा।

मैं अनुमान लगाता हूं कि ये बदलाव IPv6-Fallback RFC हैप्पी आईबॉल के साइड-इफेक्ट हैं

अद्यतन एक उपयोगी विचार, आरआर डीएनएस केवल लोड बैलेंसिंग के साथ सहायता कर सकता है, न कि एप्लिकेशन विफलताओं के लिए, यदि आपके किसी नोड में 503 है तो आपका ट्रैफ़िक 503 होने पर आप 40-60% की सेवा करेंगे। यह धारणा बनाई गई है कि सूचीबद्ध सभी IP यदि पहुँच योग्य हैं, तो वे कार्यशील समापन बिंदु हैं


2

संपादित करें: मेरा जवाब संपादित करने के बाद से HiPerFreak ने मुझे स्कूल किया।

DNS सर्वर एक दिए गए होस्ट नाम के लिए सभी ए रिकॉर्ड्स की एक सूची लौटाएगा। जहां राउंड रॉबिन आता है, वह सूची को कैसे ऑर्डर किया जाता है, घूमता है। लिंक जो पोस्ट किया गया है वह एक महान उदाहरण है कि वेब ब्राउज़र उस सूची का उपयोग कैसे करेंगे।

राउंड रॉबिनिंग का उपयोग लोड संतुलन के एक बहुत ही आदिम रूप के लिए किया जा सकता है, लेकिन वास्तविक लोड संतुलन के लिए एक बहुत ही खराब विकल्प है, क्योंकि यदि राउंड रॉबिन रोटेशन में मेजबान में से एक नीचे चला जाता है, तो DNS सर्वर कोई भी समझदार नहीं होगा और तब भी रहेगा सूची में निम्‍न नोड का IP पता डालें।


DNS सर्वर हमेशा सभी पतों को सौंपता है। ब्राउज़र वह है, जो यह तय करता है कि किसका उपयोग किया जाता है (जैसा कि कई बार यहाँ और अन्य जगहों पर डिस्कस किया जाता है)। इसके अलावा, ओएस ब्राउज़र के सभी आईपी पास करता है।
HiPerFreak

2
@HiPerFreak अक्सर देखा जाने वाला कॉन्फ़िगरेशन (विशेष रूप से बड़ी संख्या में ए-रिकॉर्ड्स के लिए) यह है कि DNS कुछ पते निकालता है (हालांकि सभी नहीं, आमतौर पर यह सुनिश्चित करने के लिए कि वे 512 बाइट्स के यूडीपी पैकेट में फिट होते हैं और अनावश्यक ओवरहेड नहीं होते हैं) , आमतौर पर एक बदलते क्रम में।
वाबेट

मैं 2 या 3 आईपी के बारे में सोच रहा था।
HiPerFreak

@HiPerFreak: मैं सिर्फ यह कहना चाहता था कि आप सही हैं कि एक DNS सर्वर एक नाम के लिए क्वेर किए जाने पर सभी A रिकॉर्ड्स को सौंप देता है यदि उस नाम के लिए कई A रिकॉर्ड मौजूद हैं। मेरे पास एक DNS सर्वर है और मैंने पुष्टि करने के लिए होस्टनाम को पिंग करते समय सिर्फ विंडसर्क के साथ एक पैकेट कैप्चर किया था। धन्यवाद - मैंने आज कुछ सीखा! :)
रायन रीज

2

यह मेरा प्रश्न (और उत्तर) देखें: ब्राउज़र कई आईपी को कैसे संभालते हैं

शीघ्र ही - राउंड रॉबिन डीएनएस की उपलब्धता में सुधार नहीं होता है। ब्राउज़र एक आईपी चुनता है और उससे चिपक जाता है, भले ही वह जवाब न दे। (एफएफ और क्रोम के साथ जांचा गया)।

एक बार जब ब्राउज़र कैश समाप्त हो जाता है, तो होस्टनाम फिर से हल हो जाता है और प्रक्रिया दोहराई जाती है, भले ही आईपी जवाब दिया या नहीं।

बुनियादी हा के लिए, आप गतिशील DNS या विभिन्न आईपी-आधारित दृष्टिकोणों का उपयोग कर सकते हैं।

EDIT: यह व्यवहार तब होगा जब दुर्गम मेजबान "ब्लैक होल" के रूप में कार्य करेगा। यदि इसके बजाय मेजबान ctively आने वाले कनेक्शनों को मना कर देता है, तो ब्राउज़र एक आईपी की कोशिश करेगा, मना कर देगा और तुरंत दूसरे आईपी का उपयोग करेगा और इस प्रकार यह विफल हो जाएगा।


2
शायद यह हाल के वर्षों में बदल गया है, लेकिन मैं पुष्टि कर सकता हूं कि फ़ायरफ़ॉक्स में कई ताज़ा होने पर, आईपी वास्तव में बदलाव करता है, हालांकि बहुत बार नहीं। संभवतः यह जवाब आउट-डेटेड है?
यति

मेरा शोध (2015 से) यह है कि Sandman4 के वर्णन के अनुसार Chrome, Firefox और MSIE DO व्यवहार नहीं करते हैं। MSIE उल्लेखनीय रूप से भिन्न है कि पहले विफल होने पर सूचीबद्ध अगले पते पर कनेक्शन का प्रयास करने से पहले उसे पूर्ण TCP टाइमआउट की आवश्यकता होती है।
सिम्बियन

0

वे IP स्विच करते हैं, यह एक विफल समाधान नहीं है।

ब्राउज़र ओएस को नाम रिज़ॉल्यूशन करने देते हैं, और एक्सेल लिनक्स के लिए हमेशा आईपी पते को यादृच्छिक करते हैं, कई बार google.com होस्ट करने का प्रयास करते हैं । आईपी ​​यादृच्छिक क्रम में आएंगे।


वे ऐसा बेतरतीब ढंग से और बिना कारण क्यों करते हैं? जब तक यह अप-एंड-रनिंग है, तब तक एक आईपी-टू-वर्क आईपी का पुन: उपयोग करने का कोई मतलब नहीं होगा?
HiPerFreak

1
यह लोड संतुलन के लिए है।
स्टोन

@HiPerFreak यह भी देखें: en.wikipedia.org/wiki/Round-robin_DNS
voretaq7

@HiPerFreak: इस कारण से यह एक ज्ञात-टू-वर्क आईपी से नहीं चिपकता है, नाम रिज़ॉल्यूशन कुछ भी नहीं जानता है कि आईपी अब काम करता है या अतीत में है। ब्राउज़र एकल IP से चिपकता नहीं है, क्योंकि नाम रिज़ॉल्यूशन इसे विभिन्न IP का उपयोग करने के लिए कह रहा है। :-)
सीन रिफ़्शिनडर

@ सीन: ब्लो आंसर की चर्चा के अनुसार, नाम रिज़ॉल्यूशन ब्राउज़र को ऑल आईपी देता है और ब्राउज़र निर्णय लेता है कि किसका उपयोग करना है। और ब्राउज़र जानता है कि किस आईपी ने काम किया और कौन सा नहीं। तो यह कारण नहीं हो सकता।
HiPerFreak

0

DNS एक सूची में सभी आईपी लौटाते हैं लेकिन वे सूची के क्रम को बदल देते हैं और यह क्रम यादृच्छिक या परिवर्तन नहीं होता है जब 1 विफल हो जाता है लेकिन लोड संतुलन के कारणों के लिए वे हमेशा उसी क्रम में आईपी लौटाते हैं। जब ब्राउज़र सूची प्राप्त करता है, तो मुझे लगता है कि यह सूची में 1 को चुनता है यदि गैर-कार्यशील के रूप में नहीं जाना जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.