是否可以 ping 地址:端口?

是否可以 ping 地址:端口?

我对网络不太感兴趣,我有以下与 Linux 相关的问题命令。

我可以只 ping 一个地址吗?例如:

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

或者我也可以 ping 一个地址:端口, 例如:onofri.org:80

如果我尝试这个,它不起作用:

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

是否可以 ping 类似地址:端口? 如果可能的话,为什么我尝试的方法没有效果?

答案1

您可以使用帕平,跨平台 TCP 端口测试,模拟 ping(端口 ping)的功能

(也可以看看Github因为 code.google.com 已经贬值)

paping -p 80 google.com

答案2

端口是一个概念UDPTCP. Ping 消息在技术上被称为ICMP 回显请求ICMP 回应属于ICMP。ICMP、TCP 和 UDP 是“兄弟”;它们并不相互依赖,而是在 IP 之上运行的三个独立协议。

因此您无法ping使用端口。您要做的就是使用像这样的端口扫描器nmap

nmap -p 80 onofri.org

您还可以使用telnet onofri.org 80,如其他答案之一所建议的那样(如果端口被关闭或被过滤,它会出现错误)。

答案3

我用远程登录,因为它内置于许多平台中,无需额外下载。

只需使用 telnet 命令连接到要测试的端口即可。如果您收到以下消息或来自服务本身的消息,则表示该端口处于活动状态。

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

如果您知道所连接服务的命令序列,则可以键入命令 (HTTP/FTP 获取例如),并在终端中观察响应和输出。这对于测试服务本身非常有用,因为它会显示发送到客户端的错误信息,例如 HTTP 500 错误。

如果您收到连接被拒绝的消息,则表示端口已关闭。

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

答案4

您可以使用 netcat 连接到特定端口,以查看是否建立连接。-v 标志将增加详细程度以显示端口是打开还是关闭。-z 标志将导致 netcat 在建立连接后退出。然后,您可以通过 $? 使用退出代码来查看连接是否已建立。

$ 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

此外,您可以使用 mtr 和 -T 标志(表示 tcp)以及 -P 标志(表示端口)。这将执行类似于 TCP 上的跟踪路由(而不仅仅是 ICMP)的操作。不过,这可能有点过头了。

我必须编辑以添加此部分,因为我们无法将代码放在注释中。Knoppix 可能对其版本的 netcat 做了一些不同的事情,但这是我从 Linux Mint 中得到的

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

相关内容