क्या पता पिंग करना संभव है: पोर्ट?


212

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

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

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

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


8
आप क्या खत्म करने की कोशिश कर रहे हैं? सही सेवा संचालन को सत्यापित करने से आपको वास्तव में सेवा को क्वेरी करने और प्रतिक्रिया का मूल्यांकन करने की आवश्यकता होती है। एक वेब सर्वर, उदाहरण के लिए, आपके कनेक्शन को स्वीकार कर सकता है, लेकिन ग़लतफ़हमी के कारण त्रुटि लौटाता है।
डैनियल बी

5
टेलनेट के बारे में मुझे जो पसंद है, उसका वह हिस्सा है। आप एक वेबसर्वर से कनेक्ट कर सकते हैं, और GET /index.html HTTP\1.1परिणामी मार्कअप के साथ 200 प्रतिक्रिया (या त्रुटि कोड) देख सकते हैं।
फ्रैंक थॉमस

7
@FrankThomas HTTP\1.1? वास्तव में?
ग्लोगल

5
@ नवीन शायद HTTP/1.1...
११

3
@glglgl; क्या? आपने कभी हैक नहीं किया जहां एक स्लैश जाना चाहिए? लेकिन आप सही हैं, यह स्लैश होना चाहिए।
फ्रैंक थॉमस

जवाबों:


20

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

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

paping -p 80 google.com

8
यह कार्यक्रम क्या करता है, इसकी कुछ व्याख्या सहायक होगी।
डेविड श्वार्ट्ज

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

मैं कैसे स्थापित कर सकता हूं paping? मैंने रेपो का दौरा किया है लेकिन कोई रिलीज नहीं हुई है। आह, कभी नहीं .. गूगल कोड उस समय मेरे लिए सुलभ नहीं था।
शयन

310

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

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

nmap -p 80 onofri.org

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


22
आप इसे सही समझते हैं। ICMP IP के ऊपर बनाया गया है, जिसमें IP एड्रेस की अवधारणा है, लेकिन पोर्ट की नहीं। टीसीपी और यूडीपी भी आईपी के शीर्ष पर हैं, और यह उन प्रोटोकॉल हैं जो "पोर्ट" जोड़ते हैं। ICMP, TCP, और UDP सभी प्रोटोकॉल के संदर्भ में समान "स्तर" पर हैं।
जेसन सी

14
+1। कई, कई लोग सोचते हैं कि अगर वे कुछ ऐसा नहीं कर सकते हैं जो वे इसे कनेक्ट नहीं कर सकते ... लेकिन जैसा कि आप कहते हैं, आईसीएमपी टीसीपी और यूडीपी से अलग है: यदि आप सेवा करने का इरादा रखते हैं, तो कहें, टीसीपी 80 पर एक वेबपेज, फायरवॉल पर आपको केवल टीसीपी 80 खोलने की आवश्यकता है, इसके अलावा और कुछ नहीं (इसलिए उसी आईपी को पिंग करें (... चाहिए!), उदाहरण के लिए, अवरुद्ध किया जा सकता है)
ओलिवियर दुलक

6
बस जानकारी को सही रखने के लिए, ICMP, TCP या UDP की तरह ट्रांसपोर्ट लेयर प्रोटोकॉल नहीं है। प्रोटोकॉल के एक नंबर की तरह, यह पूरी तरह से नेटवर्क वैचारिक मॉडल में फिट नहीं है, लेकिन इसे आमतौर पर आईपी के रूप में एक नेटवर्क / इंटरनेटवर्क परत प्रोटोकॉल माना जाता है। इसे कभी-कभी L3.5 प्रोटोकॉल भी कहा जाता है।
यूलर

2
@BenjiWiebe, सहमत हुए, लेकिन फिर से, सटीकता के लिए बयान किया जाना चाहिए कि मैंने इसे क्यों जोड़ा। अब तक कहा गया है कि आईसीएमपी, टीसीपी और यूडीपी संबंधित हैं। यहां तक ​​कि सबसे ज्यादा वोट की गई टिप्पणी यह ​​भी कहती है कि वे सभी "समान स्तर" पर हैं। हालांकि इससे औसत उपयोगकर्ता पर कोई फर्क नहीं पड़ता है, लेकिन इस साइट पर जाने वाले गैर-औसत उपयोगकर्ता बहुत हैं।
यलार

4
@OlivierDulac मुझे नहीं पता कि क्या आपको इसे ब्लॉक करना चाहिए । मैं जानता हूँ कि अधिकांश webservers इसे खुला छोड़ देते हैं। ICMP इंटरनेट को घूमने लायक बनाता है। आप लोग यह क्यों सोचेंगे कि अगर वे कर सकते हैं तो वे आप तक नहीं पहुँच सकते हैं?
क्रंचर

86

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

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

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

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

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

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

8
इसके अलावा अगर स्क्रीन पूरी तरह से काली हो जाती है तो यह एक संकेत है जिससे आप भी जुड़े हैं।
तेनसिंघ

