Frage Ist es möglich, eine Adresse zu pingen: Port?


Ich bin nicht in der Vernetzung, und ich habe die folgende Frage bezüglich des Linux Klingeln Befehl.

Kann ich nur eine Adresse anpingen? Beispielsweise:

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

Oder kann ich auch pingen? Adresse: Hafen, beispielsweise: onofri.org:80?

Wenn ich dieses versuche, funktioniert es nicht:

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

Ist es möglich, etwas wie Adresse: Hafen? Wenn es möglich ist, warum funktioniert nicht, was ich versucht habe?


195
2018-06-16 18:17


Ursprung


Was versuchst du zu erreichen? Um den korrekten Dienstvorgang zu überprüfen, müssen Sie den Dienst tatsächlich abfragen und die Antwort auswerten. Ein Webserver könnte beispielsweise Ihre Verbindung akzeptieren, aber aufgrund einer Fehlkonfiguration einen Fehler zurückgeben. - Daniel B
Das ist ein Teil von dem, was ich an Telnet mag. Sie können sich mit einem Webserver verbinden und tippen GET /index.html HTTP\1.1 und sehen Sie die 200 Antwort (oder den Fehlercode) zusammen mit dem resultierenden Markup. - Frank Thomas
@FrankThomas HTTP\1.1? "Ja wirklich?" - glglgl
@Navin Vielleicht HTTP/1.1... - glglgl
@glglgl; Was? Hast du nie einen Hack hingelegt, wo ein Schrägstrich hingehört? aber du hast recht, es sollte ein Schrägstrich sein. - Frank Thomas


Antworten:


Sie können verwenden Papieren, ein plattformübergreifender TCP-Port-Test, emuliert die Funktionalität von Ping (Port-Ping)

(siehe auch Github wie code.google.com wurde abgeschrieben)

paping -p 80 google.com

18
2018-01-21 08:02



Etwas Erklärung dessen, was dieses Programm tut, wäre hilfreich. - David Schwartz
für jeden, der diese Antwort findet, wie ich es tat, nur um zu finden, dass pappen nicht in irgendwelchen Repositories ist und uralter Code ist, der nicht einmal auf ARM kompiliert wird - scrolle weiter nach unten zu der "hping" Antwort. Es ist ein perfekter Einstieg für Ping, wenn Sie einen Port testen müssen und leicht zugänglich in verschiedenen Repositories (zB Ubuntu, Arch) einschließlich ARM. - Mark


Ports sind ein Konzept von UDP und TCP. Ping-Nachrichten werden technisch als bezeichnet ICMP-Echoanforderung und ICMP Echoantwort welche sind Teil von ICMP. ICMP, TCP und UDP sind "Geschwister"; Sie basieren nicht aufeinander, sondern sind drei separate Protokolle, die auf IP basieren.

Deshalb kannst du nicht ping ein Hafen. Was du kann tu, benutze einen Portscanner wie nmap.

nmap -p 80 onofri.org

Sie können auch verwenden telnet onofri.org 80, wie in einer der anderen Antworten vorgeschlagen (Es gibt einen Fehler, wenn der Port geschlossen oder gefiltert ist).


297
2018-06-16 18:19



