200528-netcat使用介绍

ncat使用介绍

什么是nc

nc是netcat的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具

nc的作用

  1. 实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口
  2. 端口的扫描,nc可以作为client发起TCP或UDP连接
  3. 机器之间传输文件
  4. 机器之间网络测速

nc控制参数

nc的控制参数不少,常用的几个参数如下所列:

  1. -l
    用于指定nc将处于侦听模式。指定该参数,则意味着nc被当作server,侦听并接受连接,而非向其它地址发起连接。
  2. -p
    Specify local port for remote connects (cannot use with -l)
    暂未用到(老版本的nc可能需要在端口号前加-p参数,下面测试环境是centos6.6,nc版本是nc-1.84,未用到-p参数)
  3. -s
    指定发送数据的源IP地址,适用于多网卡机
  4. -u
    指定nc使用UDP协议,默认为TCP
  5. -v
    Verbose,输出交互或出错信息,新手调试时尤为有用
  6. -w
    Timeout for connects and final net reads
    超时秒数,后面跟数字
  7. -z
    表示zero,表示扫描时不发送任何数据

nc使用

网络连通性测试和端口扫描

  1. 服务端,启动tcp服务,监听9999端口

    1
    [root@laosanxin ~]# nc -l 9999
  2. 客户端测试,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 '^]'.
  3. 客户端测试,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
  4. 客户端测试,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

先启动接收命令方式

  1. A机器先启动接收数据的命令,监听自己的9991端口
    把来自这个端口的数据都输出给空设备(这样不写磁盘,测试网速更准确)

    1
    [root@localhost ~]# nc -l 9991 >/dev/null
  2. B机器发送数据,把无限个0发送给A机器的9991端口

    1
    [root@localhost ~]# nc 10.18.23.41 9991 < /dev/zero
  3. 使用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

先启动发送命令方式

  1. 先启动发送的数据,谁连接这个端口时就会接收来自zero设备的数据

    1
    [root@localhost ~]# nc -l 9991 </dev/null
  2. 连接A机器的9990端口,把接收的数据输出到空设备上

    1
    [root@localhost ~]# nc 10.18.23.41 9991 > /dev/null
  3. 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

参考资料

#
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×