为什么打开的端口在网络中没有响应?

网络工程 ip 通讯协议 UDP 传输协议 第4层
2021-07-14 15:21:14

当 Nmapopen|filtered无法确定端口是打开还是过滤时,它会将端口置于状态。对于开放端口没有响应的扫描类型,会发生这种情况。没有响应也可能意味着数据包过滤器丢弃了探测或它引起的任何响应。所以 Nmap 不能确定端口是打开还是被过滤了。UDP、IP 协议、FIN、NULL 和 Xmas 扫描以这种方式对端口进行分类。

我在 nMap 端口扫描基础上阅读了这篇文章。

2个回答

从您的评论中可以看出您不了解端口是什么。端口是某些第 4 层协议的地址TCP 和 UDP 使用端口,但其他第 4 层协议使用不同的东西,或者根本不使用。尝试将 UDP 地址(端口)与 TCP 一起使用,反之亦然,将不起作用。这就像尝试在 IPv4 中使用 IPX 或 IPv6 地址。仅仅因为 TCP 和 UDP 对它们的寻址使用相同的数字并不意味着端口是相同的。

当端口为 Open 时,这意味着应用程序已请求使用该协议,或者专门请求协议的端口号,或者只是接受协议为应用程序决定的随机端口号。

TCP 使用握手来促进其可靠性。当 TCP 端口打开时,另一台尝试连接的主机将开始握手。如果端口关闭,或者握手不正确,则 TCP 以 RST 响应。

UDP 不可靠,没有握手,也不会响应,尽管使用 UDP 端口的应用程序可能会响应。

您应该阅读各种扫描类型的说明https://nmap.org/book/man-port-scanning-techniques.html

UDP 是一种无连接协议。如果端口关闭,网络堆栈会以错误响应,但如果端口打开,它只是安静地将数据包沿堆栈向上传送到服务器应用程序。如果服务器应用程序收到合法请求,它可能会发送响应,但如果数据包看起来不像合法请求,它通常只会默默地丢弃它。

问题是 nmap 不知道服务器试图提供什么协议(尽管有时它可以根据目标端口号做出有根据的猜测)。所以当它没有得到响应时,它不知道这是因为数据包被防火墙丢弃了还是因为服务器进程没有响应特定的探测数据包

IP 协议扫描类似(注意:此扫描使用“端口”号选项来选择协议号)。Nmap 可以报告“协议无法访问”错误,但它无法区分防火墙丢弃的数据包与目标上的协议实现之间的区别,只是选择忽略格式错误的数据包。

对于 TCP FIN/null/xmas 扫描,这些是使用意外(未在正常 TCP 通信中使用)标志组合发送的数据包,如果发送到开放端口,TCP 规范说这些应该简单地丢弃。OTOH 如果端口关闭,则数据包满足触发“rst”响应的较早规则。同样,扫描器无法区分目标接收到的未采取任何措施的数据包与防火墙丢弃的数据包之间的区别。