当前位置:首页 > 操作系统 > Linux

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 210.12.7.29997-9999
nc: connect to 10.12.7.2 port 9997 (tcp) failed: Connection refused
Connection to 10.12.7.29998 port [tcp/distinct32] succeeded!
Connection to 10.12.7.29999 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.29999 < 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.719999 < /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 
  0099000|   00 | 117M  520k|   00 |7017    14k
  0099000|   00 | 117M  514k|   00 |6950    14k
  0099000|   00 | 117M  518k|   00 |7042    14k
  0099000|   0   124k| 117M  515k|   00 |6985    14k
  0198100|   0    76k| 117M  510k|   00 |7007    14k
  00100000|   00 | 117M  517k|   00 |7048    14k
  0199000|   00 | 117M  511k|   00 |7036    14k
  0099000|   00 | 117M  514k|   00 |7083    14k
  00100000|   0    60k| 117M  513k|   00 |7098    14k
  0098100|   0    60k| 117M  506k|   00 |6948    14k
  0099000|   00 | 117M  510k|   00 |7065    14k
  0199000|   00 | 117M  518k|   00 |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 
  0298000|4096B   48k| 532k  117M|   00 |  14k 46151297001|   0   180k| 865k  117M|   00 |  14k 49780298000|   0    48k| 527k  117M|   00 |  14k 46011295200|   0   124k| 526k  117M|   00 |  13k 46000298000|   00 | 534k  117M|   00 |  14k 46000298001|   0    24k| 518k  117M|   00 |  14k 46081298000|   0    52k| 508k  117M|   00 |  14k 45492295000|   00 | 525k  117M|   00 |  14k 46120296200|   0   168k| 521k  117M|   00 |  13k 47501298000|   00 | 521k  117M|   00 |  13k 4570

可以看到服务端接收数据维持在117M,客户端发送数据也在117M。

 

参考:https://www.cnblogs.com/nmap/p/6148306.html

 

原文:https://www.cnblogs.com/xulan0922/p/13531025.html


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!