linux ping命令原理与用法(ping指令)ICMP(Internet Control Message Protocol,互联网控制报文协议)TTL(Time to Live)数据包生存时间

这篇具有很好参考价值的文章主要介绍了linux ping命令原理与用法(ping指令)ICMP(Internet Control Message Protocol,互联网控制报文协议)TTL(Time to Live)数据包生存时间。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


linux带源地址ping目的地址,网络编程,linux,linux,运维,服务器

ping命令

Ping是一种网络工具,用于测试主机之间的连通性。它基于ICMP(Internet Control Message Protocol,互联网控制报文协议)来发送探测包并接收响应。

Ping工具发送一个ICMP Echo Request(回显请求)消息到目标主机,目标主机收到请求后会返回一个ICMP Echo Reply(回显回复)消息作为响应。通过比较发送和接收的消息,可以确定主机之间的连通性和延迟。

ICMP协议是在网络层(OSI模型中的第三层)工作的,不依赖于特定的端口号。因此,Ping不使用特定的端口来发送和接收消息。它使用ICMP协议的类型和代码字段来标识和处理不同类型的消息。

需要注意的是,Ping工具通常在操作系统的网络协议栈中实现,而不是通过特定的端口进行通信。因此,Ping不会占用或使用特定的端口号。

ping命令用法

文档

ping -h
Usage
  ping [options] <destination>

Options:
  <destination>      dns name or ip address
  -a                 use audible ping
  -A                 use adaptive ping
  -B                 sticky source address
  -c <count>         stop after <count> replies
  -D                 print timestamps
  -d                 use SO_DEBUG socket option
  -f                 flood ping
  -h                 print help and exit
  -I <interface>     either interface name or address
  -i <interval>      seconds between sending each packet
  -L                 suppress loopback of multicast packets
  -l <preload>       send <preload> number of packages while waiting replies
  -m <mark>          tag the packets going out
  -M <pmtud opt>     define mtu discovery, can be one of <do|dont|want>
  -n                 no dns name resolution
  -O                 report outstanding replies
  -p <pattern>       contents of padding byte
  -q                 quiet output
  -Q <tclass>        use quality of service <tclass> bits
  -s <size>          use <size> as number of data bytes to be sent
  -S <size>          use <size> as SO_SNDBUF socket option value
  -t <ttl>           define time to live
  -U                 print user-to-user latency
  -v                 verbose output
  -V                 print version and exit
  -w <deadline>      reply wait <deadline> in seconds
  -W <timeout>       time to wait for response

IPv4 options:
  -4                 use IPv4
  -b                 allow pinging broadcast
  -R                 record route
  -T <timestamp>     define timestamp, can be one of <tsonly|tsandaddr|tsprespec>

IPv6 options:
  -6                 use IPv6
  -F <flowlabel>     define flow label, default is random
  -N <nodeinfo opt>  use icmp6 node info query, try <help> as argument

For more details see ping(8).

翻译

用中文翻译如下:

用法
  ping [选项] <目标>

选项:
  <目标>              DNS名称或IP地址
  -a                 使用可听的ping
  -A                 使用自适应ping
  -B                 使用固定源地址
  -c <次数>           在收到 <次数> 个回复后停止
  -D                 打印时间戳
  -d                 使用SO_DEBUG套接字选项
  -f                 洪水式ping
  -h                 打印帮助并退出
  -I <接口>          接口名称或地址
  -i <间隔>          发送每个数据包之间的间隔时间(秒)
  -L                 禁止回送多播数据包
  -l <预加载>        在等待回复时发送 <预加载> 个数据包
  -m <标记>          标记发送的数据包
  -M <pmtud选项>     定义MTU发现,可以是<do|dont|want>之一
  -n                 不进行DNS名称解析
  -O                 报告未完成的回复
  -p <模式>          填充字节的内容
  -q                 静默输出
  -Q <tclass>        使用服务质量<tclass>-s <大小>          使用 <大小> 作为要发送的数据字节数
  -S <大小>          使用 <大小> 作为SO_SNDBUF套接字选项的值
  -t <ttl>           定义生存时间
  -U                 打印用户到用户的延迟
  -v                 详细输出
  -V                 打印版本并退出
  -w <截止时间>      等待回复的截止时间(秒)
  -W <超时时间>      等待响应的时间

