nmap - 网络扫描在 OSI 模型的哪一层进行?

标签 nmap osi

当使用 NMAP 及其“-A”选项进行网络扫描时,它在 OSI 模型的哪一层上工作?

作为引用,这是“-A”选项的描述: -A:“启用操作系统检测、版本检测、脚本扫描和路由跟踪”

最佳答案

OSI模型是一个7层的理论模型;有很多资源描述了哪些层映射到各种网络堆栈中的实际协议(protocol)层,所以我不会深入讨论。相反,我将向您详细介绍 TCP/IP 堆栈(共有 5 层)的每一层发生的情况。

  1. 物理层。 Nmap 不可避免地使用该层,尽管它通常不关心它。无论您使用的是 Cat 5 电缆、2.4 GHz radio 还是同轴电缆,您都无法在没有物理层的情况下使用网络。 Nmap 也不知道它是什么;网卡中的固件会处理该问题。
  2. 数据链路层。再次强调,Nmap 必须使用此层,否则不会将任何内容发送到目的地。但在某些情况下,Nmap 知道正在使用哪些第 2 层协议(protocol)。这些都需要root权限才能工作:
    • 在 Windows 上,Nmap 无法发送原始 IP 数据包(更多信息将在下一层中介绍),因此它会转而发送原始以太网(第 2 层)帧。这意味着它只能在类似以太网的数据链路上工作 - WiFi 可以,但 PPTP 不起作用。
    • 有一些探测第 2 层协议(protocol)的 NSE 脚本:lltd-discovery , broadcast-ospf2-discovery , sniffer-detect等等
    • 如果目标位于同一数据链路上,Nmap 将使用 ARP 来确定 IP 地址是否有响应。然后它会报告目标的 MAC 地址。对于 IPv6 目标,则使用邻居发现数据包。
  3. 网络层。Nmap 支持 IPv4 和 IPv6 网络层协议(protocol)。对于端口扫描(-sT TCP Connect 扫描除外),Nmap 会自行构建网络数据包并将其直接发送出去,绕过操作系统的网络堆栈。这也是 --traceroute 发生的地方,通过发送具有不同小生存时间 (TTL) 值的数据包来确定每个数据包过期的地址。最后,操作系统检测的部分输入来自网络层:初始 TTL 值、IP ID 分析、ICMP 处理等。
  4. 传输层。这是 Nmap 的“端口扫描器”核心工作的地方。端口是传输层地址;其中一些可能被目标上的服务使用(“开放”端口),而其他可能未使用(“关闭”端口)。 Nmap 可以扫描 3 种不同的传输层协议(protocol):TCP、UDP 和 SCTP。操作系统检测的大部分输入来自此处:TCP 选项、序列号分析、窗口大小等。
  5. 应用层。这是版本检测 (-sV) 接管的地方,将各种数据字符串(探测)发送到开放服务,让它们以唯一的方式响应方法。 SSL/TLS 是经过特殊处理的,因为其他服务可能分层在其之上(在这种情况下,它提供类似 OSI session 层的内容)。这也是绝大多数 NSE 脚本工作的地方,探测 HTTP、FTP、SSH、RDP 和 SMB 等服务。

关于nmap - 网络扫描在 OSI 模型的哪一层进行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47210759/

相关文章:

ssh - VISA 在 OSI 堆栈上的位置是什么?

networking - 网络单元定义 : Fragment, 段、数据包、帧、数据报

tcp - OSI 模型 : SSH vs HTTP

java - 如何用语言对 OSI 引用模型进行编程

Python Nmap 路径错误

linux - 可能 "loop"和 "output"在我的 bash 脚本中无法正常工作

nmap -/24 在 nmap 扫描中是什么意思?

ansible - Ansible Nmap list 插件

Python communicate() 与 NMap

java - Java中的UDP数据包路由