सवाल आईपी ​​पते के साथ और बिना शून्य शून्य के हैं?


मेरे पास एक सुरक्षा प्रणाली है और नेटवर्क सेटिंग केवल तीन अंकों के आईपी पते की अनुमति देती है। मैं इसे सेट नहीं कर सकता 192.168.2.100, इसके बजाय मुझे उपयोग करना है 192.168.002.100

क्या ये दो आईपी पते अलग हैं? क्या मुझे अपने राउटर के लैन को सभी को सेट करने की ज़रूरत है 192.168.xxx.xxx सही तरीके से काम करने के लिए? मुझे इसके बारे में कोई ठोस जानकारी नहीं मिल रही है।


83
2017-12-28 02:45


मूल


नीचे दिए गए उत्तरों के जवाब में, 1 9 2.168.020.100 चाहिए नहीं 1 9 2.168.20.100 के समान हो, लेकिन यह हो सकता है वही हो अगर आपका सिस्टम केवल आईपी को इस तरह से प्रवेश करने की इजाजत देता है (मैंने इसे कॉपियर के साथ देखा है जब आईपी को ऊपर-नीचे-तीरों के साथ अंकों से अंक दर्ज किया जाता है)। - यदि आपके सिस्टम में "सामान्य" कीबोर्ड इनपुट संभव होने पर भी क्विर्क है (यानी, आप कर सकते हैं तकनीकी इनपुट 192.168.2.100, लेकिन यह शिकायत करता है), तो मेरा सुझाव है कि आपके पास विक्रेता के साथ एक शब्द है (यदि सुरक्षा इनपुट इतना क्रोधित है तो सुरक्षा प्रणाली कितनी भरोसेमंद है?) - Hagen von Eitzen
यह वास्तव में काफी विचित्र सत्यापन है। मैं सुरक्षा प्रणालियों को स्विच करूँगा, क्योंकि @ हेगन ने संकेत दिया है। - Lightness Races in Orbit
यह सॉफ़्टवेयर विशिष्ट भी हो सकता है। वे अग्रणी के साथ या बिना मान्य हैं 0एस, लेकिन मैंने कुछ अनुप्रयोगों में भाग लिया है जो एक आईपी पते का समर्थन नहीं कर रहे हैं जिसमें प्रत्येक ऑक्टेट में 3 अंक नहीं थे। - ps2goat
सभी आईपी (v4) पते वास्तव में 32 बिट्स एक अच्छे तरीके से प्रदर्शित होते हैं। अगर 192.168.002.100 यह है कि आपका उपकरण कैसे दर्शाता है 0xc0a80264/3232236132 /192.168.2.100, तो यह वही बात है। - Tim S.
क्या आप कृपया एक और जवाब स्वीकार कर सकते हैं? जिसे आपने स्वीकार किया वह वास्तव में गलत है (या कम से कम अधूरा) और इसमें 11 डाउनवॉट हैं। - Arjan


जवाब:


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

उदाहरण के लिए 192.168.0.1 डॉट-बाइनरी मान 11000000.10101000.00000000.00000001 का केवल अनुकूल डॉट-दशमलव नोटेशन है।

चाहे आप इसे 1 9 2.168.0.1 या 1 9 2.168.000.001 के रूप में टाइप करें, वे दोनों 11000000.10101000.00000000.00000001 के बराबर हैं


64
2017-12-28 02:56



डॉट्स सुविधा के लिए भी हैं; वास्तविक आईपी 11000000101010000000000000000001 है - cpast
@cpast या हेक्साडेसिमल संख्या के रूप में: C0A80001 - jfs
या ऑक्टल संख्या के रूप में (0 से शुरू, बिंदुओं के साथ या बिना) उदा। 1 9 2.168.2.100 के लिए 0300.0250.2.0144 पिंग - Sergey
या एक दशमलव संख्या के रूप में 3232235521 - oldmud0
@ ग्रीनस्टोन वाल्कर के जवाब के रूप में, कई कार्यक्रम उन्हें समान रूप से नहीं समझेंगे; एक अग्रणी शून्य के साथ एक संख्या (जिसमें अंक 8 या 9 नहीं होते हैं) को ऑक्टल-नोटेशन नंबर के रूप में समझा जाएगा; इसलिए 010.000.001.063 को "8.0.1.51" (octal 010 = दशमलव 8; octal 063 = दशमलव 51) के रूप में "10.0.1.63" के बजाय व्याख्या किया जाएगा! - Doktor J


