我对网络不太感兴趣,我有以下与 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
答案2
答案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]