+1 du verstehst es richtig. ICMP basiert auf IP, das ein Konzept von IP-Adressen, aber keine Ports hat. TCP und UDP sind auch über IP, und es sind diese Protokolle, die "Ports" hinzufügen. ICMP, TCP und UDP sind hinsichtlich des Protokolls, auf dem sie ausgeführt werden, alle auf derselben "Ebene". - Jason C
+1. Viele, viele Leute denken, dass wenn sie etwas nicht anpingen können, sie nicht mit ihm verbinden können ... aber wie Sie sagen, ICMP ist anders als TCP und UDP: wenn Sie vorhaben zu dienen, sagen wir, eine Webseite auf TCP 80, als müsste man nur TCP 80 auf der Firewall öffnen, sonst nichts (also Ping an die gleiche IP könnte (; sollte!) zB blockiert werden) - Olivier Dulac
Um Informationen genau zu halten, ist ICMP kein Transportschicht-Protokoll wie TCP oder UDP. Wie eine Reihe von Protokollen passt es nicht vollständig in die konzeptionellen Modelle des Netzwerks, aber es wird im Allgemeinen als ein Netzwerk- / Netzwerkarbeitsschicht-Protokoll angesehen, wie es IP ist. Es wurde manchmal auch als L3.5-Protokoll bezeichnet. - YLearn
@BenjiWiebe, einverstanden, aber wieder, für die Genauigkeit sollte die Aussage gemacht werden, weshalb ich es hinzugefügt habe. Alles, was bisher gesagt wurde, ist, dass ICMP, TCP und UDP verwandt sind. Der höchst gewählte Kommentar geht sogar so weit zu sagen, dass sie alle auf der gleichen "Ebene" sind. Während dies für den durchschnittlichen Benutzer keinen Unterschied macht, gibt es viele nicht-durchschnittliche Benutzer, die diese Site besuchen. - YLearn
@OlivierDulac Ich weiß nicht, ob Sie sollte blockiere es. Die meisten Webserver, die ich kenne, lassen es offen. ICMP lässt das Internet herumlaufen. Warum sollten Sie wollen, dass die Leute denken, dass sie Sie nicht erreichen können, wenn sie können? - Cruncher


ich benutze Telnet, da es in viele Plattformen ohne zusätzliche Downloads eingebaut ist.

Verwenden Sie den Befehl telnet, um eine Verbindung zu dem Port herzustellen, den Sie testen möchten. Wenn Sie die folgende Nachricht oder eine Nachricht vom Dienst selbst erhalten, ist der Port aktiv.

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

Wenn Sie die Befehlsfolge für den Dienst kennen, zu dem Sie eine Verbindung herstellen, können Sie einen Befehl eingeben (HTTP / FTP GET zum Beispiel) und beobachten die Antwort und Ausgabe im Terminal. Dies ist sehr nützlich, um den Dienst selbst zu testen, da er Ihnen Fehlerinformationen anzeigt, die an den Client gesendet werden, wie HTTP 500-Fehler.

Wenn Sie eine Nachricht erhalten, dass die Verbindung abgelehnt wurde, wird der Port geschlossen.

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

78
2018-06-16 18:24



Auch wenn der Bildschirm komplett schwarz wird, ist es ein Zeichen, dass du auch verbunden bist. - Tensigh
Ausgezeichneter Vorschlag. Ich habe das benutzt, um zu testen, ob ein Webserver in Betrieb war, wenn ein Webbrowser keine einfache Option war. - Brandon
@Brandon gefällt, wenn sshing in Dev-Maschinen ^. ^ - Cruncher
Entwickler-Tools in Browsern sind viel einfacher, da sie immer noch die richtigen HTTP-Anforderungsheader senden, aber Sie können die vollständige HTTP-Antwort überprüfen. Wenn Sie die Anfrage dann auch noch anpassen möchten, dann ist Telnet der richtige Weg. - Lightness Races in Orbit
Ich denke, alle Antworten hier verpassen die wichtigste Information. Technisch wäre es nicht möglich, einen Port wie folgt zu "pingen"? Sie können eine TCP / UDP-Verbindung herstellen, und Sie zählen, wie viele Millisekunden diese Verbindung hergestellt wurde. - David


Ja, benutzen HPing das zu tun:

$ 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

Beachten Sie, dass Sie root-Rechte (oder SELinux-Fähigkeiten) benötigen, um rohe IP-Pakete zu erstellen, genau wie ping (was höchstwahrscheinlich auf Ihrem System geschieht).


40
2018-06-17 15:35



Ich wünschte, dies wäre die "akzeptierte Antwort". hping war einfach in mehreren Repos zu finden, im Gegensatz zu popping, das uraltes crafty code ist, das auf ARM nicht kompiliert wird. Im Gegensatz zu NMAP gibt haping einen Statuscode zurück, der leicht aus einem Shell-Skript getestet werden kann. Daher ist es ein perfekter Ersatz für die Stelle, an der Sie sonst ping verwenden würden. Danke für diese Antwort, eine Schande, dass ich nicht weit genug gescrollt habe, um es zu sehen und musste es stattdessen auf einer anderen Website finden. - Mark