यह उपकरण पर निर्भर करता है।

ज्यादातर उद्देश्यों के लिए दोनों एक जैसे होंगे, लेकिन हमेशा नहीं।

उदाहरण के लिए, यदि आप एक शून्य से शुरू होने वाले 3-अंक संख्या का उपयोग करते हैं (या शून्य से शुरू होने वाले दो अंकों वाले, धन्यवाद @ डाइट्रिच-एपीपी), तो पिंग मान लेगा कि संख्याएं ऑक्टल हैं।

Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.

C:\Users>ping 011.012.013.014

Pinging 9.10.11.12 with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.

Ping statistics for 9.10.11.12:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),

99
2017-12-28 04:08



इतना पिंग नहीं है, लेकिन अंतर्निहित दिनचर्या इसका उपयोग करता है inet_addr() - cde
यह ओएसएक्स पर भी हो रहा है। - Johann Philipp Strathausen
ऐसा इसलिए नहीं है क्योंकि इसमें तीन अंक हैं, ऐसा इसलिए है क्योंकि संख्या में अग्रणी शून्य है। आप 09.0 9.0 9.0 9 को पिंग करने का प्रयास करके इसका परीक्षण कर सकते हैं, जो काम नहीं करता है क्योंकि 9 ऑक्टल में मान्य नहीं है। - Dietrich Epp


यह दिए गए पते को पार्स करने के लिए किसी दिए गए प्रोग्राम का उपयोग करने वाले टूल या फ़ंक्शंस पर निर्भर करता है। माइक्रोसॉफ्ट और लिनक्स के साथ-साथ अन्य ओएस दोनों एक का उपयोग करते हैं POSIX संगत inet_addr() पार्सिंग पते के लिए नियमित।

पिंग और एफ़टीपी जैसे कई टीसीपी / आईपी प्रोग्राम आईपी एड्रेस स्ट्रिंग्स को 4-बाइट पतों में अनुवाद करने के लिए inet_addr () सॉकेट फ़ंक्शन का उपयोग करते हैं। यह फ़ंक्शन मानक दशमलव, ऑक्टल और हेक्साडेसिमल नोटेशन में एक आईपी पता स्वीकार करता है।
  माइक्रोसॉफ्ट केबी 115388 पिंग और एफ़टीपी अग्रणी शून्य के साथ अस्थायी के रूप में आईपी पता हल करें

Inet_addr () फ़ंक्शन नेटवर्क होस्ट बाइट ऑर्डर में बाइनरी डेटा में IPv4 संख्या-और-डॉट्स नोटेशन से इंटरनेट होस्ट एड्रेस सीपी को परिवर्तित करता है।

उपरोक्त सभी रूपों में, बिंदीदार पते के घटकों को दशमलव, ऑक्टल (एक अग्रणी 0 के साथ), या हेक्साडेसिमल, एक अग्रणी 0 एक्स के साथ निर्दिष्ट किया जा सकता है)। इनमें से किसी भी रूप में पते सामूहिक रूप से समझा जाता है आईपीवी 4 संख्या-और-बिंदु नोटेशन। वह फॉर्म जो वास्तव में चार दशमलव संख्याओं का उपयोग करता है उसे आईपीवी 4 बिंदीदार-दशमलव नोटेशन (या कभी-कभी: आईपीवी 4 बिंदीदार-क्वाड नोटेशन) के रूप में जाना जाता है।
inet_addr (3): इंटरनेट पता दिनचर्या बदलता है - लिनक्स मैन पेज

इस प्रकार, आपके विशिष्ट सिस्टम को प्रत्येक ऑक्टेट के लिए तीन अंकों के दशमलव नोटेशन की आवश्यकता हो सकती है, लेकिन यह सार्वभौमिक नहीं है, और उचित आईपी पता दर्ज करने के लिए सावधानी बरतनी चाहिए।

बेशक, प्रत्येक प्रकार के लिए केवल वैध संख्या ही काम करेगी। रेंज ऑक्टल, हेक्स या दशमलव संख्या से बाहर भी असफल हो जाएंगे या समस्याएं पैदा होंगी। ऑक्टल 088, हेक्स 0xGG, या दशमलव 280 सभी अमान्य उदाहरण हैं।


35
2017-12-28 17:42



