ZMap 為什么能在一個小時內(nèi)就掃描整個互聯(lián)網(wǎng)?
全球互聯(lián)網(wǎng)包含數(shù)十億個不重復地址,掃描整個互聯(lián)網(wǎng)是一項勞動密集型工作,需要耗費幾周甚至幾個月?,F(xiàn)在,密歇根大學研究人員發(fā)布了一個工具ZMap,用一臺普通的服務器耗時44分鐘就能掃描全部互聯(lián)網(wǎng)地址。掃描工具如Nmap使用的方法是發(fā)送請求然后監(jiān)聽回應,雖然請求可以同步進行,但為了記錄每一個未回應請求需要大量開銷,導致速度下降。而ZMap使用了不同的方法,它發(fā)生的是無狀態(tài)請求,發(fā)送之后就忽略了,它不需要記錄未回應請求的名單,而是在發(fā)送的數(shù)據(jù)包中編碼身份信息去識別回應,從而降低開銷。ZMap發(fā)送數(shù)據(jù)包的速度是Nmap的上千倍。Nmap需要數(shù)周時間掃描全部網(wǎng)址,而ZMap只要幾十分鐘。密歇根研究人員利用ZMap發(fā)現(xiàn),100萬***網(wǎng)站內(nèi)HTTPS使用率一年內(nèi)增加了23%。
傳統(tǒng)上的TCP/IP需要“三次握手”報文交互,在此期間需要維持記錄著與對方交互的狀態(tài)。
這種狀態(tài)記錄量是巨大的,占用內(nèi)存和CPU資源很大。
而ZMap索性就不進行三次握手,只進行***個SYN,然后等待對方回復SYN-ACK,之后即RST取消連接。這樣肯定會因網(wǎng)絡(luò)原因丟失一定比例的數(shù)據(jù),根據(jù)其實驗,這個比例在2%左右。
以上策略,在nmap中也有實現(xiàn),即其TCP SYN掃描方式。
關(guān)鍵性的問題出現(xiàn)在對回復的SYN-ACK進行seq number的校驗。傳統(tǒng)上就需要記錄狀態(tài)。
而ZMap是將對方receiver ip地址進行hash,將其處理保存到了sender port和seq number兩個字段中,當SYN-ACK回來的時候,就可以根據(jù)sender ip、receiver port、ack number這些字段進行校驗。
因此避免了狀態(tài)存儲,接近了網(wǎng)絡(luò)帶寬極限。

性能方面:
單臺服務器,掃描整個IPv4地址空間,耗時45分鐘,將所接1Gb的帶寬占用了97%。

不僅速度上比Nmap(TCP SYN模式)高不少,而且其設(shè)計的無狀態(tài)機制,讓其搜索成功的覆蓋率也增加了。

與Nmap等已有系統(tǒng)對比:
NMap是一個通用網(wǎng)絡(luò)監(jiān)測工具,可以適用于不同協(xié)議、不同范圍的測試。
而ZMap專做單端口、大范圍的網(wǎng)絡(luò)監(jiān)測。
這也讓ZMap能在這單一領(lǐng)域做很多優(yōu)化。
















 
 
 




 
 
 
 