ncat使用介绍
什么是nc
nc是netcat的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具
nc的作用
- 实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口
- 端口的扫描,nc可以作为client发起TCP或UDP连接
- 机器之间传输文件
- 机器之间网络测速
nc控制参数
nc的控制参数不少,常用的几个参数如下所列:
- -l
用于指定nc将处于侦听模式。指定该参数,则意味着nc被当作server,侦听并接受连接,而非向其它地址发起连接。 - -p
Specify local port for remote connects (cannot use with -l)
暂未用到(老版本的nc可能需要在端口号前加-p参数,下面测试环境是centos6.6,nc版本是nc-1.84,未用到-p参数) - -s
指定发送数据的源IP地址,适用于多网卡机 - -u
指定nc使用UDP协议,默认为TCP - -v
Verbose,输出交互或出错信息,新手调试时尤为有用 - -w
Timeout for connects and final net reads
超时秒数,后面跟数字 - -z
表示zero,表示扫描时不发送任何数据
nc使用
网络连通性测试和端口扫描
服务端,启动tcp服务,监听9999端口
1
[root@laosanxin ~]# nc -l 9999
客户端测试,telnet方式
1
2
3
4[root@laosanxin ~]# telnet blog.laosan.xin 9999
Trying 47.96.121.94...
Connected to blog.laosan.xin.
Escape character is '^]'.客户端测试,nmap方式
1
2
3
4
5
6
7
8
9[root@laosanxin ~]#nmap 47.96.121.94 -p9999
Starting Nmap 7.80 ( https://nmap.org ) at 2020-05-28 12:59 CST
Nmap scan report for laosanxin (47.96.121.94)
Host is up (0.0059s latency).
PORT STATE SERVICE
9999/tcp open abyss
Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds客户端测试,nc方式
1
2
3
4
5
6
7
8
9[root@laosanxin ~]#nmap 47.96.121.94 -p9999
Starting Nmap 7.80 ( https://nmap.org ) at 2020-05-28 12:58 CST
Nmap scan report for laosanxin (47.96.121.94)
Host is up (0.0067s latency).
PORT STATE SERVICE
9999/tcp closed abyss
Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds
使用nc传输文件和目录
略
测试网速
测试网速其实利用了传输文件的原理,就是把来自一台机器的/dev/zero 发送给另一台机器的/dev/null
就是把一台机器的无限个0,传输给另一个机器的空设备上,然后新开一个窗口使用dstat命令监测网速
在这之前需要保证机器先安装dstat工具
1 | yum install -y dstat |
先启动接收命令方式
A机器先启动接收数据的命令,监听自己的9991端口
把来自这个端口的数据都输出给空设备(这样不写磁盘,测试网速更准确)1
[root@localhost ~]# nc -l 9991 >/dev/null
B机器发送数据,把无限个0发送给A机器的9991端口
1
[root@localhost ~]# nc 10.18.23.41 9991 < /dev/zero
使用dstat命令查看当前网速
查看当前cpu,磁盘,网络,内存页和系统的一些当前状态指标1
2
3
4
5
6
7
8
9
10
11
12
13[root@localhost ~]# dstat
You did not select any stats, using -cdngy by default.
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read writ| recv send| in out | int csw
1 13 86 0 0 0| 0 0 | 796M 1143k| 0 0 | 16k 13k
1 13 86 0 0 1| 0 0 | 743M 1147k| 0 0 | 20k 19k
1 14 85 0 0 0| 0 0 | 755M 1142k| 0 0 | 20k 18k
1 16 82 0 0 1| 0 4096B| 890M 1333k| 0 0 | 20k 17k
2 21 74 0 0 3| 0 0 |1034M 1524k| 0 0 | 22k 17k
1 15 84 0 0 1| 0 0 | 834M 1184k| 0 0 | 19k 17k
1 15 84 0 0 1| 0 0 | 845M 1222k| 0 0 | 20k 18k
1 14 84 0 0 1| 0 0 | 787M 1196k| 0 0 | 20k 18k
1 12 86 0 0 1| 0 16M| 674M 1077k| 0 0 | 20k 19k
先启动发送命令方式
先启动发送的数据,谁连接这个端口时就会接收来自zero设备的数据
1
[root@localhost ~]# nc -l 9991 </dev/null
连接A机器的9990端口,把接收的数据输出到空设备上
1
[root@localhost ~]# nc 10.18.23.41 9991 > /dev/null
dstat观察数据发送时网速
1
2
3
4
5
6
7
8
9
10
11
12
13[root@localhost ~]# dstat
You did not select any stats, using -cdngy by default.
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read writ| recv send| in out | int csw
2 1 97 0 0 0| 34k 57k| 0 0 |6253B 8500B|4059 6951
2 1 97 0 0 0| 0 0 | 210B 996B| 0 0 |4030 7015
4 8 87 0 0 1| 0 0 | 661M 948k| 0 0 | 13k 20k
5 12 82 0 0 1| 0 34k|1114M 1608k| 0 0 | 18k 28k
6 12 82 0 0 1| 0 43k|1115M 1565k| 0 0 | 18k 28k
6 14 79 0 0 1| 0 0 |1114M 1544k| 0 0 | 18k 27k
7 14 79 0 0 1| 0 0 |1076M 1525k| 0 0 | 18k 28k
6 14 79 0 0 1| 0 0 | 993M 1482k| 0 0 | 19k 29k
6 13 79 0 0 1| 0 42k|1031M 1533k| 0 0 | 19k 29k