nc 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,聚焦
nc——网络基础命令族(见网络基础与远程访问命令族)。它是"网络界的瑞士军刀":能连、能听、能传、能测,排网络问题极顺手。
nc(netcat)在命令行读写 TCP/UDP 网络连接。既能当客户端连别人,也能当简易服务端监听,还能用来传文件、测端口通断。
一、基本用法:连起来
bash
nc example.com 80 # 连目标 80 端口,之后可手动发 HTTP
nc -vz host 22 # -v 详细、-z 只测连通不收发,测端口通否
-z是"零 I/O 扫描模式"——只测端口通不通就退出,配合-v看结果,常用来替代 telnet 做端口连通性检查。-v多给点过程信息。
二、监听与传文件
bash
nc -l -p 1234 > received.txt # 接收端:监听 1234,存到文件
nc host 1234 < send.txt # 发送端:连过去把文件灌过去没有 scp/rsync 的受限环境里,nc 能应急传文件:一端
-l -p监听收,另一端连上发。注意它不加密,只适合可信网络。
三、UDP 与端口扫描
bash
nc -u host 53 # -u 走 UDP(如测 DNS)
nc -vz -w 2 host 20-30 # 扫描 20~30 端口范围
-u切 UDP 模式(测 DNS/NTP 等)。小心:nc 扫端口很基础,真要扫用 nmap;nc 适合"顺手测几个端口"。
四、nc vs telnet
| 命令 | 特点 |
|---|---|
nc | 能连能听、支持 UDP、能传文件/扫描 |
| telnet | 只能连 TCP、交互手工发协议(见telnet 命令详解) |
测 TCP 端口两者都行;要监听/传文件/扫端口/走 UDP,nc 更强。nc 几乎是 telnet 的现代替代品(且很多系统默认不带 telnet)。
五、踩坑:传统 nc 与 ncat 差异
bash
# 不同发行版 nc 行为不同(OpenBSD nc vs GNU nc vs nmap 的 ncat)
# -e 执行命令等高级功能在不少版本被禁用(安全)nc 有多个实现,参数略有差异(尤其
-e执行命令常因安全被阉割)。脚本里依赖特定功能前先确认版本。
六、实战:快速测服务端口
bash
nc -vz db-host 3306 && echo "MySQL 端口可达" || echo "不可达"一句话总结
nc = 网络瑞士军刀:-z -v 测端口通断(替代 telnet)、-l -p 监听收数据/文件、-u 走 UDP;受限环境应急传文件用它。不加密、仅可信网络用;版本实现有差异。复杂扫描用 nmap。