IPv4选项:
  -4                 使用IPv4
  -b                 允许ping广播
  -R                 记录路由
  -T <时间戳>        定义时间戳,可以是<tsonly|tsandaddr|tsprespec>之一

IPv6选项:
  -6                 使用IPv6
  -F <流标签>        定义流标签,默认为随机值
  -N <nodeinfo选项>  使用icmp6节点信息查询,尝试使用<help>作为参数

更多详细信息请参见ping(8)

示例

下面是对每个参数的含义和示例的解释:

- <destination>:目标主机的DNS名称或IP地址。

示例:ping www.example.comping 192.168.0.1

linux带源地址ping目的地址,网络编程,linux,linux,运维,服务器

- -a:使用可听的ping。当发送ping请求时,会发出声音提示。

示例:ping -a www.example.com

应该会有声音

- -A:使用自适应ping。根据网络状况自动调整ping的间隔时间。(无延时ping)

示例:ping -A www.example.com

ping得很快,瞬间就ping了几千下:

linux带源地址ping目的地址,网络编程,linux,linux,运维,服务器

- -B:使用固定源地址。在多个网络接口上进行ping时,指定使用特定的源地址。(不知道怎么玩)

示例:ping -B 192.168.0.2 www.example.com

不知道咋玩:

linux带源地址ping目的地址,网络编程,linux,linux,运维,服务器

20230817 解释:

解释:
在一个有多个网络接口(即多个IP地址)的系统中,使用ping命令时,系统通常会自动选择源IP地址。选择的原则一般是与目标IP地址最接近的那个源IP地址。但有时,我们可能希望指定特定的源IP地址发送ICMP请求。
这就需要用到ping命令的-B参数。-B参数允许你设置一个固定的源IP地址,也就是说,无论目标IP地址是什么,ping命令都会从这个设定的源IP地址发送出去。
例如,如果你的系统有两个网络接口,其IP地址分别为192.168.1.100和192.168.2.100,你可以通过ping -B 192.168.1.100 target_ip命令来指定从192.168.1.100这个地址发送ICMP请求。
这样做的一个主要原因是,在某些网络配置或者故障排查情况下,你可能需要从特定的网络接口进行测试,而不是任由系统自动选择。

但还是ping不通是啥原因?

linux带源地址ping目的地址,网络编程,linux,linux,运维,服务器

- -c <count>:在收到指定数量的回复后停止ping。

示例:ping -c 5 www.example.com

linux带源地址ping目的地址,网络编程,linux,linux,运维,服务器

- -D:打印时间戳。在每个ping回复中打印时间戳。

示例:ping -D www.example.com

linux带源地址ping目的地址,网络编程,linux,linux,运维,服务器

- -d:使用SO_DEBUG套接字选项。启用调试模式,打印更多调试信息。

示例:ping -d www.example.com

linux带源地址ping目的地址,网络编程,linux,linux,运维,服务器

- -f:洪水式ping。连续发送ping请求,不等待回复。

示例:ping -f www.example.com

linux带源地址ping目的地址,网络编程,linux,linux,运维,服务器

- -h:打印帮助并退出。显示ping命令的帮助信息。

示例:ping -h

- -I <interface>:指定要使用的网络接口名称或地址。

示例:ping -I eth0 www.example.com

linux带源地址ping目的地址,网络编程,linux,linux,运维,服务器

- -i <interval>:指定发送每个数据包之间的间隔时间(秒)。

示例:ping -i 1 www.example.com

linux带源地址ping目的地址,网络编程,linux,linux,运维,服务器

- -L:禁止回送多播数据包。不将多播数据包回送到本地回环接口。(搞不太明白咋玩)

示例:ping -L www.example.com

linux带源地址ping目的地址,网络编程,linux,linux,运维,服务器

什么是“禁止回送多播数据包。不将多播数据包回送到本地回环接口”?

-L选项是用于禁止将多播数据包回送到本地回环接口的。在网络中,多播是一种将数据包从一个源发送到多个目的地的通信方式。而本地回环接口是一个虚拟的网络接口,用于将数据包从一个进程发送到同一台主机上的另一个进程,而不经过网络。

当使用-L选项时,ping命令将禁止将多播数据包回送到本地回环接口。这意味着,如果目标地址是一个多播地址,并且本地主机也是该多播组的成员,那么ping命令将不会将多播数据包回送给本地回环接口。这样可以避免在本地主机上接收到自己发送的多播数据包,从而避免产生冗余的网络流量和处理开销。