बहुत बढ़िया सुझाव। मैं इसका उपयोग यह जांचने के लिए करता था कि अगर वेब ब्राउज़र एक आसान विकल्प नहीं था, तो वेब सर्वर कब उठेगा।
ब्रैंडन

@ ब्रेडन जब देव मशीनों में sshing ^। ^
क्रंचर

ब्राउज़र में डेवलपर टूल बहुत आसान है, क्योंकि वे अभी भी सभी उचित HTTP अनुरोध हेडर भेजेंगे, लेकिन आप पूर्ण HTTP प्रतिक्रिया का निरीक्षण कर सकते हैं। फिर दोबारा अगर आप रिक्वेस्ट को भी दर्जी करना चाहते हैं तो टेलनेट जाने का रास्ता है।
ऑर्बिट

मुझे लगता है कि यहां सभी उत्तर जानकारी के सबसे महत्वपूर्ण टुकड़े को याद करते हैं। तकनीकी रूप से, क्या पोर्ट को "पिंग" करना संभव नहीं होगा? आप एक टीसीपी / यूडीपी कनेक्शन स्थापित कर सकते हैं, और आप उस कनेक्शन को स्थापित करने के लिए कितने मिलीसेकंड की गणना करते हैं।
डेविड

47

हां, ऐसा करने के लिए 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 क्षमताओं) की आवश्यकता होती है, (जो आपके सिस्टम पर सबसे अधिक संभावना है)।


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

मैं ubuntu में पैकेज स्थापित नहीं कर सकता .. पैकेज नहीं मिला .. लेकिन मुझे मिल गया है hping3। क्या यह वैसा ही है hping3? @ d33tah
शयन

ठीक है, मैंने कोशिश की hping3और यह सभी बंदरगाहों को बंद कर देता है .. क्या यह बंद या खुला नहीं है .. मैं कैसे बता सकता हूं कि कोई बंदरगाह बंद है या खुला है?
शयन

46

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

$ 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

इसके अतिरिक्त, आप पोर्ट को निर्दिष्ट करने के लिए t -p ध्वज के लिए -T ध्वज और -P ध्वज के साथ mtr का उपयोग कर सकते हैं। यह केवल ICMP के बजाय TCP पर एक अनुरेखक के समान कुछ करेगा। हालाँकि यह ओवरकिल हो सकता है।

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

$ 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]

समस्या यह है कि यदि आप कोशिश करते हैं तो nc -z www.google.com 8000 यह एक लंबा समय ले सकता है- 5 सेकंड प्लस। अगर मैं करता हूं तो -w 15 सेकंड लगते हैं। यदि मैं करता हूं तो -w 33 गुना अधिक समय लगता है .. 15 सेकंड कर्सर की, 15 सेकंड। -w 1एक सेकंड के लिए होता है लेकिन साइबरविन पर परीक्षण किया जाता है। 5 सेकंड। पोर्ट पर सर्वर होने पर यह सुपर फास्ट है, लेकिन थोड़ा धीमा है जब वहाँ नहीं है।
बार्लोप

टिप्पणियों में कोई नई बात नहीं है ... यह एक बग के साथ लगता है। लिनक्स टकसाल के साथ परीक्षण हालांकि कई सेकंड निर्दिष्ट की देरी दर्शाता है। करने के लिए परीक्षण इस भाग गया: तिथि; NC-zw5 www.google.com 8000; तिथि
Falsenames

मैंने भी nmap अनुरोधों के साथ @BenjiWiebe को अपडाउन किया। nc को स्क्रिप्ट में रखना आसान है, लेकिन नेत्रहीन का उपयोग करना आसान है।
फर्ल्सनम्स

इसे knoppix में आज़मा रहे हैं। nc -zv -w 1 www.google.com आप इसे केवल एक बार आज़माने के लिए कैसे करते हैं? जब मैं इसे हाँ करने की कोशिश करता हूं -w 1 काम करता है, लेकिन हर सेकंड यह तब तक पीछे हट जाता है जब तक मैं Ctrl-C नहीं करता।
बारलोप

यह निश्चित नहीं है कि 'nc -zv -w 1 www.google.com 80' का नॉप्पिक्स संस्करण क्या कर रहा है। यह मेरे सिस्टम पर ठीक काम करता है, एक बार क्वेरी करना और जैसे -जैसे ड्रॉप करना है। इसके अलावा, पोर्ट संख्या निर्दिष्ट किए बिना, मेरा कहना है कि कोई पोर्ट निर्दिष्ट नहीं है विफल रहता है।
फाल्स्नेम्स

18

तुम भी 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

6
nping --tcp -p 80 localhost
के-गन

मैं किसी भी पोर्ट का परीक्षण करता हूं, (ऐसे पोर्ट जो खुले नहीं हैं) और मुझे अभी भी हर समय दो हैंडशेक मिलते हैं ...
Shayan

8

आप पायथन के साथ शेल में ऐसा कर सकते हैं कि एक छोटा लाइनर नहीं है:

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

