सवाल क्या पता लगाना संभव है: बंदरगाह?


मैं नेटवर्किंग में नहीं हूं, और मेरे पास लिनक्स से संबंधित निम्नलिखित प्रश्न हैं पिंग आदेश।

क्या मैं केवल एक पता पिंग कर सकता हूं? उदाहरण के लिए:

miner@raspberrypi ~ $ ping onofri.org
PING onofri.org (67.222.36.105) 56(84) bytes of data.
64 bytes from onofri.org (67.222.36.105): icmp_req=1 ttl=47 time=202 ms
64 bytes from onofri.org (67.222.36.105): icmp_req=2 ttl=47 time=206 ms
64 bytes from onofri.org (67.222.36.105): icmp_req=3 ttl=47 time=215 ms

या मैं भी एक पिंग कर सकते हैं पता: पोर्ट, उदाहरण के लिए: onofri.org:80?

अगर मैं इसे कोशिश करता हूं तो यह काम नहीं करता है:

miner@raspberrypi ~ $ ping onofri.org:80
ping: unknown host onofri.org:80

क्या यह संभव कुछ पिंग संभव है पता: पोर्ट? यदि यह संभव है, तो मैंने काम करने की कोशिश क्यों नहीं की?


198
2018-06-16 18:17


मूल


आप क्या खत्म करने की कोशिश कर रहे हैं? सही सेवा संचालन की पुष्टि करने के लिए आपको वास्तव में सेवा से पूछताछ और प्रतिक्रिया का मूल्यांकन करने की आवश्यकता होती है। एक वेब सर्वर, उदाहरण के लिए, आपका कनेक्शन स्वीकार कर सकता है, लेकिन गलत कॉन्फ़िगरेशन के कारण त्रुटि लौटा सकता है। - Daniel B
टेलनेट के बारे में मुझे क्या पसंद है इसका हिस्सा है। आप एक वेबसर्वर से कनेक्ट कर सकते हैं, और टाइप करें GET /index.html HTTP\1.1 और परिणामी मार्कअप के साथ 200 प्रतिक्रिया (या त्रुटि कोड) देखें। - Frank Thomas
@FrankThomas HTTP\1.1? वास्तव में? - glglgl
@Navin शायद HTTP/1.1... - glglgl
@glglgl; क्या? आपने कभी एक हैक नहीं रखा जहां एक स्लैश जाना चाहिए? लेकिन आप सही हैं, यह एक स्लैश होना चाहिए। - Frank Thomas


जवाब:


आप उपयोग कर सकते हैं Paping, एक क्रॉस-प्लेटफार्म टीसीपी पोर्ट परीक्षण, पिंग की कार्यक्षमता अनुकरण (पोर्ट पिंग)

(यह भी देखें Github क्योंकि code.google.com को कम किया गया है)

paping -p 80 google.com

19
2018-01-21 08:02



इस कार्यक्रम के बारे में कुछ स्पष्टीकरण उपयोगी होगा। - David Schwartz
किसी भी व्यक्ति के लिए जो इस उत्तर को पाता है, जैसा मैंने किया था, केवल पैपिंग खोजने के लिए किसी भी भंडार में नहीं है और यह प्राचीन कोड है जो एआरएम पर भी संकलित नहीं होगा - आगे 'हिपिंग' जवाब पर स्क्रॉल करें। जब आपको बंदरगाह का परीक्षण करने की आवश्यकता होती है और एआरएम समेत विभिन्न भंडारों (यानी उबंटू, आर्क) में आसानी से पहुंचा जा सकता है तो यह पिंग के लिए एकदम सही ड्रॉप-इन है। - Mark


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

इसलिए आप नहीं कर सकते ping एक बंदरगाह क्या तुमको कर सकते हैं करते हैं, जैसे एक पोर्ट स्कैनर का उपयोग करें nmap

nmap -p 80 onofri.org

आप भी उपयोग कर सकते हैं telnet onofri.org 80, जैसा कि अन्य उत्तरों में से एक में सुझाव दिया गया है (बंदरगाह बंद या फ़िल्टर होने पर यह एक त्रुटि देगा)।


300
2018-06-16 18:19



