zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    微信小程序开发前期准备
    怎样在vs2013和vs2015中实现自动编译sass
    在MVC中使用Bundle打包压缩js和css
    Html5 突破微信限制实现大文件分割上传
    Automapper 实现自动映射
    Polly一种.NET弹性和瞬态故障处理库(重试策略、断路器、超时、隔板隔离、缓存、回退、策略包装)
    关于transactionscope 事务的脏数据
    IIS设置session时长
    已禁用对分布式事务管理器(MSDTC)的网络访问的解决方法之一
    DAL.SQLHelper 的类型初始值设定项引发异常的处理
  • 原文地址:https://www.cnblogs.com/xulan0922/p/13531025.html
Copyright © 2011-2022 走看看