Nmap 显示端口 5222 已关闭,但使用 xmpp(5222) 的 pidgin 是 运行。这怎么可能?

Nmap shows that port 5222 is closed but pidgin which uses xmpp(5222) is running. How is this possible?

我正在学习使用Nmap。我设置了使用端口 5222(xmpp) 进行聊天的 pidgin。但是当我扫描我的端口时,端口 5222 显示为已关闭。但聊天是有效的。这怎么可能?

在您可以有意义地使用像 Nmap 这样的程序之前,您需要更多地了解基本网络协议的工作原理。在这种情况下,XMPP 使用 TCP 进行通信。您的聊天程序是一个 TCP 客户端,因此它不会 listen 在任何端口上,而是 connects 到正在侦听 TCP 端口 5222 的服务器. 您可以使用大多数操作系统中包含的程序 netstat 来查看此连接。在 Windows 上:netstat -an | findstr "5222"。在 Linux 上:netstat -an | grep 5222.

您应该会看到包含 IP 地址和端口号的两列。聊天服务器的地址将以数字 5222 列出,因为这是服务器正在使用的端口。您计算机的地址将与一个高编号端口一起列出,例如 35791。服务器必须使用一个已知端口以便您与其联系,但是您计算机使用的源端口包含在 TCP 数据包中,如 "return address" 在信封上。

Nmap(与其他端口扫描器一样)在 listening 端口上寻找服务。它能够发现聊天服务器,但不能发现聊天客户端。同样,它可以找到网络服务器,但找不到网络浏览器,因为浏览器是建立传出连接的客户端,而不是侦听传入连接的服务。