用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這種事情吧。