अंतर्निहित समारोह के लिए +1। जोड़ने के लिए, यह फ़ंक्शन आईपी पार्सिंग विफल होने का कारण बनता है यदि वैध बाइट (उदाहरण के लिए .88) शून्य-गद्देदार है, क्योंकि 8 ऑक्टल में मान्य संख्या नहीं है। - March Ho
विंडोज एक्सपी (और उससे पहले) में फ़ंक्शन अमान्य ऑक्टल संख्या स्वीकार करेगा और फिर भी उन्हें बदलने का प्रयास करेगा। यह बहुत ही स्पष्ट व्यवहार का कारण बन सकता है। Vista के रूप में अमान्य संख्याओं को डोमेन नाम के रूप में माना जाता है और Windows इनके लिए DNS लुकअप करने का प्रयास करेंगे। जो भी बहुत अजीब व्यवहार है, लेकिन कम से कम किसी भी समस्या का कारण नहीं होगा। - Tonny
@tonny ऐसा इसलिए है क्योंकि POSIX inet_addr () अमान्य मानों के लिए -1 देता है, जो लगभग 255 तक चलता है। लिनक्स मैन पेज में उल्लिखित नई रूटीन में बेहतर त्रुटि हैंडलिंग है। - cde
@cde मैंने inet_addr () के यांत्रिकी में गहराई से डूबने के लिए कभी भी परेशान नहीं किया। इसके लिए मुझे आप के शब्दों पर भरोसा है :-) - Tonny


जैसा कक्षा में लाइटनेस दौड़ और दूसरों ने ध्यान दिया है,

INET(3) मैन पेज वर्णन करता है inet_addr तथा inet_aton, "आईपीवी 4 नंबर-एंड-डॉट्स नोटेशन बाइनरी फॉर्म में कनवर्ट करने के लिए उपयोग किए जाने वाले मानक फ़ंक्शन"। इसे कहते हैं

... बिंदीदार पते के घटक दशमलव में निर्दिष्ट किया जा सकता है, ऑक्टल (एक अग्रणी 0 के साथ), या हेक्साडेसिमल, एक अग्रणी 0 एक्स के साथ)।

तो तकनीकी रूप से, नहीं, अग्रणी शून्य के साथ एक आईपी पता (हमेशा) अग्रणी शून्य के बिना एक जैसा नहीं है। हालांकि आपके मामले में, 192.168.2.100 तथा 192.168.002.100 समान हैं, क्योंकि 002 == 2

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


12
2017-12-30 08:18



विचार है कि "अग्रणी शून्य" की आवश्यकता है (कुछ उपकरणों पर) विवाद में प्रतीत नहीं होता है; "गलत-आवश्यक" / "टूटा हुआ" कहने का आधार क्या है? चूंकि यह आईएनईटी (3) / inet_addr / inet_aton का उल्लंघन करता है? ऐसे शून्यों की आवश्यकता वाले कार्यान्वयन की संभावना अन्य कोड का उपयोग कर सकती है जो ठीक से संवाद कर सकती है, इसलिए "टूटा" नहीं है। (मैंने प्रिंटर को यह किया है।) क्या यह कहना एक आधार है कि आईएनईटी (3) मैन पेज अन्य आधिकारिक दस्तावेजों की तुलना में अधिक "सही" / अधिक आधिकारिक संसाधन है, जैसे कि आरएफसी और अन्य द्वारा उद्धृत यह मसौदा दस्तावेज? - TOOGAM


कुछ कार्यान्वयन प्रमुख शून्यों के साथ ऑक्टेट्स पर विचार करते हैं जो दशमलव अन्य कार्यान्वयन के लिए उन्हें ऑक्टल मानते हैं। जब तक ऑक्टेट 0 से 7 तक की सीमा में है, इससे कोई फर्क नहीं पड़ता है। तो उदाहरण के लिए होगा 192.168.002.100 के रूप में व्याख्या की जानी चाहिए 192.168.2.100 दोनों कार्यान्वयन में।

लेकिन अगर आप एक पते में टाइप करना चाहते थे 192.168.010.100 इसे या तो समझा जा सकता है 192.168.10.100 या 192.168.8.100 कार्यान्वयन के आधार पर। यह भी असंभव नहीं है कि कार्यान्वयन मौजूद है, जो प्रमुख शून्यों को वाक्यविन्यास त्रुटि मानने पर विचार करेगा। इसके अतिरिक्त, ऐसे परिदृश्य हैं जिनमें सॉफ़्टवेयर जोर दे सकता है कि आपको एक कारण या किसी अन्य कारण के लिए कैननिकल प्रतिनिधित्व का उपयोग करना होगा। उन सभी कारणों से, जब आप एक आईपी पता लिखते हैं तो मैं अग्रणी शून्य से बचने की सलाह देता हूं।

