TCP connect(全连接)
- 扫描器会向服务器目标端口发送TCP包进行连接,如果服务器端口是开放的会进行TCP连接和TCP三次握手,这也称为全连接。如果服务器的端口是关闭的,则不会进行连接。
优点:1.TCP连接可靠,当出现丢包时会重新发送SYN帧。2.因为进行TCP全连接,所以测试相对准确。
缺点:扫描的时间较长,容易被目标主机发现。
TCP SYN(半连接)
- 扫描器会向服务器目标端口发送SUN数据帧,服务器开放的端口会回复SYN+ACK数据包,如果扫描器收到SYN+ACK数据包,说明此端口开放,否则端口是关闭的。
优点:1.半连接,速度快。2.相对TCP connect来说,更可能会收到服务器的应答包。
缺点:1.大量半连接容易被发现。2.可能会丢包。3.半连接,可能影响后面测试结果的准确性。
TCP FIN(终止连接)
- TCP通常是四次握手,第四次握手是终止连接请求(TCP FIN),当扫描器直接发送FIN帧给服务器一个非监听的端口时,会有RST应答。反之,发发送给一个正在监听的端口时,则不会有任何回应。
优点:隐蔽性好;速度快。
缺点:1.存在误判:丢包也会造成收不到应答。2.可测试linux系统,无法测试windows系统,因为windows,无论端口是否监听,都将回应RST帧,无法判断。
UDP
- 扫描器会发送UDP ICMP包到服务器端口,如果端口是开放的,则没有响应。如果端口是关闭的,对方会回复一个ICMP端口不可达报文的包。
优点:linux windows都能用。
缺点:1.相对于TCP的FIN,SYN扫描要慢一些。2.如果发送的UDP包太快了,会出现大量丢失的现象。3.速度相对于TCP的FIN,SYN扫描会慢一些。