nc替代ping
nc(Netcat)与 ping 是网络诊断与通信中功能和底层原理完全不同的两个工具,核心区别在于网络分层、所用协议以及测试目的。
ping和NC区别对比
| 维度 | ping | nc (Netcat) |
|---|---|---|
| OSI网络层级 | 网络层(Layer 3) | 传输层 / 应用层(Layer 4 / Layer 7) |
| 核心协议 | ICMP(Internet Control Message Protocol) | TCP / UDP(及基于其上的各种协议) |
| 检测目标 | 主机级别的网络连通性(IP 地址可达性) | 特定服务与端口的可达性及数据传输 |
| 是否依赖端口 | 否(无端口概念) | 是(必须指定具体的 TCP/UDP 端口) |
| 典型功能 | 测延迟、计算丢包率 | 端口扫描、服务探测、传输文本/文件、调试端口 |
工作原理详解
1. ping 的工作原理
- 基于 ICMP 协议中的 Echo Request(类型 8)与 Echo Reply(类型 0)。
- 发送端向目标 IP 发送 ICMP Echo Request 数据包。
- 目标主机的操作系统内核在收到该包后,直接响应一个 ICMP Echo Reply 数据包。
- 特点:不需要目标主机运行任何应用程序或开放端口,只要网络通畅且防火墙未拦截 ICMP 包即可响应。
2. nc 的工作原理
- 基于传输层的 TCP 三次握手或 UDP 数据包收发。
- TCP 模式:通过调用 Socket API 向目标 IP 和指定端口发起 TCP 连接请求(SYN)。若握手成功,说明该端口开放且服务正常响应;同时支持建立全双工的数据通道进行文本或文件传输。
- UDP 模式:发送 UDP 数据包,若收到 ICMP Port Unreachable,则判定端口关闭;若无回应或收到数据,则判定端口开放/被拦截。
- 特点:可以模拟客户端/服务端,不仅能检测端口是否开放,还能进行应用层交互(如 Banner 抓取)。
常见场景区别
- 被防火墙拦截:很多服务器或云厂商屏蔽了 ICMP(
ping提示超时),但服务端口正常(nc -zv IP PORT可以成功连接)。 - 定位范围:
ping通仅代表“路通了”,不代表服务能用;nc能连通才代表“指定端口的服务可以访问”。
nc命令介绍
语 法:nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p<通信端口>][-s<来源位址>][-v...][-w<超时秒数>][主机名称][通信端口...]
参 数:
-g<网关> 设置路由器跃程通信网关,最多可设置8个。
-G<指向器数目> 设置来源路由指向器,其数值为4的倍数。
-h 在线帮助。
-i<延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口。
-l 使用监听模式,管控传入的资料。
-n 直接使用IP地址,而不通过域名服务器。
-o<输出文件> 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。
-p<通信端口> 设置本地主机使用的通信端口。
-r 乱数指定本地与远端主机的通信端口。
-s<来源位址> 设置本地主机送出数据包的IP地址。
-u 使用UDP传输协议。
-v 显示指令执行过程。
-w<超时秒数> 设置等待连线的时间。
-z 使用0输入/输出模式,只在扫描通信端口时使用。
替代ping的使用场景
有时候想看两台机器的网络通不通,除了ping,还可以用nc
接收方 设置监听:

请求方 设置访问:
➜ ~ curl 10.211.55.3:4444
浙公网安备 33010602011771号