当前位置:首页 > 技术 > 正文内容

深入解析Nmap核心端口扫描技术:TCP连接、SYN与UDP扫描

访客 技术 2026年6月22日 9

本文对应的TryHackMe实验房间地址:https://tryhackme.com/room/nmap02

本文核心内容:详细解释Nmap中TCP连接扫描、TCP SYN扫描和UDP端口扫描的工作机制与差异。

TCP和UDP端口的状态分类

IP地址用于标识网络上的主机,而TCP或UDP端口则用于定位该主机上运行的特定服务。例如,HTTP服务通常绑定到TCP 80端口,HTTPS服务则使用443端口,但管理员也可自定义这些端口。在同一IP地址上,每个端口只能被一个服务监听。

基础端口状态分为两种:

  • Open:端口上存在正在监听的服务。
  • Closed:端口上没有服务监听。

实际环境中,防火墙等安全设备会增加复杂性。Nmap定义了六种状态:

  • Open:服务正在监听。
  • Closed:端口可访问,但无服务监听。
  • Filtered:因防火墙或设备拦截,Nmap无法判断端口状态。
  • Unfiltered:端口可访问,但Nmap无法确定状态(常见于ACK扫描)。
  • Open|Filtered:无法判定是开启还是被过滤。
  • Closed|Filtered:无法判定是关闭还是被过滤。

TCP头部标志位

Nmap的多种TCP扫描依赖对TCP头部标志位的操控。TCP头部前24字节中,标志位区域尤为关键:

  • URG:紧急指针有效,数据需优先处理。
  • ACK:确认号有效,用于确认数据接收。
  • PSH:推送数据,要求立即交付给应用层。
  • RST:重置连接,由防火墙或目标主机发送以中断通信。
  • SYN:同步序列号,用于建立TCP连接。
  • FIN:发送方无更多数据发送。

TCP连接扫描 (-sT)

TCP连接扫描通过完成三次握手来确认端口状态。过程如下:客户端发送SYN包,若端口开放,服务器回应SYN/ACK,客户端再发送ACK完成握手。之后,Nmap发送RST/ACK断开连接。

此扫描方式适用于非特权用户(非root或非sudoer)。默认扫描1000个常见端口,可通过-F缩减至100个。示例命令及输出:


nmap -sT 10.10.10.1

输出结果会列出开放端口及其服务信息。

TCP SYN扫描 (-sS)

SYN扫描是Nmap的默认模式,但需要root权限。它不完成三次握手:发送SYN后,若收到SYN/ACK即判定端口开放,并立即回复RST断开连接。这种方式更隐蔽,降低被日志记录的风险。

扫描关闭端口时,目标会回复RST/ACK。示例命令:


sudo nmap -sS 10.10.10.1

与TCP连接扫描相比,SYN扫描更快且不易被察觉。

UDP扫描 (-sU)

UDP是无连接的,因此扫描方式不同:发送UDP数据包后,若端口开放,通常无响应(Nmap据此判定为开放或过滤);若端口关闭,目标会返回ICMP"端口不可达"错误(类型3,代码3)。

由于UDP扫描需等待超时,速度较慢。可添加-F(快速模式)和-v(详细输出)提升效率。示例:


sudo nmap -sU -F -v 10.10.10.1

端口范围与性能调优

可自定义扫描端口:

  • -p 22,80,443:扫描指定端口。
  • -p 1-1023:扫描范围。
  • -p-:扫描所有65535个端口。
  • --top-ports 10:扫描最常见的前10个端口。

速度控制通过-T0-T5实现,-T0最慢(避开IDS),-T5最快(可能丢包)。常用选项:

  • -T4:CTF及渗透测试常用。
  • -T1:实战中保持隐蔽。

更细粒度控制:--min-rate 10--max-rate 50限制发包速率;--min-parallelism 512设置并行探针数。

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

linux screen 用法详情 (nohup 的替代方案)

一、screen 是什么?能干嘛?screen 是一个终端复用器,可以:在一个 SSH 会话中开多个“虚拟终端”SSH 断线后,程序仍然在后台运行随时重新连接到原来的会话特别适合:nohup 的替代方案跑脚本 / 爬虫 / 训练模型运维、远程开发二、安装 screen# CentOS / Rocky / Almayum install -y screen# Debian / Ubuntuapt i...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。