+1 आप इसे सही समझते हैं। आईसीएमपी आईपी के शीर्ष पर बनाया गया है, जिसमें आईपी पते की अवधारणा है लेकिन बंदरगाह नहीं है। टीसीपी और यूडीपी आईपी के शीर्ष पर भी हैं, और यह उन प्रोटोकॉल हैं जो "बंदरगाह" जोड़ते हैं। आईसीएमपी, टीसीपी, और यूडीपी सभी प्रोटोकॉल के संदर्भ में समान "स्तर" पर हैं। - Jason C
+1। बहुत से लोग सोचते हैं कि अगर वे कुछ पिंग नहीं कर सकते हैं तो वे इससे कनेक्ट नहीं हो सकते हैं ... लेकिन जैसा कि आप कहते हैं, आईसीएमपी टीसीपी और यूडीपी से अलग है: यदि आप टीसीपी 80 पर एक वेबपेज सेवा करने का इरादा रखते हैं, आपको केवल फ़ायरवॉल पर टीसीपी 80 खोलने की जरूरत है, और कुछ नहीं (इसलिए एक ही आईपी को पिंग (... चाहिए!) अवरुद्ध किया जा सकता है, उदाहरण के लिए) - Olivier Dulac
बस जानकारी को सटीक रखने के लिए, आईसीएमपी एक ट्रांसपोर्ट लेयर प्रोटोकॉल नहीं है जैसे टीसीपी या यूडीपी। कई प्रोटोकॉल की तरह, यह पूरी तरह से नेटवर्क वैचारिक मॉडल में फिट नहीं होता है, लेकिन इसे आम तौर पर नेटवर्क / इंटर्नवर्क परत प्रोटोकॉल माना जाता है जैसे आईपी है। इसे कभी-कभी एल 3.5 प्रोटोकॉल के रूप में भी जाना जाता है। - YLearn
@ बेन्जीविबे, सहमत हुए, लेकिन फिर, सटीकता के लिए बयान दिया जाना चाहिए, इसलिए मैंने इसे जोड़ा। अब तक जो कुछ कहा जाता है वह यह है कि आईसीएमपी, टीसीपी, और यूडीपी संबंधित हैं। सबसे ज्यादा मतदान की गई टिप्पणी अब तक कहती है कि वे सभी एक ही "स्तर" पर हैं। हालांकि यह औसत उपयोगकर्ता के लिए कोई फर्क नहीं पड़ता है, इस साइट पर आने वाले बहुत से गैर-औसत उपयोगकर्ता हैं। - YLearn
@OlivierDulac मुझे नहीं पता कि आप क्या हैं चाहिए इसे रोको। अधिकांश वेबसर्वर मुझे पता है कि इसे खोलें। आईसीएमपी इंटरनेट को चारों ओर घूमता है। आप लोगों को क्यों सोचना चाहते हैं कि वे आप तक नहीं पहुंच सकते हैं अगर वे कर सकते हैं? - Cruncher


मैं उपयोग करता हूं टेलनेट, क्योंकि यह बिना किसी अतिरिक्त डाउनलोड के प्लेटफार्मों में बनाया गया है।

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

Minty16 ~ $ telnet localhost 139
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

यदि आप उस सेवा के लिए कमांड अनुक्रम जानते हैं जिसे आप कनेक्ट कर रहे हैं, तो आप एक कमांड टाइप कर सकते हैं (HTTP / एफ़टीपी प्राप्त करें उदाहरण के लिए) और टर्मिनल में प्रतिक्रिया और आउटपुट का निरीक्षण करें। यह सेवा का परीक्षण करने के लिए बहुत उपयोगी है, क्योंकि यह आपको क्लाइंट को भेजे गए त्रुटि की जानकारी दिखाएगा, जैसे कि HTTP 500 त्रुटियां।

अगर आपको एक संदेश मिलता है कि कनेक्शन अस्वीकार कर दिया गया था, तो बंदरगाह बंद है।

Minty16 ~ $ telnet localhost 5000
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused

79
2018-06-16 18:24