7

संदर्भ के लिए, विवेक गीते द्वारा एक पोस्ट साझा करना चाहता था: https://www.cyberciti.biz/faq/ping-test-a-specific-port-of-machine-ip-address-using-linux-unix/# टिप्पणी-920,398

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

(echo >/dev/tcp/{host}/{port}) &>/dev/null && echo "opened" || echo "closed"
(echo >/dev/udp/{host}/{port}) &>/dev/null && echo "opened" || echo "closed"
(echo >/dev/tcp/www.cyberciti.biz/22) &>/dev/null && echo "Opened 22" || echo "Closed 22"
(echo >/dev/tcp/www.cyberciti.biz/443) &>/dev/null && echo "Opened 443" || echo "Closed 443"

या एक सुपर सरल संस्करण: बस निम्नलिखित कमांड पैटर्न के उत्पादन को देख रहा है:

echo >/dev/{tcp|udp}/{host}/{port}

यादृच्छिक डॉकटर कंटेनरों के साथ काम करते समय उपयोगी।


looking at the output- केवल निरीक्षण रिटर्न कोड $?ही सहायक हो सकता है। यह भी बंद बंदरगाहों पर लटका रहता है, कुछ समय के लिए कहीं भी कॉन्फ़िगर किया जा सकता है ...
vp_arth

यह समाधान साफ ​​दिखता है, लेकिन echo >/dev/tcp/{hostname}/{portnumber}बंदरगाह बंद होने पर समाप्त नहीं होता है। और echo >/dev/tcp/{hostname}/{portnumber}पोर्ट ओपन होने के बावजूद कुछ नहीं दिखाता है और मैं इसे एक ब्राउज़र पर देख सकता हूं।
मिगुएलमोरिन

हाय एमोरिन, आप किस ओएस का उपयोग करते हैं? उबंटू पर यह उम्मीद के मुताबिक व्यवहार करता है: यदि पोर्ट बंद है, तो मुझे मिल जाएगा Connection refused। अन्यथा, यह कुछ भी नहीं दिखा रहा है और echo $?बाहर निकलने का कोड दिखा रहा है1
जेसेक

3

मैं watchयहां उपकरण जोड़ता हूं :

watch nmap -p22,80 google.com

Every 2,0s: nmap -p22,80 google.com   Mon Jun 15 16:46:33 2015

Starting Nmap 6.40 ( http://nmap.org ) at 2015-06-15 16:46 NOVT
Nmap scan report for google.com (127.0.0.1)
Host is up (0.0012s latency).
rDNS record for 127.0.0.1: google.com
PORT     STATE  SERVICE
22/tcp open   ssh
80/tcp closed http

Nmap done: 1 IP address (1 host up) scanned in 0.18 seconds

3

इसके साथ सरल है nmap

उदाहरण:

#sintaxis
nmap -p [port] hostName
#first is command, after scan ports, type port - port or range ports, and ip or name of website...

## Scan port 80
nmap -p 80 onofri.org

## Scan TCP port 80
nmap -p T:80 onofri.org

## Scan UDP port 53
nmap -p U:53 onofri.org

## Scan two ports ##
nmap -p 80,443 onofri.org

## Scan port ranges ##
nmap -p 80-200 onofri.org

## Combine all options ##
nmap -p U:53,111,137,T:21-25,80,139,8080 onofri.org
nmap -p U:53,111,137,T:21-25,80,139,8080 server1.cyberciti.biz
nmap -v -sU -sT -p U:53,111,137,T:21-25,80,139,8080 onofri.org

## Scan all ports with * wildcard ##
nmap -p "*" 192.168.1.1

## Scan top ports i.e. scan $number most common ports ##
nmap --top-ports 5 onofri.org
nmap --top-ports 10 onofri.org

अधिक जानकारी के लिए इसे देखें:

कमांड लाइन में यह टाइप करें: man nmap

http://www.cyberciti.biz/networking/nmap-command-examples-tutorials/ http://www.tecmint.com/nmap-command-examples/


1

क्या आप संचार का परीक्षण करने या उस नोड पर पोर्ट 80 से प्रतिक्रिया प्राप्त करने की कोशिश कर रहे हैं? PINGICMP के माध्यम से एक विशिष्ट मेजबान को संचार स्थापित करने की कोशिश करेगा जिसका बंदरगाहों से कोई लेना-देना नहीं है।

इसके बजाय पोर्ट जानकारी और परीक्षण संचार की जाँच करने के लिए http://nmap.org/ आज़माएँ :

nmap -v -p 80 onofri.org

1
निश्चित नहीं है कि आप किस संस्करण का उपयोग कर रहे हैं। मेरे सिस्टम पर, इसे 'nmap -v -p 80 onofri.org' की तरह -v और -p को अलग करना होगा। ऐसा इसलिए है क्योंकि -v और -vv का मतलब अलग-अलग चीजों से है, -v एक तर्क के रूप में अधिक v ले रहा है।
फाल्स्नेम्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.