क्या 0.0.0.0 उपयोग और *: * एक ही बात का प्रतिनिधित्व करते हैं?


23

मैंने टीसीपी और यूडीपी के लिए सुने हुए बंदरगाहों को देखने के लिए नेटस्टैट (विंडोज में) का इस्तेमाल किया:

यहाँ छवि विवरण दर्ज करें

मैंने देखा कि फॉरेन एड्रेस कॉलम में, UDP प्रदर्शित *:*होती है 0.0.0.0:0, क्या ये दोनों मान एक ही चीज़ का प्रतिनिधित्व करते हैं? यदि ऐसा है, तो यूडीपी के *:*बजाय प्रदर्शन क्यों होता है 0.0.0.0:0?


मेरा मानना *:*है कि IPv6 है जबकि 0.0.0.0:0IPv4 है।
LPChip

मैंने निम्नलिखित पर भी ध्यान दिया है: UDP 0.0.0.0:5355 *:*क्या इसका मतलब यह है कि डेटा IPv4 और IPv6 के बीच भेजा जा सकता है?
user612473


4
IPv6 0.0.0.0 के बराबर है [::]
मार्श-विगले

2
@LPChip आप गलत हैं। *:*आईपी ​​संस्करण के बारे में कुछ नहीं कहता। हालाँकि जब से उस सॉकेट का स्थानीय पता IPv4 है, तब रिमोट पता IPv4 होना चाहिए।
कैस्परल्ड

जवाबों:


12

यह बताया गया है कि मेरा उत्तर गलती से था। चूंकि मैं इसे हटा नहीं सकता, इसलिए मैं इसके बजाय सही प्रदान करूंगा।

अभिव्यक्ति का *:*अर्थ है "कोई भी पता, कोई भी बंदरगाह"। सभी UDP श्रोता इस हस्ताक्षर को प्रदर्शित करेंगे। यह यूडीपी की कनेक्शनहीन प्रकृति के कारण है।


मूल (गलत) उत्तर। हां और ना। *:*किसी भी IPv6 पते को संदर्भित करता है। अज्ञात / अनिर्दिष्ट पते के बीच अंतर IPv4 में अस्पष्ट है, इसलिए हम नेटवर्क पर किसी भी मेजबान का प्रतिनिधित्व करने के लिए 0.0.0.0/0 का उपयोग करते हैं, लेकिन IPv6 में एक सूक्ष्म अंतर है।

अधिकांश भाग के लिए, लोग ::0 के सन्निहित स्ट्रिंग का प्रतिनिधित्व करने के लिए उपयोग करते हैं।

IPv6 पते में, सन्निहित शून्य के किसी भी क्रम को इसके साथ बदला जा सकता :: है:

  • 0.0.0.0/0=> 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0000 => ::=>*:*
  • fe80:0000:0000:0000:2000:0aff:fea7:0f7c => fe80::2000:0aff:fea7:0f7c

हालांकि वाइल्डकार्ड का उपयोग करने वाला प्रतिनिधित्व पता पैटर्न के बेहतर नियंत्रण की अनुमति देता है। उदाहरण के लिए, ::मेल नहीं खाएगा fe80::2000:0aff:fea7:0f7c, लेकिन *:*होगा।

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


5
लेकिन आपने अपने उत्तर में लिखा है कि *:* refers to ANY IPv6 address यहाँ आप कहते हैं कि any..addressअर्थात् IPv4 या IPv6। तो यह कौन सा है? है *:*आईपीवी 6 को ही सीमित है, या यह आईपीवी 4 के लिए भी अनुमति देता है?
बजे बार्लोप

2
प्रश्न में उल्लिखित दोनों सॉकेट केवल आईपीवी 4 हैं। आप देख सकते हैं कि स्थानीय पते से प्रत्येक सॉकेट को सौंपा गया है। जैसा कि उल्लेख IPv6 प्रश्न के लिए प्रासंगिक नहीं है।
कैस्परल्ड

7
IPv6 इस प्रश्न के लिए बिल्कुल भी प्रासंगिक नहीं है।
जूल

