Netcat 命令速查表 - 网络调试常用命令大全

判断某个端口通不通,netcat 是最短的一条路径:nc -zv host 80 逐个返回结果,加上 -w 设超时避免请求悬着,卡在哪个环节一目了然。但要清楚它的边界——nc 只做 TCP/UDP 连接与字节搬运,不解析协议,也不加密。所以抓 HTTP 响应头可以,传输敏感数据不行,那应当走 SSH 或 TLS。版本差异同样是个坑:macOS 自带的是 BSD 版 nc,与 GNU ncat 参数不通用,OpenBSD 版也不支持 -e,因此做端口转发或绑定 shell 时要转向 ncat 或 socat。表里按连接测试与端口扫描、文件数据传输、端口监听、代理转发、Banner 抓取与协议调试、高级选项与替代工具分组。

系统与运维·共 36 条命令·最后更新 2026-07-21
netcatnc网络端口

连接测试与端口扫描 6

nc -zv host 80
检测目标 80 端口是否开放,最常用
nc -zv host 80 443 8080
检查多个指定端口
nc -zv host 1-1000
扫描 1-1000 端口范围
nc -vz -w 2 host 80
带 2 秒超时检测端口
nc -uz host 8080
UDP 模式检测端口
nc -4 host 80
强制使用 IPv4 连接

文件与数据传输 6

nc -l 9999 > received.txt
接收端:监听并保存到文件
nc host 9999 < file.txt
发送端:发送文件
tar czf - dir | nc host 9999
发送端:打包并发送目录
nc -l 9999 | tar xzf -
接收端:接收并解压
dd if=/dev/sda | nc host 9999
发送端:传输磁盘镜像
nc host 9999 | pv > disk.img
接收端:带进度条接收镜像(需 pv)

端口监听 5

nc -l 8080
监听本地 8080 端口等待连接
nc -l -p 8080
监听(老版本 nc 语法,需 -p)
nc -l -k 8080
保持监听,支持多个连接(BSD 版)
nc -lk 8080
同上,合并写法
nc -lu 9090
监听 UDP 端口

代理与转发 3

nc -l 1234 | nc target 80
简易 TCP 代理转发
mkfifo pipe; nc -lk 8080 < pipe | nc target 80 > pipe
双向端口转发(管道方式)
nc -l 1234 -e /bin/bash
将 shell 绑定到端口(GNU nc,仅限授权测试)

高级选项与参数 7

-v / -vv
详细输出 / 更详细输出
-z
零 I/O 模式,仅扫描不发送数据
-w 2
连接超时 2 秒
-k
保持监听,支持多个连接(BSD 版)
-s 192.168.1.1
指定源 IP 地址
-p 12345
指定本地源端口
-u
使用 UDP 协议

替代工具与对比 4

ncat host 80
Nmap 的 ncat,支持 SSL 和访问控制
ncat --ssl host 443
ncat 加密连接,替代明文 nc
socat - TCP:host:80
socat 功能更强的替代,支持更多协议
nc --version
查看 nc 版本,区分 BSD/GNU/OpenBSD 版

命令示例

快速检测端口是否开放

nc -zv example.com 443 2>&1

-z 是零 I/O 模式只探测不发送数据,-v 输出结果。只对你有权测试的主机使用,端口扫描需先取得授权。

输出

nc: connect to example.com port 443 (tcp) succeeded! Connection to example.com 443 port [tcp/https] succeeded!

抓取服务 Banner 识别版本

echo "" | nc -w 2 example.com 22

很多服务连上就先发一行版本信息。-w 2 设 2 秒超时,否则连到不响应的端口会一直挂着。

输出

SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.5

发送原始 HTTP 请求调试

printf "GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n" | nc example.com 80

直接发原始报文能验证 curl 之外的协议层行为。注意 CRLF 行尾,手写成 \n 在严格的服务端会解析失败。

输出

HTTP/1.1 200 OK
Date: Wed, 30 Sep 2026 07:20:11 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 1256

<!doctype html>...

常见坑与注意事项

  • nc -l -e /bin/bash 会把 shell 绑定到端口,是典型的反弹 shell 手法,仅限自己机器的授权测试。
  • 端口扫描需事先取得书面授权,未经授权扫描在多数司法辖区都可能违法。
  • nc 的选项在 BSD/GNU/OpenBSD 版本间不兼容,老版本监听需加 -p;先 nc --version 确认。
  • 用 nc 传输文件默认无加密也无完整性校验,敏感数据走 SSH 或加密通道。
  • -l 监听会占用端口且无认证,暴露在公网上等于把服务开放给所有人。

提示

  • macOS 自带的 nc 是 BSD 版本,参数和 GNU ncat 不同,排障时注意区分。
  • 端口扫描仅用于授权范围内的网络排查,未经授权扫描属违规行为。
  • nc 传输不加密,敏感数据不要直接用 nc 传,走 SSH 或 TLS。
  • OpenBSD 版 nc 不支持 -e 参数,需要绑定 shell 时用 ncat 或 socat 替代。
  • 传输大文件时发送端用 pv 显示进度:pv file.txt | nc host 9999。
  • 做端口转发推荐用 socat 或 ncat,功能更完善且支持持久连接。
  • nc -zvw3 host 443 合并使用可同时做到探测、超时与显示详细过程,比先 ping 再连更快判断。
  • 发送端加 -q 1 让 nc 在 stdin 结束后多等一秒再退出,否则响应还没回来连接就已断开。
  • nc 只能建 TCP 连接;要确认服务实际能处理请求,用 curl -v 或 openssl s_client 再验一层。

官方参考来源

下方为命令对应的官方权威文档,供你核对最新用法与深入查阅。

由 巧匠 维护

公开更新于 2026年7月21日,内容持续校对官方文档。

联系我们

命令或描述有误?提交反馈、商务合作或产品建议都可发送邮件给我们。

联系我们