需要注意的是,-L选项只在目标地址是多播地址且本地主机是该多播组的成员时才会生效。对于其他类型的目标地址,该选项不会产生任何影响。

- -l <preload>:在等待回复时发送指定数量的数据包。

示例:ping -l 10 www.example.com

linux带源地址ping目的地址,网络编程,linux,linux,运维,服务器

“在等待回复时发送指定数量的数据包”有什么用?

-l <preload>选项用于在等待回复时发送指定数量的数据包。preload参数指定了在等待回复期间要发送的数据包数量。

这个选项的作用是在等待每个ping回复时,提前发送多个数据包。这样可以增加网络负载,以便更好地测试网络的性能和稳定性。通过发送多个数据包,可以更好地模拟实际网络中的流量情况,并更全面地评估网络的响应能力。

使用-l选项时,需要注意合理设置preload参数的值。如果设置得太高,可能会导致网络拥塞或目标主机无法及时处理所有的数据包。因此,建议根据网络环境和目标主机的处理能力来选择合适的preload值,以确保测试的准确性和可靠性。

- -m <mark>:标记发送的数据包。可以用于标识特定的数据包流。(后面未详细研究和测试)

示例:ping -m 1234 www.example.com

- -M <pmtud opt>:定义MTU发现的选项,可以是do、dont或want之一。

示例:ping -M want www.example.com

- -n:不进行DNS名称解析。直接使用IP地址进行ping。

示例:ping -n 192.168.0.1

- -O:报告未完成的回复。显示未收到回复的ping请求。

示例:ping -O www.example.com

- -p <pattern>:填充字节的内容。指定填充数据包的内容。

示例:ping -p ABCD www.example.com

- -q:静默输出。只显示最终结果,不显示详细信息。

示例:ping -q www.example.com

- -Q <tclass>:使用指定的服务质量(QoS)位。

示例:ping -Q 5 www.example.com

- -s <size>:指定要发送的数据字节数。

示例:ping -s 100 www.example.com

- -S <size>:指定SO_SNDBUF套接字选项的值。

示例:ping -S 8192 www.example.com

- -t <ttl>:定义生存时间(TTL)。指定数据包在网络上的最大生存时间。

示例:ping -t 64 www.example.com

- -U:打印用户到用户的延迟。显示用户之间的延迟时间。

示例:ping -U www.example.com

- -v:详细输出。显示更多详细信息。

示例:ping -v www.example.com

- -V:打印版本并退出。显示ping命令的版本信息。

示例:ping -V

- -w <deadline>:等待回复的截止时间(秒)。如果在指定的时间内没有收到回复,则停止ping。

示例:ping -w 5 www.example.com

- -W <timeout>:等待响应的时间(秒)。如果在指定的时间内没有收到回复,则认为请求超时。

示例:ping -W 2 www.example.com

- -4:使用IPv4。强制使用IPv4协议进行ping。

示例:ping -4 www.example.com

- -b:允许ping广播。允许向广播地址发送ping请求。

示例:ping -b 192.168.0.255ping -b 192.168.1.255

ping广播存在的问题

使用ping -b命令去ping广播地址和单独ping网段下的每一个IP地址,主要有以下区别:

  1. 工作方式:当你使用ping -b去ping一个广播地址时,你在网络上发送了一个包,所有在该网络中的设备都会收到并响应这个包。而当你逐一ping网段下的每个IP地址时,你是向特定的IP地址发送请求,并等待其回应。

  2. 效率:如果你想要检查网络中所有设备的连通性,使用ping -b会更有效率,因为你只需要发送一个包就可以了。但是,如果你只关心特定的几个设备,那么直接ping这些设备的IP地址可能更好。

  3. 响应结果:通过ping广播地址,你可以快速地看到哪些设备在线,但是可能无法确定没有响应的设备是处于关闭状态还是由于配置问题不响应广播ping。而逐一ping各个IP地址可以得到每个地址的具体响应情况。

  4. 安全性:对于某些网络设备来说,由于安全考虑,可能被配置为不响应广播ping,但仍然会响应针对其IP地址的单独ping。

  5. 网络负载:频繁使用广播ping可能会增加网络负载,因为所有设备都会收到请求并发出响应。而单独ping每个IP地址则只会影响到特定设备。