8
यह उत्तर पूछे गए प्रश्न के लिए पूरी तरह से गलत है।
ब्रैड

3
जैसा कि कैस्पर के टिप्पणी नोट (और हॉब्स की टिप्पणी भी), IPv6 प्रश्न से संबंधित नहीं है। प्रश्न यह है कि हम विदेशी पता कॉलम में क्या देखते हैं, जो कि स्थानीय एड्रेस कॉलम में उसी पंक्ति (रों) में है, जो कि IPv4 है। (हालांकि, कुछ ऑपरेटिंग सिस्टमों के साथ, एक पते वाले परिवार / आईपी-संस्करण को सुनना आमतौर पर दूसरे पते के परिवार पर ऑटो-सुन सकता है।)
TOOGAM

15

/सबनेट नेटमास्क, जो आईपी लेयर का हिस्सा है को दर्शाता है।

:एक बंदरगाह जो ट्रांसपोर्ट लेयर का हिस्सा है को दर्शाता है।

टीसीपी के लिए यह समझ में आता है कि कनेक्शन के लिए एक दूरस्थ अंत है।

यूडीपी, चूंकि यह कनेक्शन रहित है, इसलिए इसका कोई मतलब नहीं है कि यह एक विदेशी पता दिखाए।

मेरी आंत की भावना यह है कि यह हमेशा यूडीपी के लिए वाइल्डकार्ड दिखाएगा और यह संभावित रूप से आउटपुट को थोड़ा अधिक अनुकूल बनाने के लिए, या यह दिखाने के लिए है कि आप आईपीवी 4/6 का उपयोग कर रहे हैं:

IPV4 "*:*" बनाम IPV6 "[::]:*"


मैं बस कुछ दोस्तों से यही कह रहा था। आप PORTS सुनते हुए प्रदर्शित कर सकते हैं, लेकिन वास्तविक दूरस्थ सत्रों को प्रदर्शित करने के लिए जब कोई संभावित कारण नहीं होता है तो इसका कारण *:*दूरस्थ UDP गैर-मौजूद सत्रों के रूप में प्रदर्शित होता है । मैं यहाँ तुम्हारे साथ समझौता कर रहा हूँ।
NotAdmin डेव जूल

6

दोनों ही मामलों में जानकारी मूल रूप से अर्थहीन है, लेकिन एक ही चीज़ को अधिक-या-कम इंगित करती है।

आपकी पहली पंक्ति एक टीसीपी सॉकेट है। स्थानीय पता स्तंभ उस पते और पोर्ट को इंगित करता है जिसे वह कनेक्शन स्वीकार कर रहा है, और दूरस्थ पता कॉलम का अर्थ कुछ भी नहीं है क्योंकि एक सुनने वाले सॉकेट का कनेक्शन का कोई दूरस्थ अंत नहीं है। एक कनेक्टेड टीसीपी सॉकेट उस कॉलम में कनेक्शन के दूसरे छोर का पता दिखाता है, लेकिन एक सॉकेट के लिए यह एक ऑल-जीरो एड्रेस और पोर्ट प्रदर्शित करने का फैसला करता है।

आपकी दूसरी पंक्ति एक यूडीपी सॉकेट है। यूडीपी एक कनेक्शन रहित प्रोटोकॉल है, जिसका अर्थ है कि यह पैकेट को भेजता है और प्राप्त करता है बिना किसी की धारणा के कि कौन किससे जुड़ा है, क्या पैकेट मौजूदा बातचीत का हिस्सा है, या क्या डेटा सिर्फ नीले रंग से बाहर आया है। स्थानीय पता स्तंभ का वही अर्थ है जो वह TCP के लिए करता है, और दूरस्थ पता स्तंभ निरर्थक है क्योंकि UDP सॉकेट में किसी भी समय एक सहकर्मी, कई सहकर्मी, या कोई सहकर्मी हो सकते हैं। (वास्तव में POSIX में "कनेक्टेड यूडीपी सॉकेट" की धारणा है लेकिन यह थोड़ा दूर हो रहा है)।

