有没有办法检查服务器上某个端口是否打开?
Is there a way to check if a certain port is open on server?
就像您 ping
服务器的 IP 来检查它是否正常一样,我们是否也可以检查 运行 服务器上的端口是否 active/open?
这只是我的想法,但你能在你的 ping
陈述中更具体一点吗?
`ping 127.0.0.1:7004`
我知道这个命令是不允许的,但是有没有办法在 Linux 和 Windows 中检查这个?
这取决于您对系统(客户端或服务器)的访问权限,您可以使用两个选项之一,
- 服务器端你可以使用
netstat -an
来检查哪些端口正在监听
- 从外部使用
telnet host port
,如果它不能在 linux 机器上运行,请尝试 telnet host:port
。
如果愿意并且能够安装软件,可以使用nmap
nmap -p 7004 127.0.0.1
或者,如果它面向互联网,请使用 http://www.yougetsignal.com/tools/open-ports/
等网络服务
对于 TCP 端口,您可以简单地使用 telnet
或 nc
来建立连接。如果成功,则端口已打开。
但由于 UDP 是无状态的,您无法检查开放端口的简单情况。你必须知道这个端口后面是哪个服务,并且知道如何发送有效的数据包,这样你才能得到答案。
由于大多数公司客户禁用了 telnet,我发现 windows 机器上的 powershell 命令对于 TCP 非常有用:
New-Object System.Net.Sockets.TcpClient("server", port)
就像您 ping
服务器的 IP 来检查它是否正常一样,我们是否也可以检查 运行 服务器上的端口是否 active/open?
这只是我的想法,但你能在你的 ping
陈述中更具体一点吗?
`ping 127.0.0.1:7004`
我知道这个命令是不允许的,但是有没有办法在 Linux 和 Windows 中检查这个?
这取决于您对系统(客户端或服务器)的访问权限,您可以使用两个选项之一,
- 服务器端你可以使用
netstat -an
来检查哪些端口正在监听 - 从外部使用
telnet host port
,如果它不能在 linux 机器上运行,请尝试telnet host:port
。
如果愿意并且能够安装软件,可以使用nmap
nmap -p 7004 127.0.0.1
或者,如果它面向互联网,请使用 http://www.yougetsignal.com/tools/open-ports/
等网络服务对于 TCP 端口,您可以简单地使用 telnet
或 nc
来建立连接。如果成功,则端口已打开。
但由于 UDP 是无状态的,您无法检查开放端口的简单情况。你必须知道这个端口后面是哪个服务,并且知道如何发送有效的数据包,这样你才能得到答案。
由于大多数公司客户禁用了 telnet,我发现 windows 机器上的 powershell 命令对于 TCP 非常有用:
New-Object System.Net.Sockets.TcpClient("server", port)