यदि आप ऐसे सॉफ़्टवेयर लिखते हैं जिन्हें किसी आईपी पते को पार्स करने की आवश्यकता होती है, तो मैं अग्रणी शून्य को स्वीकार करने की अनुशंसा करता हूं, लेकिन ऐसा होने पर उचित स्थान पर चेतावनी आउटपुट करता है।

थोड़ा सा संबंधित कार्यान्वयन हैं जो आपको बिंदीदार नोटेशन में चार से कम घटकों की अनुमति देता है। जब चार से कम घटक होते हैं तो अंतिम घटक में 8 बिट से अधिक होते हैं और पहले के घटकों में बिल्कुल 8 बिट होते हैं। उदाहरण के लिए 192.168.612 वास्तव में लिखने का एक वैध तरीका होगा 192.168.2.100। लेकिन फिर उस नोटेशन का उपयोग करने की सिफारिश नहीं की जाती है।


5
2017-12-30 18:54





बस एक छोटी सी युक्ति: कुछ मामलों में आईपी पते में शून्य उपसर्ग का उपयोग करना महत्वपूर्ण है। एक उदाहरण, अपाचे है। Htaccess नियमों से इनकार करते हैं।

यदि आप कुछ ऐसा उपयोग करते हैं

deny from 11.22.33.22

अपाचे इतना बेवकूफ है जो निम्नलिखित आईपी से भी अवरुद्ध करेगा:

111.22.33.22

11.22.33.221

211.22.33.221

और सामान्य रूप से, कोई भी आईपी पता जो शामिल 11.22.33.22

इसलिए, यह सुनिश्चित करने के लिए कि आप किसी भी आईपी को अवरुद्ध नहीं करेंगे जिसका आप ब्लॉक करने का मतलब नहीं रखते थे, आपको इसका उपयोग करना चाहिए:

deny from 011.022.033.022

यह सुनिश्चित करने के लिए कि अपाचे केवल 11.22.33.22 आईपी पते से पहुंच को अवरुद्ध कर देगा।


0
2018-01-18 06:27



दिलचस्प। क्या आप इसके लिए एक संदर्भ प्रदान कर सकते हैं? - Scott
प्रमुख ज़ीरो का उपयोग न करने के परिणामस्वरूप कई आगंतुकों को अवरुद्ध करने के बाद संदर्भ व्यक्तिगत अनुभव और कई परीक्षण और त्रुटियां हैं। गलत प्रतिबंध से बचने का एक और तरीका सीआईडीआर प्रारूप में आईपी का उपयोग करना है। उदाहरण के लिए, 11.22.33.22 के बजाय 11.22.33.22/32 - Nick Gar


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

विंडोज़ और लिनक्स के साथ अपने अनुभव से यह उपकरण निर्भर नहीं है लेकिन ओएस निर्भर करता है ऐसा लगता है क्योंकि मैं 10.08.03.100 जैसे आईपीएस का उपयोग कर कुछ समस्या में चल रहा हूं:

  • नोट: "10.08.0.1" और 10.09.0.1 नहीं मिला
  • नोट: "10.010.0.1" 10.8.0.1 को हल किया गया है

linux / debian7 / 8: उपकरण "पिंग" और "स्नैम्पेट" के साथ एक ही परिणाम

user@test:~$ ping 10.7.0.1
PING 10.7.0.1 (10.7.0.1) 56(84) bytes of data.
^C
--- 10.7.0.1 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

user@test:~$ ping 10.07.0.1
PING 10.07.0.1 (10.7.0.1) 56(84) bytes of data.
^C
--- 10.07.0.1 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

user@test:~$ ping 10.8.0.1
PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data.
^C
--- 10.8.0.1 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

user@test:~$ ping 10.08.0.1
**ping: unknown host 10.08.0.1**
user@test:~$ ping 10.9.0.1
PING 10.9.0.1 (10.9.0.1) 56(84) bytes of data.
^C
--- 10.9.0.1 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

user@test:~$ ping 10.09.0.1
ping: unknown host 10.09.0.1
user@test:~$ ping 10.10.0.1
PING 10.10.0.1 (10.10.0.1) 56(84) bytes of data.
^C
--- 10.10.0.1 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

user@test:~$ ping 10.010.0.1
PING 10.010.0.1 (10.8.0.1) 56(84) bytes of data.
^C
--- 10.010.0.1 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1001ms