अब सवाल: वे अलग तरीके से क्यों प्रदर्शित होते हैं? यह विंडोज netstat कोड के एक quirk से ज्यादा कुछ नहीं लगता है। लिनक्स (नेट-टूल) netstat 0.0.0.0:*टीसीपी दोनों सॉकेट और यूडीपी सॉकेट (IPv4 के लिए; यह :::*आईपीवी 6 के लिए प्रदर्शित करता है) के दूरस्थ छोर के लिए प्रदर्शित होता है, जो विंडोज पर या तो उदाहरण से अलग है, लेकिन कम से कम यह एक ही कार्यक्रम के भीतर संगत है। शायद विंडोज़ टीसीपी के मामले में "बाद में भरने के लिए" और यूडीपी के मामले में "कुछ भी करने के लिए खुला" के बीच एक अर्थ भेद के लिए जा रहा है, लेकिन जैसा कि संभवतः दो अलग-अलग लोगों द्वारा कोड के दो बिट्स लिखे गए थे निरंतरता के लिए विशेष चिंता।


4 वें पैराग्राफ की शुरुआत के लिए +1। 0.0.0.0 के पास कुछ दस्तावेज हैं: सभी शून्य का एक पता "अनिर्दिष्ट" पता है ( आईपीवी 6 एड्रेसिंग आरएफसी 4291 सेकंड 2.5.2 के अनुसार ), अक्सर अज्ञात पते पर लागू होता है। RFC 1700 पृष्ठ 4 में "केवल एक स्रोत पते के रूप में उपयोग किया जा सकता है" और RFC 1122 # पृष्ठ -29 अनुभाग "a" आगे उपयोग का वर्णन करता है। ( मेरे बारे में जवाब ::: उल्लेख 0.0.0.0)
TOOGAM

क्या विदेशी पता स्तंभ 0.0.0.0:0में मान का मतलब यह नहीं है कि कोई भी IP पता और पोर्ट नंबर इस सॉकेट में डेटा भेज सकता है? और यदि यह मान उदाहरण के लिए था , तो इसका मतलब है कि पोर्ट नंबर के साथ केवल आईपी एड्रेस इस सॉकेट में डेटा भेज सकता है और कोई नहीं? 127.0.0.0:12345127.0.0.012345
टॉम

6

अंतर केवल उल्लेखनीय है।

Windows में Netstat 0.0.0.0:0एक स्थानीय IPv4 TCP श्रोता के लिए और *:*UDP श्रोता के लिए "किसी भी दूरस्थ पते और पोर्ट" के एक सार विचार का प्रतिनिधित्व करने के लिए उपयोग करता है । IPv6 के लिए, रिमोट एड्रेस को [::]:0टीसीपी के लिए और *:*यूडीपी के लिए निरूपित किया जाता है ।

ओएस एक्स में, *.*टीसीपी और यूडीपी दोनों के लिए उपयोग किया जाता है, चाहे आईपीवी 4 या आईपीवी 6 (ध्यान दें कि ओएस एक्स पते और पोर्ट को अलग करने के लिए डॉट्स का उपयोग करता है)। लिनक्स 0.0.0.0:*IPv4 के लिए और :::*IPv6 के लिए उपयोग करता है , जिसमें पहले दो कॉलोन सभी IPv6 पते के लिए संक्षिप्त नाम का प्रतिनिधित्व करते हैं और तीसरा कॉलोन पता और पोर्ट के बीच विभाजक होता है।

IIRC कुछ ऐसा जो मैंने बहुत पहले सुना या पढ़ा है, मुझे लगता है कि यूडीपी पेयरिंग दिखा सकते हैं, लेकिन आमतौर पर ऐसा नहीं होता है क्योंकि वे पूरा होने पर फट जाते हैं और यूडीपी कनेक्शन आमतौर पर बहुत कम, स्थायी मिलीसेकंड या उससे कम होते हैं। मैंने इसे स्वयं कभी नहीं देखा, हालांकि, यह गलत हो सकता है।

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