1 个不稳定版本
0.1.0 | 2024年7月15日 |
---|
#887 在 网络编程
每月125 次下载
155KB
3.5K SLoC
xping
命令行ping的再想象。发送ICMP回显请求并测量到目标主机的往返时间,带有各种功能。
用法
Command line ping, re-imagined.
Usage: xping [OPTIONS] <TARGET>...
Arguments:
<TARGET>... Address or name of target host
Options:
-r, --rate <RATE> Number of packets per second
-i, --interval <INTERVAL> Packet interval in milliseconds [default: 1000]
-c, --count <COUNT> Number of attempts (default infinite)
-w, --timeout <TIMEOUT> Timeout waiting for response in milliseconds [default: 1000]
-l, --length <LENGTH> Length of ICMP payload in bytes [default: 64]
-d, --display <DISPLAY> Display mode [default: classic] [possible values: classic, char, dumb, char-graph, debug, plot, none, influx]
-t, --ttl <TTL> Time to live [default: 64]
--api <API> [default: icmp-socket] [possible values: icmp-socket]
-4, --ipv4 Force using IPv4
-6, --ipv6 Force using IPv6
-a, --all Target all resolved addresses
--summary <SUMMARY> [default: text] [possible values: text, json, csv, none]
-h, --help Print help (see more with '--help')
-V, --version Print version
与经典ping的不同之处
- 在等待响应或超时期间继续发送回显请求而不阻塞
- 允许以非常高的数据包速率发送(每秒数千个数据包,请谨慎使用)
- 显示发送的数据包并异步更新接收到的数据包的显示
- 具有多种显示模式(
--display
选项)- 经典模式(默认):类似于经典ping(但具有异步更新)
- 字符模式:为每个探测显示一个字符,在接收或超时后更新
- 调试:显示所有内部数据
- 无需root或管理员权限
功能
- 支持IPv4和IPv6
- 可配置数据包速率、长度和TTL
- 支持Windows和Linux,具有多个API(
--api=...
)- Windows:IP Helper API(
iphelper
,默认)和原始ICMP套接字(icmp-socket
) - Linux:ICMP套接字(
icmp-socket
)
- Windows:IP Helper API(
- Linux上的IP_RECVERR支持(用于详细错误消息)
- 数据包丢失统计(类似于经典ping)
- 显示延迟统计(最小值、最大值、平均值)
- ping多个目标
- Linux上的OS时间戳(SO_TIMESTAMP)
缺失的功能和想法
- 延迟图
- 在Windows上支持超过64个未完成的请求数据包(目前由WaitForMultipleObjects限制)
- 显示接收TTL
- 水平滚动显示
- IPv4路由记录
- IPv4时间戳
限制
- Windows上不支持OS时间戳。延迟完全在用户空间中测量。
- 不支持SO_TIMESTAMP
- 不支持SIO_TIMESTAMPING与SOCK_RAW/IPPROTO_ICMP套接字
依赖项
~5–44MB
~680K SLoC