用syn类扫描器比如我的SharpTcpScanner
扫描165.194.0.0-165.195.0.0这个ip段的1433端口
会出现大量连续ip的结果
几乎每个ip都返回正常的的syn+ack,就像真有个sqlserver服务器开开启一样
但是这些都是假的,如果你真连接的话就连不上
像这样的ip段有好多
平时扫描出10万个1433,有7、8万都是这样的假结果
还有的ip段,平时单个扫描不会返回,但是一旦大量发送syn扫描就开始出现这种情况
我不知道这是什么样的设备或者程序,但可以断定应该就是一个为了防止syn扫描的东西吧
之前一直为如何去掉这样的假结果而苦恼,后来发现了一个可以比较有效去除这些假结果的办法
就是
之前扫描我发送的是syn头最短的ip:20+tcp:20共40个字节
而如果用sqlconnection去连接,它发送的是52个字节,多出来的12个字节是02 04 05 b4 01 03 03 08 01 01 04 02
这12个字节是tcp的options,其中前4个是最大包大小,04 02就是sack
而我试了一下真的sqlserver会返回48个或52个字节的syn+ack,sack那里也是04 02,意思就是允许sack
而那些假结果返回的是44个字节,tcp的options只有4个字节就是开始的最大包大小,然后就没了,意思是不允许sack
于是就可以判断了,返回44个的就是假的,于是就有效的去除了那些假结果,并且把那些真的从这些地址段中给摘了出来
看了一下微软网站的介绍,还是在介绍win2000的文章,好像可以关掉sack还是怎么着,但是我想10000个人里9000个都不知道啥是sack,999个知道的也不会去做关闭sack这种事情吧。