Sie können netcat verwenden, um sich mit einem bestimmten Port zu verbinden, um zu sehen, ob Sie eine Verbindung erhalten. Das Flag -v erhöht die Ausführlichkeit, um anzuzeigen, ob der Port offen oder geschlossen ist. Das Flag -z bewirkt, dass netcat beendet wird, sobald eine Verbindung besteht. Sie können dann die Exit-Codes über $? um zu sehen, ob die Verbindung hergestellt wurde oder nicht.

$ 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

Außerdem können Sie mtr mit dem -T-Flag für tcp und dem -P-Flag zum Angeben eines Ports verwenden. Dies wird etwas tun, das einem Traceroute über TCP ähnelt und nicht nur ICMP. Dies kann jedoch übertrieben sein.

Seufzer  Ich muss bearbeiten, um dieses Bit hinzuzufügen, da wir Code in Kommentare nicht einfügen können. Knoppix macht vielleicht etwas anderes mit seiner Version von Netcat, aber das ist, was ich von Linux Mint bekomme

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

40
2018-06-16 21:15



Problem ist, wenn Sie es versuchen nc -z www.google.com 8000  Es kann eine lange Zeit dauern - 5 Sekunden plus. Wenn ich mache -w 1 dann dauert es 5 Sekunden. Wenn ich mache -w 3 dann dauert es 3 mal länger .. 15 Blitze des Cursors, 15 Sekunden. -w 1 soll eine Sekunde sein, aber auf Cygwin getestet. 5 Sekunden. Es ist super schnell, wenn ein Server am Port ist, aber ein bisschen langsam, wenn nicht. - barlop
Fluche keine Zeilenumbrüche in Kommentaren ... Das scheint ein Bug mit Cygwin zu sein. Testen mit Linux Mint zeigt eine Verzögerung von mehreren Sekunden an. hat dies zum Testen ausgeführt: date; nc-zw5 www.google.com 8000; date - Falsenames
Ich habe auch @BenjiWiebe mit den nmap-Anfragen upbowned. nc ist einfacher in ein Skript zu schreiben, aber es ist VIEL einfacher, nmap visuell zu verwenden. - Falsenames
Versuche es in knoppix. nc -zv -w 1 www.google.com Wie kannst du es nur einmal versuchen? Wenn ich es versuche, funktioniert ja -w 1, aber es wiederholt jede Sekunde, bis ich Ctrl-C mache. - barlop
Nicht sicher, was die Knoppix-Version von 'nc -zv -w 1 www.google.com 80' macht. Das funktioniert auf meinem System gut, es wird einmal abgefragt und gelöscht, genau wie -z es tun soll. Ohne die angegebene Portnummer gibt meine aus, dass kein Port angegeben ist. - Falsenames


Du könntest auch benutzen nping (Teil von 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

15
2018-06-23 09:57



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


Sie können dies in ashell mit Python als ein nicht so kurzer Liner tun:

$ 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

5
2017-12-18 22:11



Du fügst das nicht in python dumme Gans ein. Fügen Sie es in bash ein. - AXE-Labs
Ja, ich bin ein Idiot, Kommentar entfernt, danke, es hat perfekt funktioniert. - rob
Schrank, loooool - srghma


Versuchen Sie, die Kommunikation zu testen oder eine Antwort von Port 80 auf diesem Knoten zu erhalten? PING Ich werde versuchen, die Kommunikation zu einem bestimmten Host über ICMP herzustellen, die nichts mit Ports zu tun hat.

Stattdessen versuche es http://nmap.org/ Port-Info prüfen und Kommunikation testen:

nmap -v -p 80 onofri.org

2
2018-06-19 15:58



Nicht sicher, welche Version von nmap du verwendest. Auf meinem System müssen -v und -p wie "nmap -v -p 80 onofri.org" getrennt werden. Dies liegt daran, dass -v und -vv verschiedene Dinge bedeuten, -v mehr v als Argument nehmen. - Falsenames