协议核心:
nc
默认使用 TCP(可靠传输),-u
启用 UDP(无连接高速)安全警告 ⚠️:传输未加密!敏感操作请用
ncat
(SSL 支持) 或ssh
一、基础参数解析(以 nc -lvtp 9443
为例)
参数 | 含义 | 必选性 |
| 监听模式 (服务端) | ✅ |
| 显示详细连接信息 | 推荐 |
| 显式使用 TCP 协议 | 可选 |
| 指定端口号 (此处 9443) | ✅ |
作用:在 TCP 协议下监听本地 9443 端口,实时显示连接状态。
二、十大核心应用场景(TCP/UDP 双协议支持)
█ 1. 端口扫描与测试(-z
)
# TCP 扫描 (默认协议)
nc -zv example.com 20-80 # 扫描20-80端口
nc -zv -w 3 example.com 443 # 设置3秒超时# UDP 扫描
nc -zvu example.com 53 # 测试DNS端口
█ 2. 简易文件传输
# TCP 文件传输(推荐)-----------------
接收端:nc -lvp 12345 > backup.iso
发送端:nc 接收端IP 12345 < ubuntu.iso# UDP 文件传输(可能丢包)
接收端:nc -ulvp 12345 > data.bin
█ 3. 目录批量传输(搭配 tar
)
# 发送目录
tar czf - /data | nc -lvp 33333 # 发送端监听并压缩# 接收目录
nc 发送端IP 33333 | tar xzvf - # 接收端解压
█ 4. 实时聊天系统
# 服务端
nc -lvtp 9443 # 详细日志+TCP监听# 客户端
nc 服务端IP 9443 # 输入内容即时互传
█ 5. 端口转发/代理
# 将本机8080请求转发至远程80端口
nc -l -p 8080 -c 'nc target.com 80' # BSD版
mkfifo /tmp/fwd && nc -l -p 8080 < /tmp/fwd | nc target.com 80 > /tmp/fwd
█ 6. HTTP 调试
# 手动发送HTTP请求
echo -e "GET / HTTP/1.1\r\nHost: baidu.com\r\n\r\n" | nc baidu.com 80
█ 7. 持续监听服务(-k
)
# 允许多客户端重复连接(BSD版)
nc -k -lvtp 9443 # 客户端断开后不退出
█ 8. 协议调试监控
# 捕获SMTP原始交互
nc -C -lvtp 1025 # 显示与邮件客户端的明文通信
█ 9. 带宽测试(配合 pv
)
# 接收端测速
nc -l -p 5000 | pv -b > /dev/null# 发送端
dd if=/dev/zero bs=1M count=100 | nc 接收端IP 5000
█ 10. 远程Shell(高危!)
# 服务端(谨慎启用!)
nc -lvp 4444 -e /bin/bash # 开放Shell给客户端# 客户端
nc 服务端IP 4444 # 获得服务端Shell控制权
三、TCP vs UDP 关键区别速查表
特性 | TCP | UDP |
连接方式 | 需要握手(可靠连接) | 无连接(直接发包) |
数据排序 | 自动排序 | 可能乱序 |
传输可靠性 | 丢包自动重传 | 不保证到达 |
适用场景 | 文件传输、远程控制、Web访问 | DNS查询、实时音视频、扫描 |
命令差异 | 默认协议 ( | 需加 |
四、高频技巧与安全规范
- 1.端口复用冲突:用
netstat -tulnp | grep 端口
检查占用 - 2.防火墙放行:监听前确保
iptables/firewalld
开放端口 - 3.特权端口限制:监听 1024 以下端口需
sudo
权限 - 4.数据传输加密:
ncat -lvp 9443 --ssl # 服务端启用SSL
ncat 服务端IP 9443 --ssl # SSL客户端
- 5.生产环境替代方案:
- •文件传输 → 用
scp
/rsync
- •远程Shell → 用
ssh
- •端口转发 → 用
ssh -L/-R
五、附:全参数速查表
参数 | 用途 |
| 监听模式 |
| UDP 模式 |
| 显示详细输出 |
| 零I/O模式(扫描) |
| 连接超时设置 |
| 指定源/目标端口 |
| 保持监听(BSD版) |
| 连接后执行程序(高危!) |
执行
man nc
查看系统版本支持的所有参数(BSD/GNU 实现存在差异)
结语:nc
是诊断网络问题、快速搭建服务的利器,但务必注意其明文传输的安全隐患。