Linux命令之nc命令
参考:Linux命令之nc命令,自己验证了一遍, 做个记录
一、命令简介
nc是netcat的简写,是一个功能强大的网络工具,有着网络界的瑞士军刀美誉。nc命令在linux系统中实际命令是ncat,nc是软连接到ncat。nc命令的主要作用如下:
- 实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口
- 机器之间传输文件
- 端口的扫描,nc可以作为client发起TCP或UDP连接
- 机器之间网络测速
nc如果找不到nc命令可以使用安装
yum install -y nc # CentOS
二、使用示例
1.检查服务器端口是否通
nc -zv ip port
2.拷贝文件
如果需要快速实现两个局域网主机的文件cpoy,可以采用该方式指定UDP协议传输,传输速率可参考下文,我的笔记本传输速率大概为50M左右
首先在文件接收终端机器上激活nc监听
nc -lp 55555 > recive.txt
然后在文件发送终端机器上发送文件
nc -w 1 10.248.14.70 55555 < send.txt
检查文件是否已成功接收
3.终端之间的通信聊天
cdx: 你是誰
d18: 我是d18,你是誰?
cdx: 我是cdx
第一台主机上启动nc监听,ctrl+C中断通信
第二台主机上连接监听,ctrl+C中断通信
4.扫描端口
nc -v -w 1 10.248.24.98 -z 55550-55555
端口扫描,通的端口返回succeeded,不通的端口返回refused。
5.验证UDP端口
nc -uvz 10.248.24.98 55555
在 d18 上打开udp端口, cdx 上进行验证:
d18@d18:~$ nc -l -u 55555
cdx@cdx:~$ nc -uvz 10.248.24.98 55555 Connection to 10.248.24.98 55555 port [udp/*] succeeded! cdx@cdx:~$
6.测网速
d18主机上监听端口。d18作为接收段
d18@d18:~$ nc -l 55555 >/dev/null
cdx主机上发送数据,全0数据。cdx作为发送端
cdx@cdx:~$ nc 10.248.24.98 55555 </dev/zero
recv为d18入流量
d18@d18:~$ dstat You did not select any stats, using -cdngy by default. --total-cpu-usage-- -dsk/total- -net/total- ---paging-- ---system-- usr sys idl wai stl| read writ| recv send| in out | int csw 46 2 52 0 0| 47k 157k| 0 0 | 9B 10B| 12k 30k 56 5 37 1 0| 0 332k| 65M 887k| 0 0 | 29k 60k 49 4 46 0 0| 0 4096B| 65M 966k| 0 0 | 30k 61k 58 6 36 0 0| 0 164k| 72M 860k| 0 0 | 28k 58k 48 5 47 0 0| 0 216k| 80M 1009k| 0 0 | 29k 61k 51 4 45 0 0| 0 0 | 62M 941k| 0 0 | 29k 61k 54 6 39 0 0| 0 16k| 74M 1000k| 0 0 | 30k 64k 54 5 41 0 0| 0 76k| 60M 910k| 0 0 | 29k 62k 45 4 50 1 0| 0 48k| 69M 994k| 0 0 | 29k 63k 56 6 38 1 0| 0 24k| 87M 945k| 0 0 | 29k 60k 57 6 37 0 0| 0 0 | 72M 1039k| 0 0 | 30k 63k 56 6 37 1 0| 0 284k| 67M 960k| 0 0 | 29k 61k 55 6 38 1 0| 0 132k| 71M 1025k| 0 0 | 31k 64k
send为cdx发送流量
cdx@cdx:~$ dstat You did not select any stats, using -cdngy by default. --total-cpu-usage-- -dsk/total- -net/total- ---paging-- ---system-- usr sys idl wai stl| read writ| recv send| in out | int csw 1 0 98 1 0| 167k 133k| 0 0 | 0 0 |2555 2722 4 1 96 0 0| 0 0 | 513k 90M| 0 0 | 68k 11k 4 0 95 1 0| 0 20k| 770k 79M| 0 0 | 63k 11k 4 0 96 0 0| 0 0 | 927k 69M| 0 0 | 58k 11k 3 1 96 0 0|4096B 0 | 903k 76M| 0 0 | 62k 11k 3 0 97 0 0| 0 0 | 838k 61M| 0 0 | 52k 9501 4 0 95 1 0| 0 116k| 855k 67M| 0 0 | 56k 9916 3 0 96 0 0| 0 0 | 912k 67M| 0 0 | 56k 10k 4 0 96 0 0| 0 0 | 932k 82M| 0 0 | 66k 11k 4 0 94 2 0| 0 20k| 874k 71M| 0 0 | 59k 11k 4 0 96 0 0| 0 0 | 911k 69M| 0 0 | 58k 10k 4 0 96 0 0| 0 132k| 894k 67M| 0 0 | 56k 10k 3 0 96 0 0| 0 0 | 858k 71M| 0 0 | 59k 11k
三、nc使用语法及参数说明
OpenBSD netcat(Debian 补丁级别 1.187-1ubuntu0.1) 用法:nc [-46CDdFhklNnrStUuvZz] [-I 长度] [-i 间隔] [-M ttl] [-m minttl] [-O 长度] [-P proxy_username] [-p source_port] [-q 秒] [-s 源] [-T 关键字] [-V rtable] [-W recvlimit] [-w 超时] [-X proxy_protocol] [-x proxy_address[:port]] [destination] [port] 命令摘要: -4 使用 IPv4 -6 使用 IPv6 -b 允许广播 -C 发送 CRLF 作为行尾 -D 启用调试套接字选项 -d 与标准输入分离 -F 传递套接字 fd -h 这个帮助文本 -I length TCP 接收缓冲区长度 -i 间隔 发送线路的延迟间隔,扫描的端口 -k 保持入站套接字为多个连接打开 -l 监听模式,用于入站连接 -M ttl 传出 TTL / 跳数限制 -m minttl 最小传入 TTL / 跳数限制 -N 在标准输入 EOF 后关闭网络套接字 -n 禁止名称/端口解析 -O length TCP 发送缓冲区长度 -P proxyuser 代理认证的用户名 -p port 指定远程连接的本地端口 -q secs 在标准输入 EOF 后退出并延迟 secs -r 随机化远程端口 -S 启用 TCP MD5 签名选项 -s source 本地源地址 -T 关键字 TOS 值 -t 应答 TELNET 协商 -U 使用 UNIX 域套接字 -u UDP 模式 -V rtable 指定备用路由表 -v 详细 -W recvlimit 收到一定数量的数据包后终止 -w timeout 连接和最终网络读取超时 -X proto 代理协议:“4”、“5”(SOCKS)或“connect” -x addr[:port] 指定代理地址和端口 -Z DCCP 模式 -z 零 I/O 模式 [用于扫描] 端口号可以是单个或范围:lo-hi [含]