क्या IPv4 पते का हिस्सा शून्य पर सेट होना मान्य है?


36

मैं एक जावा ईई एप्लिकेशन में बदलाव पर काम कर रहा हूं जो कि सर्वलेटरीसएस्ट.गेटरेमोटएडड्र का उपयोग करके उपयोगकर्ता के आईपी पते के आधार पर प्रमाणित होगा । हम एक डेटाबेस में IP पता पर्वतमाला (FROM_IP और TO_IP) को स्टोर करते हैं और सिस्टम केवल तभी प्रमाणित करेगा जब उपयोगकर्ता का IP पता किसी श्रेणी में आता है।

अब, परीक्षकों ने बताया है कि FROM_IP और TO_IP मान (किसी भी स्थान पर) में अंक 0 (शून्य) की अनुमति नहीं दी जानी चाहिए। ध्यान दें कि यह एक इंटरनेट का सामना करने वाला एप्लिकेशन है, और इसलिए हम केवल सार्वजनिक आईपी पते प्राप्त करेंगे।

क्या परीक्षक उस मान्यता का सुझाव देने में सही हैं? हम रेंज वैल्यू में 167.23.0.1 - 167.23.255.255 जैसे शून्य क्यों नहीं कर सकते हैं?


11
और यहाँ सबनेटिंग कैसे काम करता है के लिए अनिवार्य लिंक है ? सवाल।

8
मुझे यह आश्चर्यचकित करता है कि आपके परीक्षक इसे लाते हैं, जब एक आईपीवी 6 पते में एक दर्जन 0 हो सकते हैं। यदि आप बहुत देर नहीं करते हैं तो PS आपको वास्तव में अपना IP पता फ़ील्ड फिट IPv6 पते बनाने चाहिए। आप भविष्य में खुद को सिरदर्द से बचाएंगे।
मार्क हेंडरसन

2
127.0.0.1 में दो शून्य हैं?
जॉन स्मिथ

1
वैसे, whatismyipaddress.com पर अपना खुद का आईपी एड्रेस दिखा रहा है, इसमें 0 (67.xx.0.xx)
रितेश

1
यहां समान प्रश्न: क्या XYZ0 एक वैध आईपी पता है?
11

जवाबों:


70

नहीं, वे पूरी तरह से गलत हैं।

वास्तव में, यह एक मान्य आईपी पता है: 192.168.24.0

जैसा है 167.23.0.1

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

कंप्यूटर के लिए जो मायने रखता है वह है अलगाव (नेटमैस्क)। यह पूरी तरह से 0 या 1 पर सेट पते के होस्ट सेक्शन के साथ होस्ट एड्रेस रखने के लिए मान्य नहीं है।

इसलिए, 192.168.24.0 जब तक नेटमास्क ऐसा है कि कुछ बिट्स होस्ट भाग में सेट हो जाते हैं। निम्नलिखित गणना देखें:


michael@challenger:~$ ipcalc 192.168.24.0/16
Address:   192.168.24.0         11000000.10101000. 00011000.00000000
Netmask:   255.255.0.0 = 16     11111111.11111111. 00000000.00000000
Wildcard:  0.0.255.255          00000000.00000000. 11111111.11111111
=>
Network:   192.168.0.0/16       11000000.10101000. 00000000.00000000
HostMin:   192.168.0.1          11000000.10101000. 00000000.00000001
HostMax:   192.168.255.254      11000000.10101000. 11111111.11111110
Broadcast: 192.168.255.255      11000000.10101000. 11111111.11111111
Hosts/Net: 65534                 Class C, Private Internet

इस स्थिति में, पता भाग (दाईं ओर) में 2 बिट्स सेट होते हैं। यह 192.168.0.0/16 सबनेट में एक मान्य होस्ट पता है।


michael@challenger:~$ ipcalc 192.168.24.255/16
Address:   192.168.24.255       11000000.10101000. 00011000.11111111
Netmask:   255.255.0.0 = 16     11111111.11111111. 00000000.00000000
Wildcard:  0.0.255.255          00000000.00000000. 11111111.11111111
=>
Network:   192.168.0.0/16       11000000.10101000. 00000000.00000000
HostMin:   192.168.0.1          11000000.10101000. 00000000.00000001
HostMax:   192.168.255.254      11000000.10101000. 11111111.11111110
Broadcast: 192.168.255.255      11000000.10101000. 11111111.11111111
Hosts/Net: 65534                 Class C, Private Internet

इस स्थिति में, पता भाग में 10 बिट सेट और 6 बिट्स परेशान हैं। यह एक ही सबनेट में एक और मान्य होस्ट पता है।


