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
posted on 2020-05-08 18:37  Mysticbinary  阅读(953)  评论(0)    收藏  举报