TCP端口扫描是通过SYN数据包进行的,用于扫描目标机器的端口上是否存在程序监听,通常意义上,普通个人机器上的某个端口如果有程序监听的话,那么它一般是系统漏洞。由于TCP是一个有连接的可靠协议,所以要使用三次握手来建立连接,三次握手的报文分别是(SYN)、(ACK SYN)和(ACK)。进行端口扫描时,首先向对方主机的某一端口发送(SYN)报文,如果对方这一端口上有程序在监听(或者说存在漏洞),则回复(SYN ACK)报文,否则回复(RST)报文。据此就可以判断对方端口上是否有程序在监听了,或者是否存在漏洞了。

UDP端口扫描是通过普通数据包进行的,也是用于扫描对方端口上是否有程序在运行,就像上面所说的,如果普通个人机器上存在这样的端口,那一般也是系统漏洞。但对于UDP来说,不存在监听这个概念,因为它是无连接不可靠的协议,发送数据包过去以后,通常也不会有任何的对等回应。因此,UDP端口扫描主要是检测是否存在ICMP端口不可达数据包。若该数据包出现,则说明对方这一端口上没有程序在监听,或者说该端口不存在漏洞,否则就说明该端口上有程序在监听,或者说存在漏洞。

呵呵,现在可以总结一下他们的区别了,主要是以下几点:

  1. TCP是有连接的协议,而UDP是无连接的;

  2. TCP扫描检测(ACK SYN)或者是(RST)报文,而UDP检测ICMP端口不可达报文;

  3. TCP协议是可靠但低效的,可以有效进行端口扫描,范围广,效率低,可以应用于任何网络中;UDP协议时不可靠但高效的,范围小,效率高,一般应用于局域网内部,随着网络规模的增大,UDP端口扫描的结果准确度会越来越差,极端情况是,如果对Internet使用UDP端口扫描,所得到的结果一定不准确。