रूट सारांश: मार्ग सारांश को धैर्यपूर्वक कैसे प्राप्त करें। (वीएलएसएम, सीआईडीआर)


1

मैं सारांश मार्गों की गणना करने के लिए एक स्मार्ट और छोटे तरीके की तलाश कर रहा हूं। (CIDR, मार्ग संक्षेप)

मैं सारांश, सुपरनेट, वीएलएसएम, सीआईडीआर आदि के विषय के साथ सामान्य हूं, लेकिन परिणाम प्राप्त करने के लिए मैं हमेशा सभी आईपी पते को द्विआधारी प्रारूप में परिवर्तित नहीं करना चाहता हूं।
Im बहुमूल्य समय को बचाने के लिए एक स्मार्ट तरीके की तलाश कर रहा है।
उदाहरण 3 पर मुख्य प्रश्न

उदाहरण 1: मान लें
कि हमारे पास ये दो आईपी पते हैं:

  • 172.16.64.0/23
  • 172.16.66.0/23

मैं तुरंत देख सकता हूं कि सारांश मार्ग 172.16.64.0/22 होगा ।
मैं देखता हूं कि मैं 2 सबनेट का उपयोग कर रहा हूं -> यह 1 बिट है -> मैं / 23 = 22 से 1 बिट घटाता हूं

बाइनरी प्रारूप में:
172.16.64.0 - - -> 10101100.00010000.01000000.00000000
172.16.66.0 - - -> 10101100.00010000.01000000.00000000

22 बाएँ-सबसे मेल खाते बिट्स / / 22
जब इन आईपी पते के अनुसार परिणाम
172.16.64.0 है - - -> 10101100.00010000.0100000000.00000000

वोइला यह परिवर्तित किए बिना काम कर रही है :)

example2:

  • 192.168.4.192/29
  • 192.168.4.200/29
  • 192.168.4.208/29
  • 192.168.4.216/29

इन आईपी पर एक संक्षिप्त नज़र, मैं 4 सबनेट्स देखता हूं, जो 2 बिट्स हैं। (2 से घटाना / 29)
इसलिए मेरा अनुमान 192.168.4.192/27 है

192.168.4.192 - - -> 10000000.10101000.00000100.11000000
192.168.4.200 - - -> 10000000.10101000.00000100.11001000
192.168.4.208 - -> 10000000.10101000.00000100.11010000
192.168.4.216 - - -> 10000000.10101000.00000100.1001000।

27 बाएं-सबसे मिलान वाले बिट्स = / 27
जब और जब-इन आईपी पते परिणाम है:
192.168.4.192 - - -> 10000000.10101000.00000100.11000000

वोइला, हमें 192.168.4.192/27 मिला है। तो लगता है यह काम कर रहा है।

उदाहरण 3:
(लेकिन) क्या होगा अगर हमारे पास विषम संख्याएँ और भिन्न सबनेटमैक्स हैं (जैसे नीचे दिए गए उदाहरण में)
मैं तुरंत मार्ग सारांश कैसे प्राप्त कर सकता हूँ? (बाइनरी में कनवर्ट किए बिना?)

  • 192.168.6.000/27 (10000000.10101000.00000110.00000000)
  • 192.168.6.064/27 (10000000.10101000.00000110.01000000)
  • 192.168.6.128/26 (10000000.10101000.00000110.10000000)
  • 192.168.6.160/26 (10000000.10101000.00000110.10100000)
  • 192.168.6.192/28 (10000000.10101000.00000110.11000000)
  • 192.168.6.208/28 (10000000.10101000.00000110.11010000)
  • 192.168.6.224/30 (10000000.10101000.00000110.11100000)
  • 192.168.6.228/30 (10000000.10101000.00000110.11100100)
  • 192.168.6.232/30 (10000000.10101000.00000110.11101000)

एक बार इसे परिवर्तित करने के बाद यह देखना आसान है, कि यह 24 बाएं-सबसे मिलान वाले बिट्स हैं / = 24
लेकिन क्या केवल IP या मास्क से सारांश मार्ग को खोजने का तरीका छोड़ना है?

