nc是netcat的簡寫,有著網(wǎng)絡(luò)界的瑞士軍刀美譽。因為它短小精悍、功能實用,被設(shè)計為一個簡單、可靠的網(wǎng)絡(luò)工具
(1)實現(xiàn)任意TCP/UDP端口的偵聽,nc可以作為server以TCP或UDP方式偵聽指定端口
(2)端口的掃描,nc可以作為client發(fā)起TCP或UDP連接
(3)機器之間傳輸文件
(4)機器之間網(wǎng)絡(luò)測速
-l
用于指定nc將處于偵聽模式。指定該參數(shù),則意味著nc被當(dāng)作server,偵聽并接受連接,而非向其它地址發(fā)起連接。
-p%20<port>
暫未用到(老版本的nc可能需要在端口號前加-p參數(shù)linux常用命令,下面測試環(huán)境是centos6.6,nc版本是nc-1.84,未用到-p參數(shù))
-s
指定發(fā)送數(shù)據(jù)的源IP地址,適用于多網(wǎng)卡機
-u
指定nc使用UDP協(xié)議,默認(rèn)為TCP
-v
輸出交互或出錯信息,新手調(diào)試時尤為有用
6)-w
超時秒數(shù),后面跟數(shù)字
7)-z
表示zero,表示掃描時不發(fā)送任何數(shù)據(jù)
準(zhǔn)備兩臺機器,用于測試nc命令的用法
主機A:ip地址%2010.0.1.161
主機B:ip地址%2010.0.1.162
兩臺機器先安裝nc和nmap的包
yum%20install%20nc%20-y
yum%20install%20nmap%20-y
如果提示如下-bash:%20nc:%20command%20not%20found%20表示沒安裝nc的包
image
nc可以作為server端啟動一個tcp的監(jiān)聽(注意,此處重點是起tcp,下面還會講udp)
先關(guān)閉A的防火墻,或者放行下面端口,然后測試B機器是否可以訪問A機器啟動的端口
在A機器上啟動一個端口監(jiān)聽,比如 9999端口(注意:下面的-l 是小寫的L,不是數(shù)字1)
默認(rèn)情況下下面監(jiān)聽的是一個tcp的端口
nc -l 9999
image
客戶端測試,****測試方法1
在B機器上telnet A機器此端口,如下顯示表示B機器可以訪問A機器此端口
image
****客戶端測試,測試方法2
B機器上也可以使用nmap掃描A機器的此端口
nmap 10.0.1.161 -p9999
image
****客戶端測試,測試方法3
使用nc命令作為客戶端工具進(jìn)行端口探測
nc -vz -w 2 10.0.1.161 9999
(-v可視化,-z掃描時不發(fā)送數(shù)據(jù),-w超時幾秒,后面跟數(shù)字)
image
上面命令也可以寫成
nc -vzw 2 10.0.1.161 9999
image
****客戶端測試,測試方法4(和方法3相似,但用處更大)
nc可以可以掃描連續(xù)端口,這個作用非常重要。常?梢杂脕頀呙璺⻊(wù)器端口,然后給服務(wù)器安全加固
在A機器上監(jiān)聽2個端口,一個9999,一個9998,使用&符號丟入后臺
image
在客戶端B機器上掃描連續(xù)的兩個端口,如下
image
nc作為server端啟動一個udp的監(jiān)聽(注意,此處重點是起udp,上面主要講了tcp)
啟動一個udp的端口監(jiān)聽
nc -ul 9998
image
復(fù)制當(dāng)前窗口輸入 netstat -antup |grep 9998 可以看到是啟動了udp的監(jiān)聽
image
客戶端測試,測試方法1
nc -vuz 10.0.1.161 9998
由于udp的端口無法在客戶端使用telnet去測試,我們可以使用nc命令去掃描(前面提到nc還可以用來掃描端口)
(telnet是運行于tcp協(xié)議的)
(u表示udp端口,v表示可視化輸出,z表示掃描時不發(fā)送數(shù)據(jù))
image
上面在B機器掃描此端口的時候linux常用命令,看到A機器下面出現(xiàn)一串XXXXX字符串