windows7 / 8/10: उपकरण "पिंग" और "टेलनेट" के साथ एक ही परिणाम

(क्षमा करें, मेरे पास एक अंग्रेजी खिड़कियां नहीं हैं, त्रुटि बताती है कि मेजबान नहीं मिला)

C:\Users\user>ping 10.7.0.1

Ping wird ausgeführt für 10.7.0.1 mit 32 Bytes Daten:
STRG-C
^C
C:\Users\user>ping 10.07.0.1

Ping wird ausgeführt für 10.7.0.1 mit 32 Bytes Daten:
STRG-C
^C
C:\Users\user>ping 10.8.0.1

Ping wird ausgeführt für 10.8.0.1 mit 32 Bytes Daten:
STRG-C
^C
C:\Users\user>ping 10.08.0.1
Ping-Anforderung konnte Host "10.08.0.1" nicht finden. Überprüfen Sie den Namen,

C:\Users\user>ping 10.9.0.1

Ping wird ausgeführt für 10.9.0.1 mit 32 Bytes Daten:
STRG-C
^C
C:\Users\user>ping 10.09.0.1
Ping-Anforderung konnte Host "10.09.0.1" nicht finden. Überprüfen Sie den Namen,

C:\Users\user>ping 10.10.0.1

Ping wird ausgeführt für 10.10.0.1 mit 32 Bytes Daten:
STRG-C
^C
C:\Users\user>ping 10.010.0.1

Ping wird ausgeführt für 10.8.0.1 mit 32 Bytes Daten:
STRG-C
^C

0
2017-07-15 15:30



एक अग्रणी शून्य अक्सर ऑक्टल को दर्शाता है। दरअसल, ऑक्टल 010 दशमलव 8 है, और 08 और 09 अमान्य ऑक्टल संख्याएं हैं। तो हाँ, एथोमसेफ द्वारा (वर्तमान में) स्वीकृत उत्तर गलत है (या कम से कम अधूरा)। इसकी टिप्पणियां, और कुछ अन्य उत्तरों देखें। - Arjan
उह, 10.010.0.1 का संचालन सिर्फ बिल्कुल भयानक है। माइक्रोसॉफ्ट विंडोज में, पिंग 10.070.0.1 को 10.56.0.1 और 10.080.0.1 के रूप में माना जाता है, एक त्वरित त्रुटि देता है, "पिंग अनुरोध होस्ट 10.080.0.1 नहीं मिला। कृपया नाम जांचें और पुनः प्रयास करें।" - TOOGAM
हां, @TOOGAM, ऑक्टल 070 दशमलव 56 है। और ऑक्टल 080 मान्य संख्या नहीं है। - Arjan


दो आईपी पते अलग हैं।

हालाँकि:

  • लोग आम तौर पर उन्हें समान मानेंगे।
  • कुछ सॉफ्टवेयर उन्हें समान मानेंगे।
  • कुछ प्लेटफ़ॉर्म पर कुछ सॉफ़्टवेयर, उन्हें अलग-अलग मानेंगे।

अगर यह उलझन में लगता है, ऐसा इसलिए है क्योंकि आईपी पते लिखने के तरीके को नियंत्रित करने के लिए कोई मानक नहीं है, इसलिए इतिहास में विभिन्न बिंदुओं पर विभिन्न प्रोग्रामर और विभिन्न प्लेटफॉर्म पर, सभी के पास अलग-अलग विचार थे कि क्या किया जाना चाहिए।

आईपी ​​पते वास्तव में द्विआधारी हैं, और लोग आईपी पते का प्रतिनिधित्व करने के लिए एक बिंदीदार दशमलव नोटेशन का उपयोग करते हैं। सॉफ़्टवेयर विभिन्न संख्यात्मक आधार (यानी दशमलव, ऑक्टल, हेक्स) स्वीकार कर सकता है और आप इसे लिखने के आधार पर विभिन्न तरीकों की व्याख्या कर सकते हैं। आप इसे कैसे लिख सकते हैं सॉफ़्टवेयर को बता सकते हैं कि आप किस आधार पर लिख रहे हैं।

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

मैंने एक पूछा इसी तरह का सवाल और कुछ अच्छे प्रतिक्रियाएं मिलीं, इसलिए यदि आप आरएफसी पर पढ़ना चाहते हैं, तो वहां अच्छी जानकारी होगी।


-4
2017-07-10 14:20