netcat 端口测试

nc 命令

ncnetcat 的简写, 被誉为“网络界的瑞士军刀”, 因其短小精悍且功能实用, 是一款简易可靠的网络工具, 适用于 Windows 和 Linux 系统。它能够通过 TCP 或 UDP 协议读写数据, 因此非常适合作为网络调试和分析工具。

nc 支持创建多种网络连接, 可用作服务器或客户端, 广泛应用于端口侦听、扫描、文件传输和网络测试等任务。

nc 的主要功能

  1. TCP/UDP 端口侦听: 作为服务器端监听特定端口, 接收连接
  2. 端口扫描: 作为客户端发起 TCP 或 UDP 连接, 测试目标端口状态
  3. 文件传输: 在不同主机之间通过网络传输文件
  4. 网络测速: 测试网络连接速度 (虽然 iperf3 更适合网络速度测试)

基本语法

语法
nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p<通信端口>][-s<来源位址>][-v...][-w<超时秒数>][主机名称][通信端口...]

常用选项及参数说明

参数 功能描述
-g <网关> 设置数据包发送路径中的网关 (最多可指定 8 个)
-G <指向器数目> 设置源路由指向器, 值应为 4 的倍数
-h 显示帮助信息
-i <延迟秒数> 设置数据传输或端口扫描的间隔时间
-l 监听模式, 用于接收传入数据 (适合作为服务器端)
-n 直接使用 IP 地址而不通过域名解析服务器 (减少 DNS 查询延迟)
-o <输出文件> 指定输出文件, 将传输的数据以 16 进制格式保存到文件
-p <通信端口> 指定本地主机的端口
-r 随机选择本地与远程主机的端口
-s <来源位址> 设置本地主机送出数据包的 IP 地址。适用于多网卡机
-u 使用 UDP 协议传输数据
-v 显示详细输出信息, -vv 获取更多详细内容
-w <超时秒数> 设置等待连接的超时时间
-z 0 输入/输出模式 (用于端口扫描时, 不传输任何数据包)

使用示例

简单聊天工具

在两个设备间建立简易聊天通道

在 192.168.2.34 上作为服务器端侦听 1234 端口

nc -l 1234

在 192.168.2.33 上连接到该端口

nc 192.168.2.34 1234

此时, 双方可以互相发送消息, 使用 Ctrl + C (或 Ctrl + D) 退出会话

文件传输

将文件从 192.168.2.33 传输到 192.168.2.34

在 192.168.2.34 上监听 1234 端口并接收文件

nc -l 1234 > test.txt

在 192.168.2.33 上发送文件

nc 192.168.2.34 1234 < test.txt

传输完成后, test.txt 文件会保存在 192.168.2.34 上

端口可用性测试

用于检查目标主机端口是否可访问, 支持 TCP 和 UDP 两种模式

TCP 模式

在 192.168.2.34 上监听端口

nc -l 1234

在 192.168.2.33 上连接到端口进行测试

nc 192.168.2.34 1234

UDP 模式

在 192.168.2.34 上使用 UDP 协议监听端口

nc -lu 1234

在 192.168.2.33 上以 UDP 协议连接到端口

nc -u 192.168.2.34 1234

注意事项

  • nc-z 选项非常适合端口扫描, 因为它不会发送实际数据。结合 -w 设置超时时间可以快速测试开放端口
  • 使用 -v 可查看详细的操作日志, 适合调试时使用
  • 文件传输可能因网络速度不同有所差异, 建议在稳定的网络环境下进行大文件传输
最后更新于 2019-03-08
使用 Hugo 构建
主题 StackJimmy 设计