मैं 127.1 पिंग क्यों कर सकता हूं?


11

मुझे पता है कि IPv6 लगातार शून्य को छोड़ने की अनुमति देता है। लेकिन IPv4 के बारे में कैसे? मुझे इंटरनेट पर इसका कोई संदर्भ नहीं मिला, जिसमें विकिपीडिया और RFC 791 शामिल हैं - इंटरनेट प्रोटोकॉल। यह दस्तावेज़ बताता है कि एक आईपीवी 4 पते में "लीडिंग ज़ीरोस को छोड़ा जा सकता है" (शब्द 'छोड़ा' के लिए खोज)। पर्याप्त विशिष्ट नहीं है।

इस शेल सत्र को देखें:

[~]$ ping -c 1 127.1
PING 127.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.040 ms

--- 127.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.040/0.040/0.040/0.000 ms
[~]$ ping -c 1 127.0.1
PING 127.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.044 ms

--- 127.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.044/0.044/0.044/0.000 ms
[~]$ ssh 127.1 :
The authenticity of host '127.1 (127.0.0.1)' can't be established.
ECDSA key fingerprint is 04:48:fa:f2:ef:95:7c:35:46:39:2e:d3:89:dd:cd:87.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '127.1' (ECDSA) to the list of known hosts.
alex@127.1's password: 

स्पष्ट रूप से, पिंग और ssh दोनों 127.1 और 127.0.1 को 127.0.0.1 के समान समझते हैं। यह कहां निर्दिष्ट है?


7
इस स्टैक ओवरफ्लो पोस्ट में लिंक किया गया यह मैन पेज आपकी गली के ठीक ऊपर हो सकता है।
nerdwaller

1
यह एक प्राचीन संकेतन शैली है, लेकिन हाँ: यह काम करता है :-)
सैंडर स्टेफ़न

1
@nerdwaller: कृपया उत्तर के रूप में पोस्ट करें। (बोनस अंक यदि आप यह पता ping 0.0.0.0ping 0
लगाते हैं

जवाबों:


14

लगभग एक साल पहले से एक स्टैक ओवरफ्लो पोस्ट कुछ इसी तरह की है ( यह पोस्ट )।

मुख्य कारण यह है कि कैसे inet_aton()( मैन पेज ) ऑक्टेट को द्विआधारी पते में परिवर्तित करता है।

ऐ बी सी डी

चार संख्यात्मक भागों में से प्रत्येक पते का एक बाइट निर्दिष्ट करता है; बाइट्स को बाइनरी पते का उत्पादन करने के लिए बाएं से दाएं क्रम में सौंपा गया है।

एबीसी

भागों और बी द्विआधारी पते के पहले दो बाइट्स निर्दिष्ट करते हैं। भाग सी की व्याख्या 16-बिट मान के रूप में की जाती है जो द्विआधारी पते के सबसे दाहिने दो बाइट को परिभाषित करता है। यह संकेतन वर्ग B नेटवर्क पतों को निर्दिष्ट (आउटमोडेड) करने के लिए उपयुक्त है।

अब

भाग बाइनरी पते के पहले बाइट को निर्दिष्ट करता है। पार्ट बी की व्याख्या 24-बिट मान के रूप में की जाती है जो द्विआधारी पते के तीन सबसे बाइट्स को परिभाषित करता है। यह नोटेशन क्लास सी नेटवर्क एड्रेस को निर्दिष्ट (आउटमोडेड) करने के लिए उपयुक्त है।

मूल्य को एक 32-बिट मान के रूप में व्याख्या किया जाता है जो बिना किसी बाइट पुनर्व्यवस्था के सीधे बाइनरी पते में संग्रहीत होता है।

यह POSIX.anything द्वारा परिभाषित नहीं है - लेकिन यह बहुत व्यापक रूप से उपलब्ध है।


1
बहुत बढ़िया, और मैंने आपके द्वारा स्टैक ओवरफ्लो से जुड़ी पोस्ट की भी जाँच की। इसकी बड़ी अंतर्दृष्टि थी कि विभिन्न संख्या प्रणालियों का उपयोग कैसे किया जा सकता है। @grawity Wikipedia का कहना है कि 0.0.0.0/8 वर्तमान नेटवर्क है। मुझे लगता है कि 0.0.0.0/32 वर्तमान होस्ट होना चाहिए और यह केवल पिंग / 32 "नेटवर्क" की अपेक्षा करता है। मुझे हालांकि एक स्पष्ट संदर्भ नहीं मिला है।
अलेक्जेंड्रे डी वेरटेइल

2
@AlexandredeVerteuil: पिंग मेजबानों की अपेक्षा करता है , नेटवर्क नहीं ... तो हाँ, / आईपीवी 4 के लिए 32।
user1686

3

यह शास्त्रीय संबोधन के पुराने दिनों से एक अवशेष है। 127.1मतलब नेटवर्क 127, होस्ट 1। (और, हाँ, 127.257कानूनी है क्योंकि नेटवर्क में 127256 से अधिक होस्ट हो सकते हैं।


127.257 का अर्थ विशेष रूप से 127.0.1.1 है, एक पता जो मैं वास्तव में पुराने KMS सर्वर एक्टिविट पर देखता हूं जो विंडोज 8.0 पर काम करता है
पॉल स्टेलियन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.