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命令的更多相关文章

  1. 一文让你熟练掌握Linux的ncat(nc)命令

    一文让你熟练掌握Linux的ncat(nc)命令 ncat 或者说 nc 是一款功能类似 cat 的工具,但是是用于网络的.它是一款拥有多种功能的 CLI 工具,可以用来在网络上读.写以及重定向数据. ...

  2. 【转】Linux 网络工具详解之 ip tuntap 和 tunctl 创建 tap/tun 设备

    原文:https://www.cnblogs.com/bakari/p/10449664.html -------------------------------------------------- ...

  3. Linux 网络工具netcat(nc)的应用

    NETCAT netcat是Linux常用的网络工具之一,它能通过TCP和UDP在网络中读写数据,通过与其他工具结合和重定向,可以在脚本中以多种方式使用它. netcat所做的就是在两台电脑之间建立链 ...

  4. 功能超级强大的网络工具nc

    摘自:http://www.linuxso.com/command/nc.html 功能说明:功能强大的网络工具语 法:nc [-hlnruz][-g<网关...>][-G<指向器数 ...

  5. 需要了解的 Linux 网络和监控命令

    列出来的10个基础的每个linux用户都应该知道的网络和监控命令.网络和监控命令类似于这些: hostname, ping, ifconfig, iwconfig, netstat, nslookup ...

  6. 10个基础的linux网络和监控命令

    配置zookeeper集群时,需要查看本机ip,输入命令 hostname -i   就会只显示主机ip, 下边搜了一篇常用的    命令,闲的时候多敲敲命令,以便用的时候再找! 我下面列出来的10个 ...

  7. 注意啦!10 个你需要了解的 Linux 网络和监控命令

    下面列出来的10个基础的每个Linux用户都应该知道的网络和监控命令.网络和监控命令类似于这些:hostname, ping, ifconfig, iwconfig, netstat, nslooku ...

  8. linux网络配置相关命令、虚拟网络接口eth0:0

    网络接口(interface)是网络硬件设备在操作系统中的表示方法,比如网卡在Linux操作系统中用ethX,是由0开始的正整数,比如eth0.eth1...... ethX.而普通猫和ADSL的接口 ...

  9. 10个实用的 Linux 网络和监控命令[转]

    本文列出了10个基础的每个Linux用户都应该知道的网络和监控命令.网络和监控命令类似于这些: hostname, ping, ifconfig, iwconfig, netstat, nslooku ...

随机推荐

  1. Python编码相关

    1.#coding=utf-8的作用 作用是这个文件代码的编码格式,如果没有声明代码中不能出现中文字符,包括注释中也不能出现.否则会报错SyntaxError: Non-ASCII character ...

  2. 用正则怎么将html文件中文字取出进行ASCII码转换?

    用正则怎么将html文件中文字取出?今天碰到这个问题,思来想去尝试了好几种方法,历经一阵头脑风暴,最后终于还是解决了,想想还是来记录一下.一共定义了三个函数,包含正则切割.正则判断对象开头.ASCII ...

  3. proxySQL with SemiSync

    环境信息 hostname IP port role comm ms81 192.168.188.81 3399 master ms82 192.168.188.82 3399 slave ms83 ...

  4. 一文入门Redis

    一文入门Redis 目录 一文入门Redis 一.Redis简介 二.常用数据类型 1.String(字符串) 2.Hash(哈希) 3.List(列表) 4.Set(集合) 5.Zset(有序集合) ...

  5. dbeaver 驱动安装

    一.背景: 在Windows 10 安装dbeaver数据库连接工具,点"测试连接"的时候出现报错如下: Error resolving dependencies   Maven ...

  6. js 控制输入框保存数字级小数点后一位

    $('#Question8').on('keyup', function () { var regVoter = $("#Question8").val(); regVoter = ...

  7. 来感受Linux命令行的“真香定律”

    Shell看起来只是一个黑黑的命令框,刚开始接触会觉得很丑,毕竟与Win/Mac的华丽界面比起来,命令行终端直接可以丑拒了.但是,实际上它的功能要强大得多,毕竟Linux一开始就是广泛应用于服务器,通 ...

  8. HBase按照TimeStamp删除数据

    #!/bin/bash #两种时间输入,一种是输入起始日期,另一种是直接输入hbase里面数据的起始时间戳 if [ $# != 5 ];then echo 'usage:sh byTimestamp ...

  9. java-02-基础语法

    1.分支语句 if语句 格式 if(关系表达式1){语句1} else if(关系表达式2){语句2} else{语句3}; 说明 如果关系表达式1的值为true,执行语句1. 如果关系表达式2的值为 ...

  10. vue第十五单元(熟练使用vue-router插件)

    第十五单元(熟练使用vue-router插件) #课程目标 1.掌握路由嵌套 2.掌握导航守卫 #知识点 #一.路由嵌套 很多时候,我们会在一个视口中实现局部页面的切换.这时候就需要到了嵌套路由. 也 ...