Example4: यह उदाहरण एक छोटा सा मतलब है, क्योंकि यह उदाहरण 1 के मेरे विचार को भंग कर देता है :

  • 192.168.1.0/24 - 11000000.10101000.00000001.00000000
  • 192.168.2.0/24 - 11000000.10101000.00000010.00000000

परिणाम 192.168.0.0/22 ​​है।
हालांकि, मैं यह नहीं बता सका कि विशेष रूप से यह अब क्यों काम नहीं कर रहा है।

मुझे उम्मीद है कि इस मंच में कुछ स्मार्ट लोग हैं जो मुझे काम करने का हल खोजने में मदद कर सकते हैं। :)
अग्रिम धन्यवाद

जवाबों:


1

मैं बाइनरी में कनवर्ट किए बिना रूट सारांश पतों की गणना करने की एक बहुत ही सरल विधि के साथ आया हूं। अनिवार्य रूप से आप केवल संख्याओं को बिट मानों से तुलना करते हैं और निर्धारित करते हैं कि क्या वे प्रत्येक बिट पर मेल खाते हैं।

उदाहरण 1।

192.168.1.160/30

192.168.1.164/29

192.168.1.172/29

192.168.1.180/30

आप संक्षेप में लिए जाने वाली सीमा से उच्चतम और निम्नतम संख्या लेकर शुरू करते हैं।

160, 180।

फिर उनकी तुलना बाईं ओर से शुरू होने वाले बिट वैल्यू से करें।

१२ 32 ६४ ३२ १६ 64 ४ २ १

क्योंकि दोनों संख्या 128 से बड़ी हैं, वे दोनों उस बिट पर मेल खाते हैं और उस बिट पर एक का मान है।

१२ 32 ६४ ३२ १६ 64 ४ २ १

1

फिर अगले बिट का मान (128 + 64 = 192) जोड़ें और निर्धारित करें कि क्या दोनों संख्याएं उस मूल्य से अधिक या कम हैं। क्योंकि 160 और 180 दोनों 192 से कम हैं, वे दोनों उस बिट पर मेल खाते हैं और दोनों का उस बिट के लिए 0 का मान है।

१२ 32 ६४ ३२ १६ 64 ४ २ १

१ ०

अब क्योंकि दोनों संख्याएं 192 से कम थीं, आप 32 के अगले बिट मान में 128 जोड़ते हैं और 64 के बिट मान की अवहेलना करते हैं। (128 + 32 = 160) क्योंकि 160 और 180 दोनों 160 से अधिक हैं, वे दोनों उस बिट पर मेल खाते हैं और दोनों उस बिट के लिए 1 का मान है।

१२ 32 ६४ ३२ १६ 64 ४ २ १

१ ० १

अब सारांश पते के संचित मूल्य को 16 के अगले बिट मान (128 + 32 = 160 + 16 = 176) में जोड़ें क्योंकि 160 से कम है और 180 176 से अधिक है, वे इस बिट पर एक अलग मूल्य रखते हैं इस बिट के लिए सारांश पते में शामिल नहीं है।

१२ 32 ६४ ३२ १६ 64 ४ २ १

1 0 1 xxxxx

इसलिए आप देख सकते हैं कि इस उदाहरण के लिए मार्ग सारांश पता 192.168.1.160/27 है

मैं यहाँ एक और उदाहरण देता हूँ लेकिन एक बार जब आप इसे लटका लेते हैं तो आप अपने सिर में बहुत जल्दी सारांश पते निकाल सकते हैं।

उदाहरण 2

172.16.146.0/24

172.16.147.0/23

172.16.149.0/23

172.16.151.0/24

बिट मान: 128 64 32 16 8 8 2 1

उदाहरण में उच्चतम और निम्नतम संख्या को देखते हुए, 146 + 151, क्या वे दोनों 128 के पहले बिट मूल्य से अधिक या कम हैं। वे दोनों उच्च हैं इसलिए यह बिट 1 के मान से मेल खाता है।

१२ 32 ६४ ३२ १६ 64 ४ २ १

1

