nc是netcat的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具。
nc命令的作用
nc命令的参数
1) -l
使用侦听模式。指定该参数,则意味着nc被当作server,侦听并接受连接,而非向其它地址发起连接
2) -p <port>
设置本地主机使用的通信端口
3) -s
指定发送数据的源IP地址,适用于多网卡机
4) -u
指定nc使用UDP协议,默认为TCP
5) -v
输出交互或出错信息,新手调试时尤为有用
6)-w
超时秒数,后面跟数字 , 即设置等待连线的时间
7)-z
表示zero,表示扫描时不发送任何数据
几个使用场景
测试网络连接通信与端口扫描(类似telnet)
服务端(10.12.7.2)作为server启动一个tcp的端口监听:
[root@111 ~]# nc -l 9999 #后面加&表示后台挂起
客户端测试:
[root@222 ~]# nc -vzw 2 10.12.7.2 9999
Connection to 10.12.7.2 9999 port [tcp/distinct] succeeded!
其中-w一定要写在最后,因为2是-w的时间参数,即 nc -vz -w 2 10.12.7.2 9999
如果是对多个端口扫描:
服务端 [root@111 ~]# nc -l 9999 & [1] 27824 [root@111 ~]# nc -l 9998 & [2] 27825 客户端 [root@222 ~]# nc -vzw 2 10.12.7.2 9997-9999 nc: connect to 10.12.7.2 port 9997 (tcp) failed: Connection refused Connection to 10.12.7.2 9998 port [tcp/distinct32] succeeded! Connection to 10.12.7.2 9999 port [tcp/distinct] succeeded!
传输文件的工具
假设在*部门的机房,只有已经连接上的两台机子,并不知道ssh的密码,那么同时也无法使用scp拷贝文件,这时nc可以解决问题。
服务端:启动9999端口监听,意思是把此端口接受到的数据都写到abc.txt文件(这个文件名随意,不用与客户端发送的文件名一致) [root@111 ~]# nc -l 9999 > abc.txt 客户端:向服务端的9999端口发送nick.txt文件 [root@222 ~]# nc 10.12.7.2 9999 < nick.txt
服务端接收完毕,它会自动退出监听,文件大小和客户端一样,md5值也一样
测试网速
测试网速其实利用了传输文件的原理,就是把来自一台机器的/dev/zero 发送给另一台机器的/dev/null
就是把一台机器的无限个0,传输给另一个机器的空设备上,然后新开一个窗口使用dstat命令监测网速
在这之前需要保证机器先安装dstat工具:yum install -y dstat
服务端:服务端启动监听9999端口,把来自这个端口的数据都输出给空设备(这样不写磁盘,测试网速更准确) [root@333 ~]# nc -l 9999 > /dev/null 客户端:发送数据,把无限个0发送给服务端的9999端口 [root@444 ~]# nc 172.31.52.71 9999 < /dev/zero
使用dstat命令查看两台机子的网速:
服务端: ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- usr sys idl wai hiq siq| read writ| recv send| in out | int csw 0 0 99 0 0 0| 0 0 | 117M 520k| 0 0 |7017 14k 0 0 99 0 0 0| 0 0 | 117M 514k| 0 0 |6950 14k 0 0 99 0 0 0| 0 0 | 117M 518k| 0 0 |7042 14k 0 0 99 0 0 0| 0 124k| 117M 515k| 0 0 |6985 14k 0 1 98 1 0 0| 0 76k| 117M 510k| 0 0 |7007 14k 0 0 100 0 0 0| 0 0 | 117M 517k| 0 0 |7048 14k 0 1 99 0 0 0| 0 0 | 117M 511k| 0 0 |7036 14k 0 0 99 0 0 0| 0 0 | 117M 514k| 0 0 |7083 14k 0 0 100 0 0 0| 0 60k| 117M 513k| 0 0 |7098 14k 0 0 98 1 0 0| 0 60k| 117M 506k| 0 0 |6948 14k 0 0 99 0 0 0| 0 0 | 117M 510k| 0 0 |7065 14k 0 1 99 0 0 0| 0 0 | 117M 518k| 0 0 |7138 14k 客户端: ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- usr sys idl wai hiq siq| read writ| recv send| in out | int csw 0 2 98 0 0 0|4096B 48k| 532k 117M| 0 0 | 14k 4615 1 2 97 0 0 1| 0 180k| 865k 117M| 0 0 | 14k 4978 0 2 98 0 0 0| 0 48k| 527k 117M| 0 0 | 14k 4601 1 2 95 2 0 0| 0 124k| 526k 117M| 0 0 | 13k 4600 0 2 98 0 0 0| 0 0 | 534k 117M| 0 0 | 14k 4600 0 2 98 0 0 1| 0 24k| 518k 117M| 0 0 | 14k 4608 1 2 98 0 0 0| 0 52k| 508k 117M| 0 0 | 14k 4549 2 2 95 0 0 0| 0 0 | 525k 117M| 0 0 | 14k 4612 0 2 96 2 0 0| 0 168k| 521k 117M| 0 0 | 13k 4750 1 2 98 0 0 0| 0 0 | 521k 117M| 0 0 | 13k 4570
可以看到服务端接收数据维持在117M,客户端发送数据也在117M。
参考:https://www.cnblogs.com/nmap/p/6148306.html