Answers:
您无法ping端口,因为Ping正在使用没有端口概念的ICMP。端口属于传输层协议,例如TCP和UDP。但是,您可以使用nmap查看端口是否打开
nmap -p 80 example.com
编辑:正如flokra所提到的,nmap不仅仅是ping-for-ports-thingy。它是安全审核员和黑客最好的朋友,并提供许多不错的选择。检查文档中所有可能的标志。
-PN
以跳过nmap在测试给定端口之前通常执行的主机发现。
nmap windows
)安装在Windows上,但是它不能通过VPN使用。PaPing似乎无法扫描一定范围的地址。我在下面发布了Python脚本,该脚本将通过VPN扫描一系列地址上的一系列端口。
brew install nmap
或MacPorts 安装nmap 。
打开到特定端口的telnet会话,例如:
# telnet google.com 80
Trying 74.125.226.48...
Connected to google.com.
Escape character is '^]'.
要结束会话,请点击Ctrl+ ]。
netcat
效果也很好,也不太冗长。
netcat
现在是内置的MacOS HighSierra,其中可以从HomeBrew安装telnetbrew install telnet
$ nc -vz google.com 80
Connection to google.com 80 port [tcp/http] succeeded!
time
like in 一起使用,time nc -vz www.example.com 80
您还将获得某种RTT。
如果您正在使用Powershell v4或更高版本进行Windows安装,则可以使用test-netconnection powershell模块:
Test-NetConnection <host> -port <port>
示例:Test-NetConnection example.com-端口80
此cmdlet也具有别名tnc
。例如tnc example.com -port 80
您可以使用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
-c *
恒定papinging(?)。
尝试curl
命令,例如:
$ curl host:port
例如:
$ curl -s localhost:80 >/dev/null && echo Success. || echo Fail.
Success.
上面的命令将在非零退出状态代码时返回Fail。在某些特殊情况下,例如响应为空或格式错误(请参阅参考资料man curl
),您可能希望成功处理特定的退出代码,因此请查看此帖子以获取更多详细说明。
curl
CentOS上默认存在它,所以我不需要安装任何东西。
IP="<ip>" ; PORT="<port>" ; curl -s "$IP:$PORT" > /dev/null && echo "Success connecting to $IP on port $PORT." || echo "Failed to connect to $IP on port $PORT."
我发现了使用PsPing的更简单的解决方案:
psping 192.168.2.2:5000
它是Windows Sysinternals的一部分。
PsPing实现Ping功能,TCP ping,延迟和带宽测量。
这是一个快速又肮脏的.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();
}
}
这是唯一适用于客户端计算机为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."
结果如下:
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.
需要更改顶部的四个变量以适合所需的超时,网络,主机和端口。在我的VPN上停留5.0秒似乎足以使它始终如一地正常工作,更少的时间(始终)未给出准确的结果。在我的本地网络上,0.5绰绰有余。
有一个名为tcping的lightweigth工具:http : //www.linuxco.de/tcping/tcping.html