我如何知道某个端口是否已打开?

我如何知道某个端口是否已打开?

我在 Windows 7 电脑上安装了 Apache 服务器。我可以通过输入以下命令显示默认的 index.phphttp://本地主机/在我的浏览器的地址行中。

但是,我仍然无法通过输入我的计算机的 IP 地址来查看此页面(无论是本地(来自同一台计算机)还是全局(来自连接到互联网的另一台计算机))。

有人告诉我需要打开 80 端口。我按照描述的方式打开了它这里),但并没有解决问题。

首先我想检查哪些端口已打开,哪些端口未打开。例如,我不确定在尝试打开之前我的端口 80 是否已关闭。我也不确定在尝试打开之后它是否已打开。

我尝试运行一个用 Python 编写的非常简单的 Web 服务器。为此,我使用了端口 81,它成功了!我没有尝试打开端口 81。因此,默认情况下它是打开的。那么,如果默认打开 81,为什么 80 不打开?或者它是打开的?

附加信息:
1. 在我的 httpd.conf 文件中,我有“Listen 80”。2
.本网站告诉我我的电脑上的 80 端口已打开。3
. 如果我尝试http://我的ip:80http://我的ip:81。在最后一种情况下,浏览器(Chrome)会向我提示链接已损坏。在第一种情况下,我收到:禁止访问您无权访问此服务器上的 /。4
. IE 会提示“该网站拒绝显示此网页”。

答案1

如果您只是从外部检查端口。请使用此工具:

http://www.yougetsignal.com/tools/open-ports/

它将尝试连接到您的 IP 地址上的特定端口,并让您知道它对外界是否开放或关闭。

本地问题也存在?听起来好像是 Windows 7 防火墙切断了您的连接。使用本教程添加例外...

http://www.sevenforums.com/tutorials/542-windows-firewall-add-remove-exception.html

答案2

从命令提示符运行netstat -a -n或将显示您机器上打开的所有网络连接和侦听端口。意味着它正在侦听所有 IP 地址(本地主机和您的公共/私有 IP 地址)的端口,而 意味着它只在本地主机上侦听。您可以添加到命令中,它将显示哪个可执行文件正在使用该端口。您可以使用 Windows 7 中“资源监视器”下“网络”选项卡的“侦听端口”部分获取相同的信息。ss -a -n0.0.0.0:8080127.0.0.1:80-b

答案3

如果您想从另一台服务器查看它是否打开,您可以telnet serverName 80查看会话是否打开。如果没有,那么要么服务器没有监听,要么端口被防火墙阻止。

如果它打开然后立即关闭,至少是 Windows 2003,那么软件(例如 Exchange)可能未配置为侦听该特定接口或 IP,但它正在侦听其他端口。我见过 IIS 这样做,因为它很愚蠢,Apache 可能不会。

答案4

要查看开放的端口,您可能应该使用 nmap 他们有一个 Windows 版本:http://nmap.org/dist/nmap-5.21-setup.exe

如果你从本地主机看到你的 80 端口打开了,这是不够的 - 如果你从其他地方尝试,可能会有一些东西阻碍你,这就是为什么我推荐 nmap

从客户端输入:nmap ip-of-your-server

相关内容