अगले बिट मान (128 + 64 = 192) को जोड़ने पर वे 192 से अधिक या कम होते हैं? वे दोनों कम हैं इसलिए इस बिट में दोनों के लिए 0 का मिलान मूल्य है।

१२ 32 ६४ ३२ १६ 64 ४ २ १

१ ०

१२ (१२५ + ३२ = १६०) के संचित सारांश मूल्य में ३२ के अगले बिट मूल्य को जोड़कर आप १४६ और १५१ दोनों को १६० से कम देख सकते हैं, इसलिए इस बिट में दोनों बिट्स के लिए ० का मिलान मूल्य है।

१२ 32 ६४ ३२ १६ 64 ४ २ १

१ ० ०

128 (128 + 16 = 144) के संचित सारांश मूल्य में 16 के अगले बिट मूल्य को जोड़कर आप देख सकते हैं कि 146 + 151 दोनों 144 से अधिक हैं, इसलिए इस बिट का मिलान मूल्य 1 है।

१२ 32 ६४ ३२ १६ 64 ४ २ १

१ ० ० १

144 (128 + 16 = 144 + 8 = 152) के संचित सारांश मूल्य में 8 के अगले बिट मूल्य को जोड़कर आप देख सकते हैं कि दोनों संख्या 152 से कम हैं इसलिए दोनों संख्या 0 के मान के साथ इस बिट पर अभी भी मेल खाती हैं।

१२ 32 ६४ ३२ १६ 64 ४ २ १

१ ० ० १ १ ०

144 (128 + 16 = 144 + 4 = 148) के संचित सारांश मूल्य में 4 के अगले बिट मूल्य को जोड़कर आप देख सकते हैं कि 146 कम है और 151 148 से अधिक है, इसलिए यह बिट मेल नहीं खाता है और इसका हिस्सा नहीं है मार्ग सारांश पता।

१२ 32 ६४ ३२ १६ 64 ४ २ १

1 0 0 1 0 xxx

इसलिए इस उदाहरण का उत्तर 172.16.144.0/21 है

आपके पहले उदाहरण में (उदाहरण 3)

192.168.6.000/27

192.168.6.064/27

192.168.6.128/26

192.168.6.160/26

192.168.6.192/28

192.168.6.208/28

192.168.6.224/30

192.168.6.228/30

192.168.6.232/30

केवल उच्चतम और निम्नतम संख्या 0 + 232 को देखें, एक 128 से अधिक है और एक कम है जिसके लिए आपको आगे देखने की आवश्यकता नहीं है या किसी और चीज़ की गणना करने की आवश्यकता है, 128 के मान के साथ पहला बिट मेल नहीं खाता है और भाग नहीं है सारांश पते का।

कुछ रेंज दूसरों की तुलना में आसान हैं, लेकिन मुझे यह बहुत तेज़ तरीका लगता है, इसलिए उम्मीद है कि आप इसे मददगार भी पाएंगे।

Aoibheann


0

आपकी समस्या यह है कि आप उनके मूल्य के आधार पर संख्याओं की तुलना करना चाहते हैं, उनका उपयोग करके कि वे कैसे प्रतिनिधित्व और समूहीकृत किए जा रहे हैं। सादे अंग्रेजी में, आप चीनी भाषा बोलकर जर्मन से फ्रेंच अनुवाद करने की कोशिश कर रहे हैं । जबकि विभिन्न शब्दों का उपयोग एक ही अवधारणा को पहचानने के लिए किया जा सकता है, फिर भी आपको सीधे अनुवाद करने की आवश्यकता है ।

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

हालाँकि, यदि आप संख्यात्मक क्रम में IP संख्याओं को सूचीबद्ध करते हैं, तो आप उन दो संख्याओं के लिए एक सामान्य उपसर्ग के साथ आने के लिए पहले की तुलना दूसरे से कर सकते हैं। प्रत्येक अतिरिक्त संख्या के लिए, अगले संख्या के साथ पिछले उपसर्ग की तुलना करें , जब तक कि आप उन सभी की तुलना न करें और अंतिम उपसर्ग पर पहुंचे। लेकिन आप अभी भी अपने सिर में एक द्विआधारी रूपांतरण करने जा रहे हैं।

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