मैंने पिछले साल इसे आंतरिक संदर्भ दस्तावेज के रूप में लिखा था जब हमारे कुछ इंजीनियर DNS में IPv6 पतों को डालने के लिए कहने पर भ्रमित हो गए थे। मैंने डीएनएस को विशेष रूप से संबोधित नहीं किया, लेकिन अधिकांश चिंता पतों के प्रारूप के आसपास की लग रही थी और उन्होंने "काम" नहीं किया कि वे कैसे काम करते हैं। शायद यह दूसरों के लिए भी उपयोगी होगा:
तो, पहली बात यह है कि IPv6 के अतिरिक्त बदसूरत दिखते हैं। वे करते हैं।
लेकिन मुझे लगता है कि ऐसा सिर्फ इसलिए है क्योंकि हम उनसे निपटने के आदी नहीं हैं और हम यह नहीं समझते हैं कि वे बहुत निचले स्तर पर क्या मतलब है जैसा कि हम IPP4 पतों से करते हैं। मुझे लगता है कि उनके साथ सहज होने में थोड़ा समय लगेगा लेकिन हमें कहीं शुरुआत करनी होगी।
याद रखने के लिए एक और महत्वपूर्ण बात यह है कि IPv4 पते 32 बिट संख्या और IPv6 पते 128 बिट संख्या हैं। जब एक राउटर मार्ग या एक फ़ायरवॉल फ़िल्टर करता है, तो वे इसे उस संख्या के आधार पर करते हैं। एक इंसान कैसे चुनता है कि यह संख्या पूरी तरह से मनमानी है और यह सिर्फ परंपरा है। तो यह पूरा ईमेल बताता है कि मनुष्य इन नंबरों का प्रतिनिधित्व करने के लिए कैसे चुनते हैं - मशीनें परवाह नहीं करती हैं, यह उनके लिए सभी बिट्स हैं।
IPv4 पता 32 बिट्स या चार बाइट्स है। जिसे हम "वास्तविक" आईपी पतों के रूप में समझते हैं, वह विधि है जो उस बिट स्ट्रिंग का प्रतिनिधित्व करने के लिए मानक बन गई है, बिट्स को 4 8-बिट समूहों में अलग करना, प्रत्येक 8 बिट को दशमलव संख्या के रूप में दर्शाना और उन दशमलव संख्याओं को अलग करना एक अवधि। इसलिए, यादृच्छिक आईपी पता 172.30.154.249 लें। जब एक राउटर इस आईपी पते के बारे में "सोचता है", तो यह वास्तव में इस तरह से सोचता है:
10101100000111101001101011111001
जिसे हम अपने स्वयं के रूप में अनुवाद कर सकते हैं:
10101100 = 172
00011110 = 30
10011010 = 154
11111001 = 249
कभी-कभी आप इन्हें एक शुद्ध दशमलव संख्या के रूप में भी देख सकते हैं:
10101100000111101001101011111001 = 2,887,686,905
शायद ही कोई इस फॉर्म का उपयोग उद्देश्य (*) पर करता हो, लेकिन यह IPv4 एड्रेस लिखने का ऐतिहासिक रूप से मान्य तरीका है। वास्तव में, इस फॉर्म का उपयोग RFC821 में किया गया है जो 1982 में SMTP को परिभाषित करता था। यदि आप DNS का उपयोग करने के बजाय किसी विशिष्ट मशीन को मैन्युअल रूप से मेल करना चाहते थे, तो आप दो अलग-अलग प्रकार के शाब्दिक उपयोग कर सकते थे। पहले कोष्ठक में परिचित "बिंदीदार क्वाड" रूप था ("उपयोगकर्ता @ [172.30.154.249]")। दूसरा एक पाउंड चिह्न ("उपयोगकर्ता @ # 2887686905") के साथ उपसर्ग किए गए आईपी के दशमलव रूप का उपयोग कर रहा था।
उपरोक्त सभी सिर्फ IPv4 पते IPv6 पते पर कैसे काम करते हैं, इसके बारे में अपने ज्ञान का अनुवाद करने के लिए एक रूपरेखा प्रदान करने के लिए था। जैसे IPv4 एक 32 बिट नंबर है, वैसे ही IPv6 एड्रेस 128 बिट नंबर हैं। ARIN ने मेरी AWESOME कंपनी (**) को IP रेंज 2311: FD67 / 32 सौंपा। एक उदाहरण के साथ काम करने के लिए मैं IP 2311 का उपयोग करने जा रहा हूं: FD67 :: AC1E: 9AF9।
तो, यहाँ उस स्ट्रिंग का प्रतिनिधित्व करने वाला बिट स्ट्रिंग है:
00100011000100011111110101100111000000000000000000000000000000000000000000000000000000000000000010101100000111101001101011111001
यदि हम इन बिट स्ट्रिंग्स का प्रतिनिधित्व करते हैं जिस तरह से हम IPv4 बिट स्ट्रिंग्स करते हैं (प्रत्येक 1-बाइट चंक को दशमलव में परिवर्तित करें, प्रत्येक को एक अवधि के साथ अलग करें), हम निम्नलिखित प्राप्त करेंगे:
35.17.253.103.0.0.0.0.0.0.0.0.172.30.154.249
इसमें कुछ समस्याएं हैं। पहला यह है कि यह एक मज़ेदार IPv4 नंबर की तरह दिखता है, जो अच्छा नहीं है, आप उनके बीच अंतर करने का एक ठोस तरीका चाहते हैं। दूसरा यह है कि यह बहुत सारी जानकारी है, बहुत सी संख्या है, और बहुत सारी खाली जगह है। तो, दोनों समस्याओं को एक अलग सेपरेटर (कोलोन (:) के बजाय पीरियड (?)) के उपयोग द्वारा हल किया जाता है और दशमलव के बजाय हेक्साडेसिमल में बाइट्स को दोहराते हुए। जहाँ IPv4 ने 8-बिट चंक्स को अलग किया है, जो दशमलव में दर्शाया गया है, पीरियड्स के साथ, IPv6 16-बिट चंक्स को अलग करता है, जो कोलोन से अलग है। तो यहाँ हमारे IPv6 उदाहरण IP का टूटना है:
0010001100010001 = 2311
1111110101100111 = FD67
0000000000000000 = 0
0000000000000000 = 0
0000000000000000 = 0
0000000000000000 = 0
1010110000011110 = AC1E
1001101011111001 = 9AF9
2311:FD67:0:0:0:0:AC1E:9AF9
इसमें अभी भी बहुत सारे सफेद स्थान हैं, इसलिए एक भत्ता है कि शून्य के सबसे बड़े तार को एक डबल कोलन के साथ ommitted और प्रतिनिधित्व किया जा सकता है। तो, उपरोक्त आईपी लिखा जा सकता है:
2311:FD67::AC1E:9AF9
मैंने इसे बहुत अधिक नहीं देखा है, लेकिन जैसा कि मैं समझता हूं कि पिछले 32-बिट को एक पूर्वनिर्मित डॉटेड-क्वाड के रूप में लिखे जाने की अनुमति देने के लिए एक साफ-सुथरा सम्मेलन भी है, जब आप IPv4 से IPv6 पर प्रवास करते हैं तो विरासत के पतों की आसान पहचान के लिए अनुमति देते हैं । तो, जैसा कि आपने शायद देखा कि मेरा IPv6 उदाहरण पता उसी 32 बिट्स के साथ समाप्त होता है जिसमें पूरी तरह से मेरा IPv4 उदाहरण शामिल है। यह विशेष रूप से उपयोगी है जब आप इस शैली में लिखते हैं। उस स्थिति में, मेरा IPv6 Addr जैसा दिखेगा:
2311:FD67::172.30.145.249
IPv6 के साथ शुरू करने के लिए, जहां मैंने चारों ओर लूप करने के लिए, मैंने उल्लेख किया कि हमें 2311: FD67 / 32 सौंपा गया था। / 32 IPv4 पतों में जैसा है वैसा ही एक 32 मास्क है। इसका अर्थ है कि हम IPv4 पते में 128 बिट्स में से पहले 32 को स्टेटिकली असाइन कर चुके हैं। 2311 के बाद से: FD67 32 बिट्स है, इसका मतलब है कि उस सीमा से हमारे द्वारा बनाया गया हर आईपी पता उसी के साथ शुरू होगा।
दूसरा तरीका लगाने के लिए, जैसा कि 172.17 / 16 को "हर आईपी को 172.17.0.0 और 172.17.255.255 के बीच" माना जा सकता है, 2311: FD67 / 32 को "हर आईपी को 2311, FD67: 0: 0: 0 के रूप में माना जा सकता है। 0: 0: 0: 0 और 2311: FD67: FFFF: FFFF: FFFF: FFFF: FFFF: FFFF ”।
मुझे लगता है कि IPv6 की ओर पलायन शुरू करने से पहले यह एक लंबा समय होगा, लेकिन मुझे उम्मीद है कि यह स्पष्टीकरण आपको उनका उपयोग करने और उन्हें संदर्भित करने में अधिक सहज महसूस करने में मदद करेगा।
फिर, यह वास्तव में महत्वपूर्ण है कि मैं यहां जिस एकमात्र चीज के बारे में बात कर रहा हूं, वह शाब्दिक रूप से IPv6 पता कैसे लिखना है। लगता है रूटिंग आदि के लिए नंबरिंग स्कीम में बहुत सारी बुद्धिमत्ता का निर्माण किया गया है, कि मुझे वास्तव में अभी तक समझ नहीं है, इसलिए मैं अभी सभी को संबोधित कर सकता हूं कि यह कैसा दिखता है =)।
(*) मैंने पहले कुछ सॉफ्टवेयर डिबग में दशमलव IPv4 प्रतिनिधित्व देखा है, लेकिन मैं लगभग सकारात्मक हूं यह एक गलती या आलस्य था, मुझे लगता है कि सी कोड में 32bit पूर्णांक को प्रिंट करने की तुलना में यह बहुत जल्दी था जितना कि यह था मुद्रण के लिए एक बिंदीदार क्वाड प्रारूपित करें।
(**) मैंने अपनी कंपनी का नाम और उपसर्ग मुंग किया