अगर UDP पोर्ट खुला हो तो नेटकैट कैसे पता करता है?


49

तो मैं इस netcat कमांड का उपयोग यह जांचने के लिए कर सकता हूं कि क्या UDP पोर्ट खुला है:

$  nc -vz -u 10.1.0.100 53
Connection to 10.1.0.100 53 port [udp/domain] succeeded!

टीसीपी के विपरीत, यूडीपी कनेक्शन रहित (आग और भूल) है। तो क्या उच्च स्तर पर किसी को पता है कि नेटपैक यूडीपी पोर्ट को कैसे जानता है? क्या यह जवाब मांगता है या ऐसा कुछ?

जवाबों:


17

उस विशिष्ट आउटपुट को देखते हुए, जिसका Connection to Connection to 10.1.0.100 53 port [udp/domain] succeeded!उपयोग आप Openbsd-netcat कर रहे हैं।

उस कोड को देखने के लिए परीक्षण को UDP सॉकेट से बाँधना है, अर्थात एक खुला कनेक्शन है:

              if (vflag || zflag) {
                            /* For UDP, make sure we are connected. */
                            if (uflag) {
                                    if (udptest(s) == -1) {
                                            ret = 1;
                                            continue;
                                    }
                            }

                            /* Don't look up port if -n. */
                            if (nflag)
                                    sv = NULL;
                            else {
                                    sv = getservbyport(
                                        ntohs(atoi(portlist[i])),
                                        uflag ? "udp" : "tcp");
                            }

                            fprintf(stderr,
                                "Connection to %s %s port [%s/%s] "
                                "succeeded!\n", host, portlist[i],
                                uflag ? "udp" : "tcp",
                                sv ? sv->s_name : "*");

3 के आसपास udptest मुद्दे खुले सॉकेट को लिखते हैं। एक नोट है कि यह IPv6 के लिए काम नहीं करता है और लगभग 100 बंदरगाहों की जाँच के बाद विफल हो जाता है।

इसलिए जबकि दूसरा सुझाव मान्य हो सकता है, मुझे नहीं लगता कि इस विशेष मामले में ऐसा हो रहा है।


ऐसा udptestकार्य है जिसे मैं देख रहा हूं और यह मेरे प्रश्न का उत्तर देता है। आपके द्वारा दिए गए लिंक से "* udptest () * यूडीपी पोर्ट है या नहीं, यह देखने के लिए कुछ लिखें"
पैट्रिक मैकमोहन

हाँ, मैंने अभी-अभी जाँच की और लिखा भी देखा। संशोधित उत्तर।
चट्टानी

@PatrickMcMahon - यदि यह आपके प्रश्न का उत्तर देता है, तो बड़े टिक पर क्लिक करके इसे स्वीकार करें।
कैस

17

वास्तव में, यह नहीं है। आप ऐसा करके देख सकते हैं:

$ nc -vz -u 8.8.8.8 53 
Connection to 8.8.8.8 53 port [udp/domain] succeeded!
$ nc -vz -u 8.8.8.8 54
Connection to 8.8.8.8 54 port [udp/*] succeeded!
$ nc -vz -u 8.8.8.8 59
Connection to 8.8.8.8 59 port [udp/*] succeeded!
$ 

यूडीपी के साथ, यह कुछ ऐसा नहीं है जिसे आप वास्तव में जांच सकते हैं जब तक कि यह आपको जानकारी वापस नहीं देगा।


9

यह संकेत देने के लिए एक आईसीएमपी संदेश है कि एक पोर्ट, यहां तक ​​कि एक यूडीपी एक भी बंद है। इसलिए यदि कोई होस्ट यह संदेश भेजता है तो पोर्ट को बंद माना जा सकता है।

https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol#Destination_unreachable


4
ध्यान दें कि क्योंकि UDP कनेक्शन रहित है, आप किसी खोए हुए पैकेट से फ़ायरवॉल पोर्ट से खुले पोर्ट को अलग से नहीं देख सकते।
मार्क

सच सच। और सैद्धांतिक रूप से यह भी संभव होगा कि आपको पैकेट मिले और पोर्ट वास्तव में बंद न हो।
phk

9

वैसे मेरी राय अलग है:

a:~# nc -luk 10.12.0.12 667 // listen on UDP port 667
b:~# nc -uv 10.12.0.12 667  // check if port is open 
nc: 10.12.0.12 (10.12.0.12) 667 [667] open
I love stackexchange // send a message
a:~# nc -luk 10.12.0.12 667
I love stackexchange // receive the message.

तो उसके आधार पर, आप जांच सकते हैं कि उस udp पोर्ट पर b और b के बीच संबंध संभव है या नहीं। बाद में आप tcpdump का उपयोग करके जाँच जारी रख सकते हैं।


1
आह हाँ मुझे यह पसंद है। इसका परीक्षण करने का एक अच्छा तरीका है यदि आपके पास दोनों नोड्स तक पहुंच है। मुझे लगता है कि जब मैं सवाल पूछ रहा था तो मैं "कैसे एक ब्लैक बॉक्स का परीक्षण करें" या बाहरी नोड की जांच करने की दिशा में था। सिर्फ ऐसा करने के परिणाम, netcat गारंटी नहीं दे सकते।
पैट्रिक मैकमोहन

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