2012-01-03 23 views
8

सबसे पहली बात:आईडीएनए परिवर्तित डोमेन नाम की अधिकतम लंबाई क्या है?

मैं एक डेटाबेस के लिए एक से अधिक डोमेन भंडारण कर रहा हूँ, के बाद मैं हर परिवर्तित कर दिया है और यह करने के लिए हर डोमेन नाम IDNA संस्करण है। मुझे अधिकतम लंबाई जानने की आवश्यकता है जैसे आईडीएनए-परिवर्तित डोमेन नाम हो सकता है ताकि मैं डेटाबेस फ़ील्ड की अधिकतम लंबाई को परिभाषित कर सकूं।

ज्ञात तथ्य:

अब, मैं (किसी भी उप डोमेन सहित) एक डोमेन नाम में वर्णों की अधिकतम संख्या पता 255 वर्ण है।

मैं इसे कहाँ खो दिया:

पहली नजर में आसान है कि है, लेकिन ... इस अंतर्राष्ट्रीय वर्ण का नियमित रूप से ASCII वर्ण मतलब है (लगता है UTF-8 एन्कोडिंग)?

आपको एक उदाहरण देने के लिए: डोमेन "müller.de" में 9 वर्ण हैं जब मैं अनदेखा करता हूं कि "ü" एक अंतरराष्ट्रीय चरित्र है जिसे अधिक बाइट्स का प्रतिनिधित्व करने की आवश्यकता है। "Müller.de" का आईडीएनए संस्करण "xn--mller-kva.de" है, जिसमें 16 वर्ण हैं। यह दिखाता है कि "अगर" आईडीएनए परिवर्तित या नहीं के आधार पर अधिकतम लंबाई में निश्चित रूप से एक अंतर है।

किस प्रकार के पात्रों का मतलब है, इस पर निर्भर करता है कि 255-वर्ण अधिकतम अंतरराष्ट्रीय चरित्र संस्करण, आईडीएनए परिवर्तित संस्करण या दोनों भी हो सकता है।

और चूंकि मैं खाता है कि नहीं सभी डोमेन समझदार और तरह "öüßüöäéèê.example.äöüßüöäéèê-äöüßüöäéèê.test.äöüßüöäéèê.com" सामान हो जाएगा में रखना है, जहाँ मैं इसे थोड़ा खो दिया है ... विशेष रूप से और इससे भी बदतर उम्मीद की जा सकती है।

तो, "अनुमान" और "सर्वश्रेष्ठ की उम्मीद" एक विकल्प नहीं है। मुझे यकीन है कि के लिए पता करने की जरूरत ...

सवाल यह है:

जानते हैं कि (किसी भी उप डोमेन सहित) एक डोमेन नाम में वर्णों की अधिकतम संख्या 255 वर्ण ... है के आधार पर आईडीएनए परिवर्तित डोमेन नाम की अधिकतम लंबाई क्या है?

या वे मतलब था IDNA परिवर्तित संस्करण (पनीकोड) भी 255 अक्षरों (जो मतलब होगा अंतरराष्ट्रीय/यूनिकोड वर्ण के साथ डोमेन वास्तव में उनके यूनिकोड प्रतिनिधित्व में सीमा और भी कम होता है कि क्योंकि उनके IDNA परिवर्तित संस्करण होगा के लिए प्रतिबंधित है 255 चार सीमा का सम्मान करना होगा)?

उत्तर

5

मेरी समझ यह है कि आईडीएनए रूपांतरण के बाद 255-वर्ण सीमा को माना जाना चाहिए।

ऐसा इसलिए है क्योंकि DNS रिकॉर्ड्स में यह वर्ण सीमा है, और सामान्य DNS रिकॉर्ड्स में केवल अक्षरों, अंक और हाइफ़न (from Wikipedia) हो सकते हैं। इसलिए DNS सर्वर अपने रिकॉर्ड के लिए आईडीएन के Punycode संस्करण का उपयोग करता है, न कि यूनिकोड संस्करण।

+0