使用广播ping时可能会存在很多设备没有响应的清空,可能的原因是这些设备被配置为不响应广播请求。但是直接用ping命令还是可以ping到的。所以感觉这个ping -b有点鸡肋?

- -R:记录路由。在ping请求中记录数据包的路由路径。

示例:ping -R www.example.com

- -T <timestamp>:定义时间戳的类型,可以是tsonly、tsandaddr或tsprespec之一。

示例:ping -T tsandaddr www.example.com

- -6:使用IPv6。强制使用IPv6协议进行ping。

示例:ping -6 www.example.com

- -F <flowlabel>:定义流标签,默认为随机值。

示例:ping -F 1234 www.example.com

- -N <nodeinfo opt>:使用icmp6节点信息查询,尝试使用help作为参数。

示例:ping -N help www.example.com

ping结果解读

成功1

root@sx-virtual-machine:/userdata/testOtherPrj/test# ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.545 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.720 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.546 ms
^C
--- 192.168.1.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2037ms
rtt min/avg/max/mdev = 0.545/0.603/0.720/0.082 ms
root@sx-virtual-machine:/userdata/testOtherPrj/test# 

以下是对每个部分的含义进行解释:

  • PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.:表示正在对IP地址为192.168.1.1的主机进行ping测试,发送的数据包大小为56字节(包括IP头部和ICMP头部),实际传输的数据大小为84字节。

  • 64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.545 ms:表示收到来自192.168.1.1主机的回复,数据包大小为64字节,icmp_seq表示ICMP序列号,ttl表示生存时间(Time to Live),time表示往返时间(Round Trip Time)。

  • ^C:表示用户通过按下Ctrl+C键来终止ping命令。

  • --- 192.168.1.1 ping statistics ---:表示ping统计信息的开始。

  • 3 packets transmitted, 3 received, 0% packet loss, time 2037ms:表示发送了3个数据包,收到了3个回复,丢包率为0%,总共花费了2037毫秒的时间。

  • rtt min/avg/max/mdev = 0.545/0.603/0.720/0.082 ms:表示往返时间的统计信息,其中min表示最小往返时间,avg表示平均往返时间,max表示最大往返时间,mdev表示往返时间的标准差。

失败1

root@sx-virtual-machine:/userdata/testOtherPrj/test# 
root@sx-virtual-machine:/userdata/testOtherPrj/test# ping 192.168.1.141
PING 192.168.1.141 (192.168.1.141) 56(84) bytes of data.
From 192.168.1.140 icmp_seq=1 Destination Host Unreachable
From 192.168.1.140 icmp_seq=2 Destination Host Unreachable

  • From 192.168.1.140 icmp_seq=1 Destination Host Unreachable:表示从IP地址为192.168.1.140的主机发送的ping请求未能到达目标主机(192.168.1.141),因为目标主机不可达(Destination Host Unreachable)。这可能是由于网络配置问题、目标主机关闭或防火墙阻止了ping请求等原因导致的。

解读一下:TTL(Time to Live)数据包生存时间

TTL(Time to Live)字段是IP数据包头部的一个字段,用于限制数据包在网络中的生存时间。每经过一个路由器,TTL值就会减少1。当TTL值减少到0时,路由器会丢弃该数据包并发送一个ICMP时间超过(Time Exceeded)消息给源主机。

在示例中,TTL值为64,这是因为在大多数操作系统中,初始的TTL值通常设置为64。当数据包经过一个路由器时,TTL值会减少1,因此在回复中显示的TTL值也是64。这并不意味着所有的网络中的TTL值都是64,实际上,TTL值可能因网络配置而有所不同。

TTL的主要目的是防止数据包在网络中无限循环,确保数据包能够在合理的时间内到达目的地或被丢弃。文章来源地址https://www.toymoban.com/news/detail-766547.html

20230724 安装ping命令

# ubuntu
apt-get update
apt-get install -y iputils-ping

