协议核心nc默认使用 TCP(可靠传输),-u启用 UDP(无连接高速)

安全警告 ⚠️:传输未加密!敏感操作请用 ncat(SSL 支持) 或 ssh


一、基础参数解析(以 nc -lvtp 9443为例)

参数

含义

必选性

-l

监听模式 (服务端)

-v

显示详细连接信息

推荐

-t

显式使用 TCP 协议

可选

-p

指定端口号 (此处 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查询、实时音视频、扫描

命令差异

默认协议 (nc host port)

需加 -u(nc -u host port)


四、高频技巧与安全规范

  1. 1.端口复用冲突:用 netstat -tulnp | grep 端口检查占用
  2. 2.防火墙放行:监听前确保 iptables/firewalld开放端口
  3. 3.特权端口限制:监听 1024 以下端口需 sudo权限
  4. 4.数据传输加密
ncat -lvp 9443 --ssl   # 服务端启用SSL
ncat 服务端IP 9443 --ssl # SSL客户端
  1. 5.生产环境替代方案
  • 文件传输 → 用 scp/rsync
  • 远程Shell → 用 ssh
  • 端口转发 → 用 ssh -L/-R

五、附:全参数速查表

参数

用途

-l

监听模式

-u

UDP 模式

-v

显示详细输出

-z

零I/O模式(扫描)

-w 秒

连接超时设置

-p 端口

指定源/目标端口

-k

保持监听(BSD版)

-e 程序

连接后执行程序(高危!)

执行 man nc查看系统版本支持的所有参数(BSD/GNU 实现存在差异)


结语nc是诊断网络问题、快速搭建服务的利器,但务必注意其明文传输的安全隐患。