कुछ रजिस्ट्रार वेबसाइटों और "एक्सेंट्स और उमलॉट्स के साथ डोमेन नाम" के बारे में उनकी जानकारी के बाद मैं एक ही निष्कर्ष पर आया। हां, रूपांतरण के बाद यह 255 है। लेकिन आपके उत्तर के लिए धन्यवाद। इसका मतलब है कि मैं एकमात्र ऐसा नहीं हूं जो एक ही निष्कर्ष पर आ रहा है, और यह जानना एक आरामदायक बात है! ;) –

6

ठीक है, मुझे लगता है कि मुझे पता चला अपने आप को और इस स्निपेट मैंने पाया (इंटरनेट खोज के द्वारा) की मदद की:

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

- Source

जवाब यह है कि सम्मान के लिए लंबाई 255 अक्षरों की सीमा के रूप में डीएनएस यह उम्मीद है।

मेरा संदेह सही था। डोमेन नाम और DNS में प्रविष्टि आईडीएन के साथ दो अलग-अलग चीजें हैं। यह गणना की गई DNS प्रविष्टि की अधिकतम लंबाई है।

डोमेन नाम "müller.de" में 9 वर्ण हैं, लेकिन संबंधित एसीई (ASCII संगत एन्कोडिंग) स्ट्रिंग "xn--mller-kva.de", हालांकि, 16 वर्ण हैं।

यह एसीई स्ट्रिंग है जिसका उपयोग DNS द्वारा किया जाता है और यह एसीई स्ट्रिंग है जो 255 वर्ण सीमा के अंतर्गत आता है। इसका मतलब है कि इसके यूनिकोड (डोमेन) संस्करण की अधिकतम सीमा को यूनिकोड वर्णों की संख्या द्वारा परिभाषित किया गया है और यदि - आईडीएनए रूपांतरण के बाद - स्ट्रिंग अभी भी 255 वर्ण सीमा के भीतर फिट बैठती है।

गीज़, चश्मा निश्चित रूप से इस तरह की चीजों पर थोड़ा स्पष्ट हो सकता था। खासकर अंतरराष्ट्रीय डोमेन नाम 1 मार्च, 2004 के करीब कहीं से भी आसपास रहे हैं। लेकिन मुझे जवाब मिला, और यही मायने रखता है।

शायद यह किसी ऐसे प्रश्न की सहायता कर सकता है जिसकी कोई प्रश्न हो।

मेरे डेटाबेस फ़ील्ड की लंबाई से संबंधित सरल उत्तर 255 CHARs है।

तथ्य यह है कि मैं अपने आईडीएनए परिवर्तित (punycode/ACE स्ट्रिंग) संस्करण में डोमेन नाम संग्रहीत करता हूं केवल यह अधिकतम वर्ण सीमा की पुष्टि करता है।

+0

कुछ सेकंड अलग ... मुझे लगता है कि आप जीतते हैं :-) उत्कृष्ट सवाल, और खुशी है कि हम एक ही निष्कर्ष पर आए! – cmbuckley

+0

बह, जो सेकंड की गिनती कर रहा है? मैं बस अपने उत्तर के बजाय अपना जवाब स्वीकार करूंगा। कम से कम मैं आपको अपने प्रयास के लिए कुछ देने के लिए कर सकता हूं। मान लीजिए कि मैं आज एक सामाजिक मूड में हूं ... :) –

+0

प्रश्न और उत्तर के लिए धन्यवाद। किसी भी मौके पर आप स्निपेट या किसी संदर्भ (आरएफसी, आईईटीएफ, आदि दस्तावेज़) के स्रोत के लिए सूचक/लिंक शामिल कर सकते हैं? धन्यवाद! – JJC

0

RFC3492 का कहना है इस बारे में सुविधाओं ओएस IDNA एन्कोडिंग में से एक:

कुशल एन्कोडिंग: बढ़ाया स्ट्रिंग की लंबाई करने के लिए बुनियादी स्ट्रिंग की लंबाई के अनुपात छोटा है। यह डोमेन नामों के संदर्भ में महत्वपूर्ण है क्योंकि RFC1034 डोमेन लेबल की लंबाई 63 वर्णों तक सीमित करता है।

यही है। 63 वर्ण किसी भी डोमेन नाम के लिए अधिकतम लंबाई है, जो गीलेर के बिना आईडीडीए में है या ASCII में है।

+2

जो डोमेन नाम के भीतर व्यक्तिगत _labels_ पर प्रतिबंध है, पूरा नाम नहीं – Alnitak