有很多工具,如 nmap,我正在使用一个用于 android 的工具,它可以发现我连接到的网络上的每个(?)主机。我不明白程序发送什么样的数据包来找出这些主机。
他们发送广播数据包吗?他们是否使用子网掩码计算其网络中所有可能的 IP,然后将 ICMP 数据包发送到每个地址,然后期待答案?
有很多工具,如 nmap,我正在使用一个用于 android 的工具,它可以发现我连接到的网络上的每个(?)主机。我不明白程序发送什么样的数据包来找出这些主机。
他们发送广播数据包吗?他们是否使用子网掩码计算其网络中所有可能的 IP,然后将 ICMP 数据包发送到每个地址,然后期待答案?
每个“发现”工具,如 nmap,在发现问题上都有自己的秘诀,您可以进行一些非常微不足道的扫描作为更高级的扫描。每个工具在能力方面并不相同。为了让我的回答简单,我不会描述像 nmap 这样复杂而详尽的工具可以做的所有内部技巧。(但是你可以在这里找到关于 nmap 如何在发现时工作的完整描述)。
就同一子网上的主机发现而言,最简单和最基本的方法是向子网中的每个 IP 地址发送 ping,并等待回复。
为了回答您的问题,为此发送的最广泛使用的数据包是:
问题是您不会发现不选择回复的主机,例如运行自己的防火墙的主机。
发送广播包也不是一个可靠的解决方案,因为一些主机不回复广播,通常是出于同样的原因(他们自己的防火墙)。
使这种技术更有效的一种方法是立即检查扫描主机的 ARP 表,并检查是否有任何 MAC 地址与我们之前发送数据包的 IP 相关联,因为 ARP 流量不会被 IP 阻塞防火墙。
如果您想更进一步,ARP 发现在某些网络(如某些无线点)上也不可靠,因为安全性仅限制主机和网关之间的流量。因此,您将无法与直接连接到网络的其他主机“对话”,网关除外。
最后一件事:您正在谈论“您连接的网络”。如果网络包含多个子网,当您尝试扫描另一个子网而不是您所在的子网时,您将失去 ARP 可见性(ARP 范围永远不会比子网宽)。