到了这里,关于linux ping命令原理与用法(ping指令)ICMP(Internet Control Message Protocol,互联网控制报文协议)TTL(Time to Live)数据包生存时间的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深入篇【Linux】学习必备:Shell命令运行原理 + 基本指令

    Linux严格意义上来说是一个操作系统,我们称为\\\"核心\\\",但我们一般用户,是不能直接使用这个\\\"核心\\\"。而是通过\\\"核心\\\"的外壳程序,也就是所谓的Shell来与\\\"核心\\\"沟通。 其实我们所有的指令都要在OS内部运行,但是OS使用的难道太高,我们用户很难直接与OS打交道。 从技术角度

    2024年02月07日
    浏览(86)
  • ping命令的所有用法及参数。

    Ping命令是计算机网络中最基本的网络测试工具之一,它可以测试本机与其他主机之间是否可以通信,还可以计算往返时间(RTT),发现数据包传输的延迟、丢失和网络抖动等信息。以下是Ping命令的详细用法和参数解释。 命令格式 参数说明 -t :Ping 目标设备,直到停止操作。

    2024年02月16日
    浏览(55)
  • ping命令的所有用法及参数

    ping命令是一个用于测试网络连通性的常用命令。它可以发送数据包到目标主机并且等待响应,然后显示所接收到的响应时间和统计信息。以下是ping命令的一些常用用法及参数: 用法: 参数: -a:尝试将IP地址解析为主机名。 -A:使用响应数据包中的附加数据。 -b:允许pin

    2024年02月04日
    浏览(40)
  • 关于Ping命令的七种用法

    今天我们来详细看下ping命令详细使用: 一、ping基本使用详解 在网络中ping是一个十分强大的TCP/IP工具。它的作用主要为: 1、用来检测网络的连通情况和分析网络速度 2、根据域名得到服务器IP 3、根据ping返回的TTL值来判断对方所使用的操作系统及数据包经过路由器数量。 我

    2024年02月12日
    浏览(52)
  • 关于Ping命令的七种常规用法(详解)

    一、 ping 基本使用详解 在网络中 ping 是一个十分强大的 TCP/IP 工具。它的作用主要为: 1 、用来检测网络的连通情况和分析网络速度 2 、根据域名得到服务器 IP 3 、根据 ping 返回的 TTL 值来判断对方所使用的操作系统及数据包经过路由器数量。 我们通常会用它来直接 ping ip 地

    2024年04月11日
    浏览(68)
  • 什么是 Ping (ICMP) 洪水攻击?

    ping Flood 是一种 拒绝服务 攻击,攻击者试图用 ICMP 回显请求数据包淹没目标设备,导致目标设备无法访问正常流量。当攻击流量来自多个设备时,攻击就变成了 DDoS 或分布式拒绝服务攻击。 在 Ping Flood 攻击中使用的 Internet 控制消息协议 (ICMP) 是网络设备用于通信的 Internet 层

    2024年02月06日
    浏览(36)
  • 什么是 ping (ICMP) 洪水 DDOS 攻击?

    互联网控制消息协议 (ICMP) ping 请求用于检查网络设备的连接和运行状况。 在合法的 ICMP ping 中,接收方设备回复 ICMP 回显请求。响应指示收件人的运行状况。 Ping 洪水攻击,通常称为 ICMP 洪水攻击,是 DDoS 攻击的一种形式,其中攻击者通过 ICMP 回显请求(也称为 ping)淹

    2024年02月07日
    浏览(43)
  • Linux ping命令详解

    1.命令介绍 ping命令的功能是用于测试主机间网络连通性 ,发送出基于ICMP传输协议的数据包,要求对方主机予以回复,若对方主机的网络功能没有问题且防火墙放行流量,则就会回复该信息,我们也就可得知对方主机系统在线并运行正常了。 ping命令用于:确定网络和各外部

    2024年02月05日
    浏览(45)
  • 【Linux】ping命令详解

    目录 一、ping概述 二、Ping用法 三、ping参数详解 四、使用 五、Wireshark抓取ICMP请求应答消息 ping 命令用于测试与目标主机之间的连接。它向目标主机发送一个 ICMP (Internet Control Message Protocol)Internet控制报文协议回显请求,并等待它的回应。如果目标主机正常工作并且连接畅

    2024年02月08日
    浏览(49)
  • Linux命令·ping

    Linux系统的ping命令是常用的网络命令,它通常用来测试与目标主机的连通性,我们经常会说“ping一下某机器,看是不是开着”、不能打开网页时会说“你先ping网关地址192.168.1.1试试”。它通过发送ICMP ECHO_REQUEST数据包到网络主机(send ICMP ECHO_REQUEST to network hosts),并显示

    2024年02月07日
    浏览(76)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包