nmap 如何区分封闭端口和过滤端口

网络工程 监控 通讯协议
2021-07-10 18:25:13

假设我们正在进行 TCP 连接扫描。

谷歌上的 nmap 扫描返回以下输出:

港口国务

80/tcp 打开http

443/tcp 打开https

但是,例如,如果我尝试在 google.com 上的端口 12 上使用 netcat 或 telnet 打开套接字,则 netcat 或 telnet 会无限期挂起。

Nmap 检测到端口 12(以及除 80 或 443 之外的其他端口)已关闭,但启动与它们的 TCP 连接不会立即关闭。

nmap 怎么知道那些端口没有被过滤而是关闭?

2个回答

使用 nmap 扫描,您通常会获得 3 种状态:

  • 打开 - 远程计算机以 SYN/ACK 响应您的 SYN
  • 关闭 - 远程计算机拒绝了您使用 RST 数据包的连接尝试
  • 过滤 - 什么都没有回来,超时发生

打开一个 netcat 到端口 80 并等待不会做任何事情。端口 80(通常)意味着 http 服务器正在侦听另一端,并且正在等待 HTTP 命令(直到它自己超时)。netcatting 到 80 端口后,尝试 sedinng aGET /以查看是否收到回复(可能是 http 错误)。

关闭的端口是没有任何软件侦听的端口,因此在该系统上尝试连接到该端口将导致系统发回 TCP RST 数据包。

另一方面,过滤端口通常是被网络路径中的防火墙阻止的端口,因此尝试连接到该系统上的该端口将导致根本没有任何返回......甚至不是TCP RST ...因此连接尝试将一直存在,直到 TCP 连接尝试超时。