下面就這三種方法來小小的探討一下,不對的地方還請多多指教!
1:TCP掃描
相對來說是速度比較慢的一種,為什么會慢呢?因為這種方法在掃描的時候會從本地主機的一個端口向目標主機的一個端口發出一個連接請求報文段,而目標主機在收到這個這個請求報文后若同意的話則發回一個確認報文段,那么我們本地主機收到確認報文段之后就可以確認目標主機的該端口是活動的了.因為如果目標主機的該端口是死端口的話,目標主機不會發回確認報文.(這里還有一個問題,就是如果該端口是死端口的話,那目標主機能收到我們的連接請求嗎?我自己感覺應該是收不到的...誰要知道了一定要告訴我啊)
2.SYN掃描
這種掃描方式相對來說速度比較快.
原理為:
(1):本地主機向目標主機發送一個SYN數據段.(這里牽扯到TCP報文結構的問題,在TCP報文中SYN標志位用來建立連接,讓連接的雙方同步序列號.如果SYN=1而ACK=0,則表示該數據包為連接請求,如果SYN=1且ACK=1,則表示接受連接.)
(2):如果目標主機的回應報文中SYN=1,ACK=1,則說明該端口是活動的,那么接着,我們再發一個RST給目標主機,拒絕建立連接.
在這里,如果目標主機的回應為RST,則表示該端口為死端口,在這種情況下,我們不用再做任何回應.
3.FIN掃描
在TCP報文結構中,FIN段負責表示發送端已經沒有數據要傳輸了,希望釋放連接.
我們發送一個FIN=1的報文到一個關閉的端口時,該報文會被丟掉,並返回一個RST報文.但是,當FIN報文到一個活動的端口時,該報文只是被簡單的丟掉,而不回應任何信息. chi flat iron
這種掃描方法的好處就是完全不建立TCP連接,從而大大減少了被目標主機記錄下來的可能性,安全性較高.chi flat irons
好了,三種方法的原理都已經說完了,下面說一下一個非常嚴重的問題,就是在很多小小菜的印象中,TCP和SYN是平起平坐的.其實並不是這樣,SYN只不過是TCP報文結構中的一小塊罷了,FIN、RST、PSH、ACK、URG等等都是屬於TCP中的.而UDP才是和TCP在一個級別的,千萬別把SYN和UDP混淆了!