nc
是 netcat
的简写, 被誉为"网络界的瑞士军刀", 因其短小精悍且功能实用, 是一款简易可靠的网络工具, 适用于 Windows 和 Linux 系统。它能够通过 TCP 或 UDP 协议读写数据, 因此非常适合作为网络调试和分析工具。
nc
支持创建多种网络连接, 可用作服务器或客户端, 广泛应用于端口侦听、扫描、文件传输和网络测试等任务。
nc 的主要功能
- TCP/UDP 端口侦听: 作为服务器端监听特定端口, 接收连接
- 端口扫描: 作为客户端发起 TCP 或 UDP 连接, 测试目标端口状态
- 文件传输: 在不同主机之间通过网络传输文件
- 网络测速: 测试网络连接速度 (虽然
iperf3
更适合网络速度测试)
基本语法
语法
nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p<通信端口>][-s<来源位址>][-v...][-w<超时秒数>][主机名称][通信端口...]
常用选项及参数说明
参数 | 功能描述 |
---|---|
-g <网关> |
设置数据包发送路径中的网关 (最多可指定 8 个) |
-G <指向器数目> |
设置源路由指向器, 值应为 4 的倍数 |
-h |
显示帮助信息 |
-i <延迟秒数> |
设置数据传输或端口扫描的间隔时间 |
-l |
监听模式, 用于接收传入数据 (适合作为服务器端) |
-n |
直接使用 IP 地址而不通过域名解析服务器 (减少 DNS 查询延迟) |
-o <输出文件> |
指定输出文件, 将传输的数据以 16 进制格式保存到文件 |
-p <通信端口> |
指定本地主机的端口 |
-r |
随机选择本地与远程主机的端口 |
-s <来源位址> |
设置本地主机送出数据包的 IP 地址。适用于多网卡机 |
-u |
使用 UDP 协议传输数据 |
-v |
显示详细输出信息, -vv 获取更多详细内容 |
-w <超时秒数> |
设置等待连接的超时时间 |
-z |
0 输入/输出模式 (用于端口扫描时, 不传输任何数据包) |
使用示例
简单聊天工具
在两个设备间建立简易聊天通道
在 192.168.2.34 上作为服务器端侦听 1234 端口
nc -l 1234
在 192.168.2.33 上连接到该端口
nc 192.168.2.34 1234
此时, 双方可以互相发送消息, 使用 Ctrl + C
(或 Ctrl + D
) 退出会话
文件传输
将文件从 192.168.2.33 传输到 192.168.2.34
在 192.168.2.34 上监听 1234 端口并接收文件
nc -l 1234 > test.txt
在 192.168.2.33 上发送文件
nc 192.168.2.34 1234 < test.txt
传输完成后, test.txt
文件会保存在 192.168.2.34 上
端口可用性测试
用于检查目标主机端口是否可访问, 支持 TCP 和 UDP 两种模式
TCP 模式
在 192.168.2.34 上监听端口
nc -l 1234
在 192.168.2.33 上连接到端口进行测试
nc 192.168.2.34 1234
UDP 模式
在 192.168.2.34 上使用 UDP 协议监听端口
nc -lu 1234
在 192.168.2.33 上以 UDP 协议连接到端口
nc -u 192.168.2.34 1234
注意事项
nc
的-z
选项非常适合端口扫描, 因为它不会发送实际数据。结合-w
设置超时时间可以快速测试开放端口- 使用
-v
可查看详细的操作日志, 适合调试时使用 - 文件传输可能因网络速度不同有所差异, 建议在稳定的网络环境下进行大文件传输