![端口扫描器如何辨别局域网上的主机名?](https://linux22.com/image/1538628/%E7%AB%AF%E5%8F%A3%E6%89%AB%E6%8F%8F%E5%99%A8%E5%A6%82%E4%BD%95%E8%BE%A8%E5%88%AB%E5%B1%80%E5%9F%9F%E7%BD%91%E4%B8%8A%E7%9A%84%E4%B8%BB%E6%9C%BA%E5%90%8D%EF%BC%9F.png)
我使用的端口扫描器软件能够列出我的 LAN 上的 IP 地址及其主机名。我很困惑它是如何获取主机名的。例如,我在局域网上有几个 Raspberry Pi,端口扫描器软件能够列出它们的所有主机名。
我netstat -ant
在 Pi 上使用它来发现它没有监听除端口 22(SSH)之外的任何端口,所以我认为它无法响应任何其他协议。
我也尝试了各种nmap
命令,但没有一个命令能够显示主机名:
sudo nmap -sP 192.168.0.*
sudo nmap 192.168.0.102
sudo nmap -R 192.168.0.102
有人能告诉我我的端口扫描软件如何获取主机名吗?它会查询路由器吗?
附加信息:端口扫描器软件称为高级端口扫描器
答案1
最后我找到了一个开源项目,叫愤怒的 IP 扫描器,查看了源代码,找到了答案。
它基本上查询目标机器的UDP 端口 5353(多播 DNS)和端口 137(NetBIOS)来查找该机器的主机名。
我错过了那些端口,因为netstat -ant
只显示 TCP 端口。netstat -anu
会抓住它们。