Netcat 让我有点困惑,原因如下:
当我运行时:
nmap localhost
列出了一些端口,并列出了它们是打开还是关闭的信息。因此,如果我运行命令 :nc -l -p 60000
并在另一个终端中:
nmap localhost -p 60000
将列出端口 60000 并且它表示它已打开。
如果它停止聆听,它就关闭了。我认为 netcat 监听器只是在监听,我在这里理解的是它打开了特定的端口?
为什么当我运行nmap localhost
命令时没有列出端口?
总是只有几个端口。
答案1
TCP 端口只是用作地址的数字。说端口是“开放的”意味着进程已向操作系统注册该端口号上的传入连接,并且 Nmap 和程序之间没有任何内容正在停止连接。端口的默认状态是“关闭”,这意味着没有进程向操作系统注册该端口上的连接,因此操作系统将拒绝任何此类连接。
当您在端口 60000 上启动 netcat 侦听器时,它已准备好接受该端口上的一个连接。当您使用 Nmap 扫描它时,连接被接受,因此 Nmap 将其标记为“打开”。但随后 netcat 侦听器会退出,因为它已经处理了一个连接,因此下次该端口将被标记为“已关闭”。
传统网猫一次只能处理一个连接。OpenBSD 网络猫和网络猫可以使用该选项接受端口上的多个连接-k
。
您可以使用半开 TCP SYN 扫描选项 ( -sS
) 来避免与 Nmap 建立完整连接,该选项需要 root 权限才能使用。在这种情况下,Nmap 无法建立完整的连接,因此操作系统永远不会通知 netcat 连接,并且它不会退出。这是使用 root 权限进行 TCP 扫描的默认扫描类型。