nmap 没有检测到明确开放的 udp 端口

nmap 没有检测到明确开放的 udp 端口

我在本地机器上打开了端口 4000,如下所示:

nc -lvup 4000

然后尝试连接到同一端口,如下所示:

nc -vu 127.0.0.1 4000

并能够成功连接并来回发送和接收文本。但是,当我监听第一个代码片段中显示的同一端口,然后尝试使用

nmap -sU 127.0.0.1 -p 4000

结果如下:

Nmap scan report for localhost (127.0.0.1)
Host is up (0.000061s latency).

PORT     STATE  SERVICE
4000/udp closed icq

既然第一次测试确定端口已打开,那么难道不应该说打开吗?请说清楚,因为我对此真的很困惑。

答案1

不。你不明白发生了什么。这是 UDP,没有連接

当你运行第二个程序nc并输入一些内容时,它只会发送数据包。然后你通过其他方式(查看通信的另一侧,例如另一台计算机的屏幕)确认通信已发生。如果没有“监听” nc,则“发送”nc 会愉快地发送相同的数据包,而不知道这些数据包是已接收还是已丢弃。

也是如此nmap。它发送数据包,没有收到任何答复,并决定其数据包消失在黑洞中。

这是 UDP,它就是这样。它没有内在的接收确认。如果应用程序需要它,它会自己进行确认。而且由于我们这里没有应用程序级协议来执行此操作,因此 nmap 没有看到任何答案,没有检测到“开放端口”。

相比之下,TCP 具有内置确认(ACK),这就是我们可以可靠地检测端口是否开放的原因。

相关内容