michael@challenger:~$ ipcalc 192.168.24.0/24
Address:   192.168.24.0         11000000.10101000.00011000. 00000000
Netmask:   255.255.255.0 = 24   11111111.11111111.11111111. 00000000
Wildcard:  0.0.0.255            00000000.00000000.00000000. 11111111
=>
Network:   192.168.24.0/24      11000000.10101000.00011000. 00000000
HostMin:   192.168.24.1         11000000.10101000.00011000. 00000001
HostMax:   192.168.24.254       11000000.10101000.00011000. 11111110
Broadcast: 192.168.24.255       11000000.10101000.00011000. 11111111
Hosts/Net: 254                   Class C, Private Internet

इस स्थिति में, पता भाग में शून्य बिट सेट है। यह 192.168.24.0/24 नेटवर्क में एक मान्य होस्ट पता नहीं है।


11
मैं इस उत्तर पर कूदूंगा, जो सही है, एक अतिरिक्त बिंदु जोड़ने के लिए: आईपी पते के लिए "बिंदीदार क्वाड" प्रारूप, जबकि विहित, केवल प्रतिनिधित्व प्रारूप नहीं है। कमांड का प्रयास करें ping 2130706432, या ping 017700000001(हां, विंडोज पर भी)। आप अपने आप को परिणामों से आश्चर्यचकित हो सकते हैं।
BMDan


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

1
192.168.0.257गलत है, लेकिन (जैसा है ) 192.168.257का सही प्रतिनिधित्व 192.168.1.1है 192.11010305। देख लो inet_aton(3)
BMDAN

2
@ राफेल: सबनेट शून्य वास्तव में क्लासिफुल रूटिंग दिनों से एक होल्डओवर था। जब आपने कहा था, एक क्लास बी नेटवर्क (129.97.0.0/16) शून्य सबनेट 17 बिट्स के साथ कोई भी नेटवर्क होगा → एक्स सभी शून्य पर सेट होता है (जहां एक्स सबनेट की लंबाई है)। तो नेटवर्क 129.97.0.0/24 एक शून्य सबनेट होगा और शुरुआती दिनों में अस्वीकृत हो जाएगा। आजकल (शुक्र है) हम CIDR का उपयोग करते हैं और इस बारे में चिंता नहीं करते हैं।
मिकीबी

16

जब तक मैं गलत समझ रहा हूं, आपके परीक्षक गलत हैं। वैध आईपी पते निश्चित रूप से उनमें 0 हो सकते हैं।


12

सामान्य तौर पर: नहीं, इससे कोई फर्क नहीं पड़ता कि पते में 0 है या नहीं।

हालाँकि, आपके परीक्षकों द्वारा कही गई बातों में सच्चाई है। कुछ मामलों में पुराने या टूटे हुए नेटवर्क उपकरण अंतिम अष्टक में 0 वाले पतों पर सही ढंग से काम नहीं करेंगे। यह पुराने क्लासफुल रूटिंग नियमों के कारण है। Classfull रूटिंग में, आप पता के पहले ऑक्टेट से नेटमास्क बता सकते हैं। यदि उपकरण अभी भी क्लासफ़ुल रूटिंग नियमों का पालन करते हैं, तो यह 200.100.1.0/16 जैसे पते को गलत तरीके से संभालने की संभावना है।


3

मान लें कि आपको एक सीमा में 510 आईपी एड्रेन्स की आवश्यकता है और आपका नेटवर्क एड्रेस 192.1.1.0 है, आपके पास एक / 23 सबनेट होगा, जिसमें से एक आपके होस्ट आईपी का .0 आईपी एड्रेस है, आपके टेस्टर गलत हैं अगर .0 एड्रेस एक मेजबान का पता है। यदि आपके पास / 24 नेटवर्क है, तो यह कहना सही होगा कि यह गलत था।


2

एक बहुत ही सरल उत्तर प्रदान करने के लिए: एक या एक से अधिक ज़ीरो आईपी पते में होस्ट पते के लिए पूरी तरह से मान्य हैं जब तक कि वे पते नेटवर्क या प्रसारण पते नहीं हैं।

नेटवर्क और प्रसारण पते मान्य आईपी पते हैं, वे केवल मेजबानों द्वारा उपयोग करने योग्य नहीं हैं।


1
XY0.255 के प्रसारण पते के बारे में क्या?
यादृच्छिक 832

2
आप होस्ट के लिए नेटवर्क पते का उपयोग कर सकते हैं, और ऐसा करना कभी "लेटनेस" का एक सामान्य परीक्षण था। शुक्र है, हालांकि, यह अच्छी तरह से प्रचलन से बाहर हो गया है। एक समान नस में, RFC 3021/31 में "प्रसारण" और "नेटवर्क" दोनों के पते का उपयोग करने की अनुमति देता है , हालाँकि यह शब्द यकीनन कुछ हद तक अनुपयुक्त हैं जब आप केवल दो मेजबानों के साथ शुरू करने के लिए काम कर रहे हैं।
BMDAN
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.