hacker之眼Nmap的原理及用法(二)最常用的扫描方法TCP SYN Ping
使用-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数据包构建支持。