nc / netcat

基本语法(Synopsis)

nc [OPTIONS] HOST PORT
nc -l [OPTIONS] [DESTINATION] [PORT]

nc(netcat)直接建立 TCP 或 UDP 连接,适合测试端口、检查明文协议和临时收发数据。本机是 OpenBSD netcat 实现。

常用测试

nc -vz -w 3 example.com 443            # TCP 端口是否可连接
nc -vz -w 3 example.com 22 80 443       # 测试多个 TCP 端口
nc -4 -vz -w 3 example.com 443          # 强制 IPv4
nc -6 -vz -w 3 example.com 443          # 强制 IPv6
nc -vzu -w 3 1.1.1.1 53                 # UDP 探测,仅作线索

TCP 成功通常表示握手已完成;Connection refused 常表示目标可达但没有服务监听,超时则继续检查路由、防火墙或安全组。

检查明文 HTTP

printf 'HEAD / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n' |
  nc -N example.com 80

HTTPS 需要 TLS,优先使用 curl;排查 TLS 握手时使用 openssl s_client -connect example.com:443 -servername example.com。

仅在本机临时监听

终端一:

nc -lv 127.0.0.1 9000

终端二:

nc 127.0.0.1 9000

Danger

nc 没有加密、身份认证或访问控制。临时监听默认绑定到明确的本机地址;不要暴露到公网,也不要用它传输密码、令牌或私密文件。

常用选项

选项含义
-l监听连接。
-z扫描模式,不发送应用数据。
-v显示连接详情。
-w SECONDS设置连接或 I/O 超时。
-u使用 UDP;默认使用 TCP。
-4 / -6强制 IPv4 / IPv6。
-N标准输入结束后关闭网络写方向。

UDP 结果不能等同于 TCP

UDP 没有握手;没有收到错误并不证明服务一定存在。应结合协议查询、服务日志或 tcpdump 判断。

官方资料