अगर स्क्रीन पूरी तरह से काला हो जाती है तो यह एक संकेत है जिसे आप भी जुड़े हुए हैं। - Tensigh
उत्कृष्ट सुझाव। मैं यह जांचने के लिए उपयोग करता था कि वेब ब्राउज़र एक आसान विकल्प नहीं था जब कोई वेब सर्वर ऊपर था। - Brandon
@ ब्रैंडन की तरह जब देव मशीनों में sshing ^। ^ - Cruncher
ब्राउज़र में डेवलपर टूल बहुत आसान है, क्योंकि वे अभी भी सभी उचित HTTP अनुरोध शीर्षलेख भेज देंगे लेकिन आप पूर्ण HTTP प्रतिक्रिया का निरीक्षण कर सकते हैं। फिर फिर यदि आप अनुरोध को भी तैयार करना चाहते हैं तो टेलनेट जाने का रास्ता है। - Lightness Races in Orbit
मुझे लगता है कि यहां सभी उत्तरों जानकारी का सबसे महत्वपूर्ण टुकड़ा याद करते हैं। तकनीकी रूप से, क्या पोर्ट को "पिंग" करना संभव नहीं होगा? आप एक टीसीपी / यूडीपी कनेक्शन स्थापित कर सकते हैं, और आप उस कनेक्शन को स्थापित करने के लिए कितने मिलीसेकंड लेते हैं। - David


यह देखने के लिए कि क्या आप कनेक्शन प्राप्त करते हैं, आप किसी विशिष्ट पोर्ट से कनेक्ट करने के लिए नेटकैट का उपयोग कर सकते हैं। -V ध्वज यह दिखाने के लिए वर्बोजिटी बढ़ाएगा कि बंदरगाह खुला है या बंद है या नहीं। एक बार ध्वज कनेक्शन होने के बाद नेटकैट को छोड़ने का कारण बन जाएगा। फिर आप निकास कोड का उपयोग $ के माध्यम से कर सकते हैं? यह देखने के लिए कि कनेक्शन स्थापित किया गया था या नहीं।

$ nc -zv localhost 22
localhost [127.0.0.1] 22 (ssh) open
$ echo $?
0
$ nc -zv localhost 23
localhost [127.0.0.1] 23 (telnet) : Connection refused
$ echo $?
1

इसके अतिरिक्त, आप पोर्ट को निर्दिष्ट करने के लिए टीसीपी और -पी ध्वज के लिए -टी ध्वज के साथ एमटीआर का उपयोग कर सकते हैं। यह सिर्फ आईसीएमपी के बजाय टीसीपी पर ट्रेसरआउट के समान कुछ करेगा। हालांकि, यह अधिक हो सकता है।

आह  मुझे इस बिट को जोड़ने के लिए संपादित करना है, क्योंकि हम टिप्पणियों में कोड नहीं डाल सकते हैं। नॉनपिक्स नेटकैट के अपने संस्करण के साथ कुछ अलग कर रहा है, लेकिन यह वही है जो मैं लिनक्स मिंट से निकलता हूं

$ date;nc -z -w 1 www.google.com 8000;date
Fri Jun 20 15:55:26 PDT 2014
Fri Jun 20 15:55:27 PDT 2014
$ date;nc -z -w 4 www.google.com 8000;date
Fri Jun 20 15:55:33 PDT 2014
Fri Jun 20 15:55:37 PDT 2014

$ nc -h
[v1.10-40]

42
2018-06-16 21:15



समस्या है अगर आप कोशिश करते हैं nc -z www.google.com 8000  इसमें काफी समय लग सकता है- 5 सेकंड प्लस। यदि मैं करता हूँ -w 1 तो इसमें 5 सेकंड लगते हैं। यदि मैं करता हूँ -w 3 तो यह 3 गुना लंबा लगता है .. कर्सर की 15 चमक, 15 सेकंड। -w 1 एक सेकंड होने का मतलब है लेकिन साइगविन पर परीक्षण किया गया है। 5 सेकंड। जब पोर्ट पर कोई सर्वर होता है तो यह बहुत तेज होता है लेकिन जब नहीं होता है तो थोड़ा धीमा होता है। - barlop
टिप्पणियों में कोई न्यूलाइन नहीं है ... ऐसा लगता है कि साइगविन के साथ एक बग है। लिनक्स मिंट के साथ परीक्षण हालांकि निर्दिष्ट कई सेकंड की देरी दिखाता है। परीक्षण के लिए इसे चलाया: दिनांक; एनसी-जेड 5 www.google.com 8000; तिथि - Falsenames
मैंने एनएमएपी अनुरोधों के साथ @ बेन्जीविबे को भी उखाड़ फेंक दिया। एनसी को एक स्क्रिप्ट में रखना आसान है, लेकिन यह दृष्टि से एनएमएपी का उपयोग करना बहुत आसान है। - Falsenames
इसे knoppix में कोशिश कर रहा है। nc -zv -w 1 www.google.com आप इसे एक बार कोशिश करने का कारण कैसे बनाते हैं? जब मैं इसे हाँ कोशिश करता हूं- 1 काम करता है लेकिन हर सेकेंड यह तब तक चलता है जब तक कि मैं Ctrl-C नहीं करता। - barlop
सुनिश्चित नहीं है कि 'nc -zv -w 1 www.google.com 80' का नोपिक्स संस्करण क्या कर रहा है। यह मेरे सिस्टम पर ठीक काम करता है, एक बार पूछताछ करता है और बस छोड़ देता है -z को करना है। इसके अलावा, निर्दिष्ट पोर्ट नंबर के बिना, मेरा कहना है कि कोई बंदरगाह निर्दिष्ट नहीं है। - Falsenames


