作者在 2008-05-18 18:57:11 发布以下内容
TCP端口扫描
客户端向服务器某端口发送TCP连接(第一次握手)请求,服务器接收到该数据包(连接请求)后,检查系统该端口是否处于监听状态。
(1) 如果系统发现该端口处于监听状态,则将该数据包传递给应用程序,应用程序向客户端发送第二次握手,客户端接收到后,发送第三次握手。这样一个TCP连接就建立了。客户端可以根据服务器端是否给予了第二次握手来判断服务器是否开放了该端口。(SYN极速TCP端口扫描就是这个原理)
(2 )如果服务器发现客户请求的端口没有处于监听状态,则回送一个RST标志位为1的TCP数据包。
(以下图片放大后会更清晰!)
第一次握手:
此主题相关图片如下:tcp_sh_1.gif
第三次握手:
此主题相关图片如下:tcp_sh_3.gif
RST标志位为1的TCP数据包:
UDP端口扫描
向目标端口发送一个UDP分组。如果目标端口以“ICMP port unreachable”消息响应,那么说明该端口是关闭的;反之,如果没有收到“ICMP port unreachable”响应消息,则可以肯定该端口是打开的。由于UDP协议是面向无连接的协议,这种扫描技术的精确性高度依赖于网络性能和系统资源。另外,如果目标系统采用了大量分组过滤技术,那么UDP扫描过程会变得非常慢。如果你想对Internet进行UDP扫描,那么你不能指望得到可靠的结果。
UDP分组:
ICMP port unreachable: