Bootstrap

window如何ping广播地址_那些你不知道的ping命令参数

在一次代码审计的时候,遇到了ping -c这样的命令,直接把我给干懵了。代码如下:

a0aef60fd565c853f4091e7d455ba7c6.png

ping命令对于熟悉系统命令的人来说都不陌生,但是相信有很多人和我一样,除了使用ping+IP地址的方法来测试联通性之外,并不知道它的其它用法。这个ping -c到底是个什么鬼?本人在网上查了一下,然后……然后就更懵了。网上有人遇到了和我一样的问题,提问后得到的答案如下:

a295f64e92f554cfdbfd3d757bd8ea38.png

经过我不懈地努力,终于找到了正确的答案,与大家分享一下:

Ping的格式:

ping [ -d] [ -D ] [ -n ] [ -q ] [ -r] [ -v] [ -R ] [ -a addr_family ] [ -c Count ] [ -w timeout ] [ -f | -i Wait ] [ -l Preload ] [ -p Pattern ] [ -s PacketSize ] [ -S hostname/IP addr ] [ -L ] [ - I a.b.c.d. ] [ -o interface ] [ -T ttl ] Host [ PacketSize ] [ Count ]

标志

-c Count 指定要被发送(或接收)的回送信号请求的数目,由 Count 变量指出。

-w timeout 这个选项仅和 -c 选项一起才能起作用。它使 ping 命令以最长的超时时间去等待应答(发送最后一个信息包后)。

-d 开始套接字级别的调试。

-D 这个选项引起 ICMP ECHO_REPLY 信息包向标准输出的十六进制转储。

-f 指定 flood-ping 选项。 -f 标志“倾倒”或输出信息包,在它们回来时或每秒 100 次,选择较快一个。每一次发送 ECHO_REQUEST,都打印一个句号,而每接收到一个 ECHO_REPLY 信号,就打印一个退格。这就提供了一种对多少信息包被丢弃的信息的快速显示。仅仅 root 用户可以使用这个选项。

注: 这在网络上将非常困难,必须小心使用。Flood ping 命令仅仅 root 用户可以使用。-f 标志与 -i Wait 标志不兼容。

-I a.b.c.d 指定被 a.b.c.d 标明的接口将被用于向外的 IPv4 多点广播。-I 标志是大写的 i 。

-o interface 指出 interface 将被用于向外的 IPv6 多点广播。接口以 “en0”,“tr0”等的形式指定。

-i Wait 在每个信息包发送之间等待被 Wait 变量指定的时间(秒数)。缺省值是在每个信息包发送之间等待 1 秒。这个选项与 -f 标志不兼容。

-L 对多点广播 ping 命令禁用本地回送。

-l Preload 在进入正常行为模式(每秒 1 个)前尽快发送 Preload 变量指定数量的信息包。-l 标志是小写的 L。

-n 指定仅输出数字。不企图去查寻主机地址的符号名。

-p Pattern 指定用多达 16 个“填充”字节去填充你发送的信息包。这有利于诊断网络上依赖数据的问题。例如,-p ff 全部用 1 填充信息包。

-q 指定静默输出。除了在启动和结束时显示总结行外什么也不显示。

-r 忽略路由表直接送到连接的网络上的主机上。如果 主机 不在一个直接连接的网络上,ping 命令将产生一个错误消息。 这个选项可以被用来通过一个不再有路由经过的接口去 ping 一个本地主机。

-R 指定记录路由选项。-R 标志包括 ECHO_REQUEST 信息包中的 RECORD_ROUTE 选项,并且显示返回信息包上的路由缓冲。

注: IP 头仅仅大到适合 9 个这样的路由。而且,许多主机和网关忽略这个选项。

-a addr_family 映射 ICMP 信息包的目的地址到 IPv6 格式,如果 addr_family 等于 “inet6”的话。

-s PacketSize 指定要发送数据的字节数。缺省值是 56,当和 8 字节的 ICMP 头数据合并时被转换成 64 字节的 ICMP 数据。

-S hostname/IP addr 将 IP 地址用作发出的 ping 信息包中的源地址。在具有不止一个 IP 地址的主机上,可以使用 -S 标志来强制源地址为除了软件包在其上发送的接口的 IP 地址外的任何地址。如果 IP 地址不是以下机器接口地址之一,则返回错误并且不进行任何发送。

-T ttl 指定多点广播信息包的生存时间为 ttl 秒。

-v 请求详细输出,其中列出了除回送信号响应外接收到的 ICMP 信息。

;