हाँ, उपयोग करें Hping ऐसा करने के लिए:

$ sudo hping -S -p 80 google.com
HPING google.com (p5p1 77.237.27.37): S set, 40 headers + 0 data bytes
len=46 ip=77.237.27.37 ttl=58 id=25706 sport=80 flags=SA seq=0 win=29200 rtt=7.5 ms
len=46 ip=77.237.27.37 ttl=58 id=25707 sport=80 flags=SA seq=1 win=29200 rtt=7.4 ms
len=46 ip=77.237.27.37 ttl=58 id=25708 sport=80 flags=SA seq=2 win=29200 rtt=8.5 ms
len=46 ip=77.237.27.37 ttl=58 id=25709 sport=80 flags=SA seq=3 win=29200 rtt=7.8 ms
^C
--- google.com hping statistic ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 7.4/7.8/8.5 ms

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


41
2018-06-17 15:35



काश यह "स्वीकृत उत्तर" था। हिपिंग कई रिपो में आसानी से खोजने योग्य था, पेपिंग के विपरीत जो प्राचीन क्रॉफ्टी कोड है जो एआरएम पर संकलित नहीं होता है। एनएमएपी के विपरीत, हैपिंग एक स्टेटस कोड देता है जो शेल स्क्रिप्ट से आसानी से परीक्षण योग्य होता है, इसलिए यह एक आदर्श विकल्प है जहां आप अन्यथा पिंग का उपयोग करेंगे। इस जवाब के लिए धन्यवाद, एक शर्म की बात है कि मैंने इसे देखने के लिए काफी नीचे स्क्रॉल नहीं किया था और इसे इसके बजाय किसी अन्य वेबसाइट पर खोजना था। - Mark


आप भी इस्तेमाल कर सकते हैं nping (का हिस्सा nmap):

$ nping -p 80 localhost

Starting Nping 0.6.00 ( http://nmap.org/nping ) at 2014-06-23 11:57 CEST
SENT (0.0015s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (0.0016s) Handshake with localhost:80 (127.0.0.1:80) completed
SENT (1.0027s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (1.0027s) Handshake with localhost:80 (127.0.0.1:80) completed
SENT (2.0038s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (2.0039s) Handshake with localhost:80 (127.0.0.1:80) completed
SENT (3.0050s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (3.0050s) Handshake with localhost:80 (127.0.0.1:80) completed
SENT (4.0061s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (4.0062s) Handshake with localhost:80 (127.0.0.1:80) completed

Max rtt: 0.032ms | Min rtt: 0.008ms | Avg rtt: 0.012ms
TCP connection attempts: 5 | Successful connections: 5 | Failed: 0 (0.00%)
Tx time: 4.00575s | Tx bytes/s: 99.86 | Tx pkts/s: 1.25
Rx time: 4.00575s | Rx bytes/s: 49.93 | Rx pkts/s: 1.25
Nping done: 1 IP address pinged in 4.01 seconds

16
2018-06-23 09:57



nping --tcp -p 80 localhost - K-Gun


आप इसे पाइथन के साथ šhell में इतना छोटा एक लाइनर के रूप में कर सकते हैं:

$ portping() { python <<<"import socket; socket.setdefaulttimeout(1); socket.socket().connect(('$1', $2))" 2> /dev/null && echo OPEN || echo CLOSET; }
$ portping 8.8.8.8 54
CLOSET
$ portping 8.8.8.8 53
OPEN

6
2017-12-18 22:11



आप इसे अजगर मूर्खतापूर्ण हंस में पेस्ट नहीं करते हैं। इसे बाश में पेस्ट करें। - AXE-Labs
हाँ मैं एक बेवकूफ हूँ, टिप्पणी हटा दी, धन्यवाद यह पूरी तरह से काम किया। - rob
बंद करो, loooool - srghma