使用-PS选项,Nmap将发送一个设置了SYN标志的空TCP数据包。默认目标端口为80(在配置文件里可以修改默认端口),但可以指定成其他端口,还可以指定端口列表(例如:-PS22-25, 80, 113, 1050, 35000),在这种情况下,将并行尝试针对每个端口进行探测。
SYN标志位意味着你尝试着与远程系统建立连接。通常情况,如果目标端口关闭,将发回RST(重置)数据包。如果端口恰好是打开的,则目标将响应SYN/ACK TCP数据包并进行TCP三次握手的第二步。运行Nmap的机器则通过使用RST响应而不是发送ACK数据包来拆除新建的连接。如果使用ACK数据包来响应则将完成三次握手并建立完整连接。
Nmap不关心端口是打开还是关闭。之前讨论的RST或SYN/ACK响应告诉Nmap主机可用且响应迅速。
在Unix机器上,通常只有特权用户root才能发送和接收原始TCP数据包。 对于非特权用户,将自动采用变通方法,针对每个目标端口的系统调用connect会被初始化。产生的效果就是将SYN数据包发送到目标主机,以尝试建立连接。 如果连接成功或收到失败的信息ECONNREFUSED,则底层TCP堆栈将收到SYN/ACK或RST,并且主机被标记为可用。 如果连接尝试一直挂起直到达到超时,主机将被标记为关闭。该方法对IPv6的地址无效,因为Nmap中尚不提供原始IPv6数据包构建支持。
在上面的例1中只有一台对ICMP探针进行回应,让我们换成SYN探针,针对这些网站的80端口再试一试。

例2: 更换SYN探针80端口,再试一次 #nmap -sn -PS80 -R -v microsoft.com ebay.com citibank.com google.com slashdot.org yahoo.com

第二次扫描结果看起来比第一次好一些,至少我们发现了2个IP地址在线。它说明了不同类型的主机会对不同探针类型做出响应。 Nmap支持同时使用多种扫描类型,以有效扫描各种网络。