linux网络工具nc命令

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

nc命令的作用

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

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

 

linux网络工具nc命令

上一篇:Linux之用户管理


下一篇:Eclipse设置New下拉列表