sfu*_*ger 807
您无法 ping 端口,因为 Ping 使用的是没有端口概念的ICMP。端口属于传输层协议,如 TCP 和 UDP。但是,您可以使用nmap查看端口是否打开
nmap -p 80 example.com
Run Code Online (Sandbox Code Playgroud)
编辑:正如 flokra 提到的,nmap 不仅仅是一个 ping-for-ports-thingy。它是安全审计员和黑客最好的朋友,并提供大量很酷的选项。检查文档以获取所有可能的标志。
小智 215
打开到特定端口的 telnet 会话,例如:
# telnet google.com 80
Trying 74.125.226.48...
Connected to google.com.
Escape character is '^]'.
Run Code Online (Sandbox Code Playgroud)
要关闭您的会话,请点击Ctrl+ ]。
Kje*_*jær 138
如果您使用 powershell v4 或更高版本进行 Windows 安装,则可以使用 test-netconnection powershell 模块:
Test-NetConnection <host> -port <port>
Run Code Online (Sandbox Code Playgroud)
示例:Test-NetConnection example.com -port 80
这个 cmdlet 也有别名tnc。例如tnc example.com -port 80
Rah*_*til 115
$ nc -vz google.com 80
Connection to google.com 80 port [tcp/http] succeeded!
Run Code Online (Sandbox Code Playgroud)
小智 82
您可以使用PaPing:
http://code.google.com/p/paping
C:\>paping.exe www.google.com -p 80 -c 4
paping v1.5.1 - Copyright (c) 2010 Mike Lovell
Connecting to www.l.google.com [209.85.225.147] on TCP 80:
Connected to 209.85.225.147: time=24.00ms protocol=TCP port=80
Connected to 209.85.225.147: time=25.00ms protocol=TCP port=80
Connected to 209.85.225.147: time=24.00ms protocol=TCP port=80
Connected to 209.85.225.147: time=24.00ms protocol=TCP port=80
Connection statistics:
Attempted = 4, Connected = 4, Failed = 0 (0.00%)
Approximate connection times:
Minimum = 24.00ms, Maximum = 25.00ms, Average = 24.25ms
Run Code Online (Sandbox Code Playgroud)
ken*_*orb 33
尝试curl命令,例如:
$ curl host:port
Run Code Online (Sandbox Code Playgroud)
例如:
$ curl -s localhost:80 >/dev/null && echo Success. || echo Fail.
Success.
Run Code Online (Sandbox Code Playgroud)
上面的命令将在非零退出状态代码上返回失败。在某些特定情况下,例如空响应或格式错误的响应(请参阅 参考资料man curl),您可能希望成功处理特定的退出代码,因此请查看此帖子以获取更详细的说明。
Aya*_*ick 24
我使用 PsPing 找到了一个更简单的解决方案:
psping 192.168.2.2:5000
Run Code Online (Sandbox Code Playgroud)
它是Windows Sysinternals的一部分。
PsPing 实现 Ping 功能、TCP ping、延迟和带宽测量。
c4f*_*t0r 17
在 Linux 上,您可以使用hping,但它使用 TCP,而不是 ICMP。
hping example.com -S -V -p 80
Run Code Online (Sandbox Code Playgroud)
这是一个快速而肮脏的 .NET 控制台应用程序:
static void Main(string[] args)
{
string addressArgument = null, portArgument = null;
System.Net.Sockets.TcpClient tcpClient = null;
try
{
addressArgument = args[0];
portArgument = args[1];
int portNumber;
portNumber = Int32.Parse(portArgument);
tcpClient = new System.Net.Sockets.TcpClient();
tcpClient.ReceiveTimeout = tcpClient.SendTimeout = 2000;
IPAddress address;
if (IPAddress.TryParse(args[0], out address))
{
var endPoint = new System.Net.IPEndPoint(address, portNumber);
tcpClient.Connect(endPoint);
}
else
{
tcpClient.Connect(addressArgument, portNumber);
}
Console.WriteLine("Port {0} is listening.", portArgument);
}
catch (Exception e)
{
if (e is SocketException || e is TimeoutException)
{
Console.WriteLine("Not listening on port {0}.", portArgument);
}
else
{
Console.WriteLine("Usage:");
Console.WriteLine(" portquery [host|ip] [port]");
}
}
finally
{
if (tcpClient != null)
tcpClient.Close();
}
}
Run Code Online (Sandbox Code Playgroud)
这是唯一适用于客户端计算机为 Windows Vista 或 Windows 7 的 VPN 的解决方案,因为其他列出的答案根本不起作用。这个答案以前被删除了,不应该被删除,因为这是现实世界中常见情况的唯一解决方案。由于没有可用于删除的上诉,我重新发布它是为了避免其他人在尝试使用其他答案时感到沮丧。
下面的示例查找在 Windows 7 上运行的客户端打开了 VNC/端口 5900 的 VPN 上的哪些 IP。
一个简短的 Python (v2.6.6) 脚本,用于扫描给定的 IP 和端口列表:
from socket import *
fTimeOutSec = 5.0
sNetworkAddress = '192.168.1'
aiHostAddresses = range(1,255)
aiPorts = [5900]
setdefaulttimeout(fTimeOutSec)
print "Starting Scan..."
for h in aiHostAddresses:
for p in aiPorts:
s = socket(AF_INET, SOCK_STREAM)
address = ('%s.%d' % (sNetworkAddress, h))
result = s.connect_ex((address,p))
if ( 0 == result ):
print "%s:%d - OPEN" % (address,p)
elif ( 10035 == result ):
#do nothing, was a timeout, probably host doesn't exist
pass
else:
print "%s:%d - closed (%d)" % (address,p,result)
s.close()
print "Scan Completed."
Run Code Online (Sandbox Code Playgroud)
结果如下:
Starting Scan...
192.168.1.1:5900 - closed (10061)
192.168.1.7:5900 - closed (10061)
192.168.1.170:5900 - OPEN
192.168.1.170:5900 - closed (10061)
Scan Completed.
Run Code Online (Sandbox Code Playgroud)
需要更改顶部的四个变量以适合所需的任何超时、网络、主机和端口。在我的 VPN 上 5.0 秒似乎足以始终如一地正常工作,更少没有(总是)给出准确的结果。在我的本地网络上,0.5 已经足够了。