nc是一個(gè)強(qiáng)大的網(wǎng)絡(luò)工具,可以幫助你診斷,發(fā)現(xiàn)在linux下面使用網(wǎng)絡(luò)時(shí)的一些問題.類似這樣的工具有telnet,nmap,telnet的功能比較弱,nmap我沒有具體的使用過,以后有機(jī)會(huì)使用nmap的時(shí)候再寫一篇筆記吧.
nc可以提供如下的網(wǎng)絡(luò)功能:
1) 監(jiān)聽特定端口,這時(shí)候nc就可以作為一個(gè)服務(wù)器,但是我發(fā)現(xiàn)這樣使用nc生成的服務(wù)器僅僅是一個(gè)echo服務(wù)器而已,沒有其他更加強(qiáng)大的功能.
2) 連接特定端口,這時(shí)候nc就成為了一個(gè)客戶端,同樣的,也是一個(gè)簡(jiǎn)單的客戶端,只能起echo的作用.
3) 掃描端口,這可以作為查詢某個(gè)機(jī)器上是否開啟了某個(gè)端口.
具體nc的使用可以man nc查看,這里僅就上面的幾個(gè)功能進(jìn)行說明.
1)使用-l參數(shù)監(jiān)聽端口,我的理解是listen的縮寫,因此在指定-l參數(shù)和一個(gè)端口號(hào)的時(shí)候,nc開始監(jiān)聽這個(gè)端口的連接.
2)使用ip地址(或者URL)以及服務(wù)器端口號(hào)變成一個(gè)客戶端連接特定的服務(wù)器,如 nc 127.0.0.1 80就是連接本地localhost的80端口,在連接成功之后后面的輸入就可以作為這個(gè)客戶端向服務(wù)器發(fā)出的請(qǐng)求數(shù)據(jù),可以是http請(qǐng)求等等.通常情況下,為了免去重復(fù)輸入的麻煩,可以把輸入寫在一個(gè)文件里面,然后通過shell中重定向的功能向服務(wù)器發(fā)送請(qǐng)求,比如,假設(shè)http.txt文件中是已經(jīng)寫好的http請(qǐng)求, 可以采用命令 cat http.txt | nc 127.0.0.1 80發(fā)送這個(gè)請(qǐng)求.
3)使用-z參數(shù)掃描端口,后面緊跟的是ip地址(或者URL),以及一個(gè)端口號(hào)的范圍,比如nc -z 127.0.0.1 20-40命令掃描localhost的20到40端口是否開啟.
其它的使用,nc不僅可以建立TCP連接,還可以建立IPV6協(xié)議的連接(-6參數(shù)),或者IPV4協(xié)議(-4參數(shù)),或者UDP(-u參數(shù)).