ping 订阅
PING (Packet Internet Groper),因特网包探索器,用于测试网络连接量的程序 [1]  。Ping是工作在 TCP/IP网络体系结构中应用层的一个服务命令, 主要是向特定的目的主机发送 ICMP(Internet Control Message Protocol 因特网报文控制协议)Echo 请求报文,测试目的站是否可达及了解其有关状态 [2]  。 展开全文
PING (Packet Internet Groper),因特网包探索器,用于测试网络连接量的程序 [1]  。Ping是工作在 TCP/IP网络体系结构中应用层的一个服务命令, 主要是向特定的目的主机发送 ICMP(Internet Control Message Protocol 因特网报文控制协议)Echo 请求报文,测试目的站是否可达及了解其有关状态 [2]  。
信息
简    称
PING
作    用
测试网络连接量
中文名
因特网包探索器
外文名
Packet Internet Groper
ping基本信息
ping用于确定本地主机是否能与另一台主机成功交换(发送与接收)数据包,再根据返回的信息,就可以推断TCP/IP参数是否设置正确,以及运行是否正常、网络是否通畅等。Ping命令可以进行以下操作 [3]  :①通过将ICMP(Internet控制消息协议)回显数据包发送到计算机并侦听回显回复数据包来验证与一台或多台远程计算机的连接。②每个发送的数据包最多等待一秒。③打印已传输和接收的数据包数。需要注意的是,Ping成功并不一定就代表TCP/IP配置正确,有可能还要执行大量的本地主机与远程主机的数据包交换,才能确信TCP/IP配置的正确性。如果执行ping成功而网络仍无法使用,那么问题很可能出在网络系统的软件配置方面,ping成功只保证当前主机与目的主机间存在一条连通的物理路径 [3]  。
收起全文
精华内容
下载资源
问答
  • Ping

    千次阅读 2018-11-26 19:06:57
    Ping ping是定位网络通不通的一个重要手段。ping是用来探测本机与网络中另一主机之间是否可达的命令,如果两台主机之间ping不通,则表明这两台主机不能建立起连接。 ping 命令是基于 ICMP 协议来工作的,「 ICMP 」...

    Ping

    ping是定位网络通不通的一个重要手段。ping是用来探测本机与网络中另一主机之间是否可达的命令,如果两台主机之间ping不通,则表明这两台主机不能建立起连接。

    ping 命令是基于 ICMP 协议来工作的,「 ICMP 」全称为 Internet 控制报文协议( Internet Control Message Protocol)。ping 命令会发送一份ICMP回显请求报文给目标主机,并等待目标主机返回ICMP回显应答。因为ICMP协议会要求目标主机在收到消息之后,必须返回ICMP应答消息给源主机,如果源主机在一定时间内收到了目标主机的应答,则表明两台主机之间网络是可达的。

    通过ping的流程可以发现,ICMP协议是这个过程的基础,是非常重要的,因此下面就把ICMP协议再详细解释一下。

    ICMP

    ICMP报文是封装在IP包中。IP协议是一种无连接的,不可靠的数据包协议,它并不能保证数据一定被送达,那么我们要保证数据送到就需要通过其它模块来协助实现,这里就引入的是ICMP协议。当传送的IP数据包发送异常的时候,ICMP就会将异常信息封装在包内,然后回传给源主机。
    ICMP协议大致可分为两类:

    • 查询报文类型
      查询报文类型:主要应用于:ping查询、子网掩码查询、时间戳查询等等。
    • 差错报文类型
      差错报文类型:主要产生于当数据传送发送错误的时候。

    具体做法就是:
    Traceroute会设置特殊的TTL值,来追踪源主机和目标主机之间的路由数。首先它给目标主机发送一个 TTL=1 的UDP数据包,那么这个数据包一旦在路上遇到一个路由器,TTL就变成了0(TTL规则是每经过一个路由器都会减1),因为TTL=0了,所以路由器就会把这个数据包丢掉,然后产生一个错误类型(超时)的ICMP数据包回发给源主机,也就是差错包。这个时候源主机就拿到了第一个路由节点的IP和相关信息了。接着,源主机再给目标主机发一个 TTL=2 的UDP数据包,依旧上述流程走一遍,就知道第二个路由节点的IP和耗时情况等信息了。如此反复进行,Traceroute就可以拿到从主机A到主机B之间所有路由器的信息了。

    但是有个问题是,如果数据包到达了目标主机的话,即使目标主机接收到TTL值为1的IP数据包,它也是不会丢弃该数据包的,也不会产生一份超时的ICMP回发数据包的,因为数据包已经达到了目的地嘛。那我们应该怎么认定数据包是否达到了目标主机呢?

    Traceroute的方法是在源主机发送UDP数据包给目标主机的时候,会设置一个不可能达到的目标端口号(例如大于30000的端口号),那么当这个数据包真的到达目标主机的时候,目标主机发现没有对应的端口号,因此会产生一份“端口不可达”的错误ICMP报文返回给源主机。

    展开全文
  • java中ping命令ping工具类(循环ping) java ping ip ping命令 ping工具类 支持linux和windows等所有平台 Ping是Windows下的一个命令 在Unix和Linux下也有这个命令。 ping也属于一个通信协议,是TCP/IP协议的一部分 ...
  • 这是一个功能非常强大的工具,可以设置发送时间间隔,报文大小,可以统计出丢包率。
  • windows 环境下 ping 加时间戳 记日志,可以把ping出来的,实时记录到txt中
  • android Ping IP 地址

    2016-09-20 23:10:39
    android PING IP地址。添加来了判断返回速度的代码。可用于服务器连接线路的选择
  • 一般的ping命令不带时间戳,这个加强版可以形成日志记录。便于网络稳定性长期监控。
  • android studio写的ping程序app,直接可以用。
  • H3C经典Ping命令详解

    热门讨论 2015-07-14 22:07:50
    H3C经典Ping命令详解,简单实用,免费下载
  • 一款非常小巧的批量 Ping 工具,简单易用,可以允许Ping多个主机名和IP 地址的一个小工具, 并且可以在同一个显示器上观看结果
  • iOS下实现ping功能

    热门讨论 2014-06-10 10:02:38
    iOS下实现ping功能的一个小小demo,希望对大家有帮助
  • Android 模拟Ping命令,获取ping

    热门讨论 2012-12-04 16:53:19
    执行Ping命令并获取ping返回包,检查网络状况
  • vm虚拟机linux ping不通主机,主机能ping通linux的解决方法 我用的net连接,之前配置好了能互通也能通外网的情况下,某一次重启,可能之前配置不够完善并没通,然后开始查资料找问题,发现是该虚拟网卡没有网关无法...

    vm虚拟机linux ping不通主机,主机能ping通linux的解决方法

    我用的net连接,之前配置好了能互通也能通外网的情况下,某一次重启,可能之前配置不够完善并没通,然后开始查资料找问题,发现是该虚拟网卡没有网关无法连上网,
    下面附上所有正确的配置图,
    选择net模式这里的端口转发可不添加在这里插入图片描述

    现在看linux的网络设置
    Linux 服务器默认网卡配置文件在/etc/sysconfig/network-scripts/下,命
    名的名称一般为:ifcfg-eth0 ifcfg-eth1 ,eth0 表示第一块网卡,eth1 表示第
    二块网卡,依次类推。一般 DELL R720 标配有 4 块千兆网卡

    修 改 网 卡 的 IP , 可 以 使 用 命 令 : vi /etc/sysconfig/network-scripts/ifcfg-eth0

    vi /etc/sysconfig/network-scripts/ifcfg-ens33
    

    这里我的网卡是ens33

    
    TYPE="Ethernet"
    PROXY_METHOD="none"
    BROWSER_ONLY="no"
    BOOTPROTO="static" #[none|static|bootp|dhcp] ( 不使用协议 | 静态分配|BOOTP 协议|DHCP 协议)
    
    DEFROUTE="yes"
    IPV4_FAILURE_FATAL="no"
    IPV6INIT="yes"
    IPV6_AUTOCONF="yes"
    IPV6_DEFROUTE="yes"
    IPV6_FAILURE_FATAL="no"
    NAME="ens33" #网卡名
    UUID="ee86e89c-1dfa-4414-b6c5-0099885ec6bc"
    DEVICE="ens33"  
    ONBOOT="yes" # [yes|no](重启网卡是否激活设备)
    IPV6_PRIVACY="no"
    
    
    NM_CONTROLLED=no
    IPADDR="192.168.200.3" #本机ip地址  
    PREFIX="25"    #前缀,少了可能会报错
    GATEWAY="192.168.200.100"  #网关
    NETMASK="255.255.255.0"  #子网掩码
    DNS1="8.8.8.8" #dns1 也可以手动vi /etc/resolv.conf
    
    DNS2="114.114.114.114" #dns2
    

    现在重启网络: /etc/init.d/network restart
    不行就用下面两条命令
    重新启动网络:
    systemctl start network.service
    或者
    service network restart

    查看ip配置 ifconfig 或 ip addr
    在这里插入图片描述
    ping主机和外网测试是否能通
    在这里插入图片描述
    测试互通
    windos 打开cmd ping 虚拟机主机ip
    在这里插入图片描述

    如果不通则
    windos cmd输入命令 ipconfig /all 查看网卡
    net模式网卡配置以上信息有空则连接会错误,不通
    我的之前就是默认网关为空,解决方法如下
    在这里插入图片描述在这里插入图片描述手动再设置网关
    ,确定退出,重启linux网络服务重新启动网络:
    systemctl start network.service
    或者
    service network restart
    重启完毕主机linux互ping 成功通了就可以了。

    如果无效或不能互ping,尝试设置更改vm的虚拟网络编辑设置达到刷新效果

    展开全文
  • window ping命令加时间并记录日志

    热门讨论 2014-01-26 16:14:41
    用操作系统的ping命令可以查看网络是否良好,但是如果想一直查看,记录日志是最好的选择。自带的不能记录日志,用shell脚本比较麻烦而且没有ping的时间记录,这个小工具或许能解决你的问题,自定义日志文件路径配置...
  • 批量定时ping工具

    2013-05-20 15:28:00
    批量导入ping列表ip地址,可以进行循环时间自动pingping结果直接导出文本。可以做网络连通检查
  • Ping指定IP并输出带每条Ping记录时间的文档
  • Python 如何 ping

    万次阅读 2020-10-10 19:38:10
    背景 最近需要监测一个服务器的运行状态。...ping 的原理就是发送一份 ICMP 回显请求报文给目标主机,并等待目标主机返回ICMP回显应答。 如果想要自己写,可以自己控制发报文,这里推荐一篇博客大家可以自行

    背景

    最近需要监测一个服务器的运行状态。

    因为服务器部署在两地,网络抖动对业务的影响很大,所以要在网络抖动情况严重时做一些警报。

    实现方法有很多种,最终选择了使用 Python 来实现这样的功能。

    实现

    Python 实现 ping 有几种方法:

    1、自己实现 ping
    2、调用系统 ping
    3、使用 Python 模块

    自己实现 ping

    ping 的原理就是发送一份 ICMP 回显请求报文给目标主机,并等待目标主机返回ICMP回显应答。

    如果想要自己写,可以自己控制发报文,这里推荐一篇博客大家可以自行前去学习:点我去学习

    调用系统 ping

    这个就没什么复杂的,就是调用系统的 ping,但是如果有跨平台使用的需求,要区分好系统平台,windows 要特殊处理一下,可以参考如下代码:

    import platform    # For getting the operating system name
    import subprocess  # For executing a shell command
    
    def ping(host):
        """
        Returns True if host (str) responds to a ping request.
        Remember that a host may not respond to a ping (ICMP) request even if the host name is valid.
        """
    
        # Option for the number of packets as a function of
        param = '-n' if platform.system().lower()=='windows' else '-c'
    
        # Building the command. Ex: "ping -c 1 google.com"
        command = ['ping', param, '1', host]
    
        return subprocess.call(command) == 0
    

    使用 Python 模块

    一般大家也不会自己造轮子,尤其是对于 Python 这种轮子众多的,我们只要从中选择好用的就可以。

    这里推荐大家几个挺不错的 ping 模块。

    ping3

    代码地址:https://github.com/kyan001/ping3

    功能很强大,使用简单,缺点也比较明显——需要 root 权限。

    Note that ICMP messages can only be sent from processes running as root.
    需要 root 权限运行的 process 才能发送 ICMP 数据。

    >>> from ping3 import ping, verbose_ping
    >>> ping('example.com')  # Returns delay in seconds.
    0.215697261510079666
    
    >>> verbose_ping('example.com')  # Ping 4 times in a row.
    ping 'example.com' ... 215ms
    ping 'example.com' ... 216ms
    ping 'example.com' ... 219ms
    ping 'example.com' ... 217ms
    

    MultiPing

    代码地址:https://github.com/romana/multi-ping/

    话说一个大牛,觉得目前的工具都不好用,然后就自己写了一个。

    特点是可以以较小的资源同时 ping 多个地址。

    from multiping import MultiPing
    
    # Create a MultiPing object to test three hosts / addresses
    mp = MultiPing(["8.8.8.8", "youtube.com", "127.0.0.1"])
    
    # Send the pings to those addresses
    mp.send()
    
    # With a 1 second timout, wait for responses (may return sooner if all
    # results are received).
    responses, no_responses = mp.receive(1)
    
    

    TCPing

    代码地址:https://github.com/zhengxiaowai/tcping

    TCP 实现的 ping,与 ICMP 的 ping 原理不同,但反应网络是否连通、延迟多少的功能是一样的。

    还有另外一个优点,也是最终被我选用的优点,不需要 root 权限。

    from tcping import Ping
    
    def ping_check():
        ping = Ping('192.168.0.116', 80, 60)
        ping.ping(10)
    
        ret = ping.result.rows
        for r in ret:
            print(r)
    
        ret = ping.result.raw
        print(ret)
    
        ret = ping.result.table
        print(ret)
    
    
    if __name__ == '__main__':
        ping_check()
    

    该有的统计什么的也都是有的,而且很好用。

    ➜  ~ tcping api.github.com -c 3 --report
    Connected to api.github.com[:80]: seq=1 time=237.79 ms
    Connected to api.github.com[:80]: seq=2 time=237.72 ms
    Connected to api.github.com[:80]: seq=3 time=258.53 ms
    
    +----------------+------+-----------+--------+--------------+----------+----------+----------+
    |      Host      | Port | Successed | Failed | Success Rate | Minimum  | Maximum  | Average  |
    +----------------+------+-----------+--------+--------------+----------+----------+----------+
    | api.github.com |  80  |     3     |   0    |   100.00%    | 237.72ms | 258.53ms | 244.68ms |
    +----------------+------+-----------+--------+--------------+----------+----------+----------+
    

    行了,就先分享到这里了,大家可以根据自身情况灵活选择,每个库都试一试,总能找到满足你需求的。

    祝大家搬砖顺利。

    展开全文
  • ping命令详解

    万次阅读 多人点赞 2018-11-02 22:53:38
    Linux系统的ping命令是常用的网络命令,它通常用来测试与目标主机的连通性,我们经常会说“ping一下某机器,看是不是开着”、不能打开网页时会说“你先ping网关地址192.168.1.1试试”。它通过发送ICMP ECHO_REQUEST...

     

    1 概述

     

    Linux系统的ping命令是常用的网络命令,它通常用来测试与目标主机的连通性,我们经常会说“ping一下某机器,看是不是开着”、不能打开网页时会说“你先ping网关地址192.168.1.1试试”。它通过发送ICMP ECHO_REQUEST数据包到网络主机(send ICMP ECHO_REQUEST to network hosts),并显示响应情况,这样我们就可以根据它输出的信息来确定目标主机是否可访问(但这不是绝对的)。有些服务器为了防止通过ping探测到,通过防火墙设置了禁止ping或者在内核参数中禁止ping,这样就不能通过ping确定该主机是否还处于开启状态。

     

    linux下的ping和windows下的ping稍有区别。linux下ping不会自动终止,需要按ctrl+c终止或者用参数-c指定要求完成的回应次数。

     

     

     

     

     

     

    2 命令

     

    2.1 命令功能

     

    ping命令用于:确定网络和各外部主机的状态;跟踪和隔离硬件和软件问题;测试、评估和管理网络。如果主机正在运行并连在网上,它就对回送信号进行响应。每个回送信号请求包含一个网际协议(IP)和 ICMP 头,后面紧跟一个 tim 结构,以及来填写这个信息包的足够的字节。缺省情况是连续发送回送信号请求直到接收到中断信号(Ctrl-C)。

     

    ping 命令每秒发送一个数据报并且为每个接收到的响应打印一行输出。ping 命令计算信号往返时间和(信息)包丢失情况的统计信息,并且在完成之后显示一个简要总结。ping 命令在程序超时或当接收到 SIGINT 信号时结束。Host 参数或者是一个有效的主机名或者是因特网地址。

     

     

     

     

    2.2 命令格式

     

    ping [参数] [主机名或IP地址]

     

    ping命令运行在命令提示符终端,用法为:“ping 参数 目标主机”。其中参数为零到多个,目标主机可以是IP或者域名。

    Usage: ping [-aAbBdDfhLnOqrRUvV] [-c count] [-i interval] [-I interface]
    
    [-m mark] [-M pmtudisc_option] [-l preload] [-p pattern] [-Q tos]
    
    [-s packetsize] [-S sndbuf] [-t ttl] [-T timestamp_option]
    
    [-w deadline] [-W timeout] [hop1 ...] destination

     

     

     

     

    2.3 命令参数

     

    参数

    功能

    -a

    Audible ping, 即每ping一次都会有声音提示。

    -A

    自适应ping,根据ping包往返时间确定ping的速度。

    -b

    允许ping一个广播地址。

    -B

    不允许ping改变包头的源地址。

    -c count

    ping指定次数后停止ping。

    -d

    设置socket中的SO_DEBUG选项,使能调试跟踪。实质上Linux内核中没有使用这个套接字选项。

    -F flow_label

    为ping回显请求分配一个20位的“flow label”,如果未设置,内核会为ping随机分配。这个选项只有ping6才有。

    -f

    洪泛模式。极限检测,快速连续ping一台主机,ping的速度达到100次每秒。对每一个ECHO_REQUEST报文的发送,打印一个“.”,当接受到ECHO_REPLY报文时,打印一个backspace字符。这样能够快速地表明网络丢失了多少个报文。如果interval没有设置,则设置interval为0,并按照报文接受的速度和一百次每秒的速度来发送报文(看哪个速度快)。只有超级用户能够和-i 0选项一起使用这个选项。

    -i interval

    设定间隔几秒发送一个ping包,默认一秒ping一次。

    -I interface

    指定网卡接口、或指定的本机地址送出数据包。

    -l preload

    是在没有接受到回复报文之前能发送的最多报文。非超级用户最多只能设置为3。如果不赋值preload默认为1。

    -L

    抑制组播报文回送,只适用于ping的目标为一个组播地址。

    -n

    只有数字形式ip地址值的输出,不通过查询DNS获知IP地址对应的主机名,以节省时间。

    -p pattern

    允许为传输的回显报文中包含的内容指定字节模式。这对于诊断与传输数据有关的网络问题可能很有用。数据采用16进制,例如“-p ff”可将传输的报文填充为全1。

    -q

     

    静默模式。这种模式下,出了开始的提示和结束的数据统计,不会输出任何东西。

     

    -Q tos

    用来设置服务质量(Quality of Service ),例如最小开销、 可靠性、吞吐量、低延迟。

     

    IP协议有一个8bit的DS区分服务(以前叫服务类型)。前三位是优先(precedence)字段(在目前,优先字段并未被大家使用),接着4bit是TOS位,最后1bit没有使用,但必须置0。

     

    4比特TOS位的意义分别为D(最小时延)、T(最大吞吐量)、R(最高可靠性)、C(最小代价)。要设置TOS位为对应意义,可以设置-Q <tos>分别为0x10,0x08,0x04,0x02。TOS的各个位不能同时置1。

    -R

    记录路由信息。在发送的IP报文首部选项中放入记录路由选项,在接到到报文回复之后,打印出回复报文的路由信息。

     

    注意:IP报文的选项中最多只能计算9个路由信息,计算方式如下:

     

    首部长度HLEN。这4bit字段用来定义首部的长度,以4字节为单位。由于首部长度可变,默认长度是20字节,此时4bit字段值为5。4bit的字段最大可以表示的数为15,故此首部长度最大为15*4byte,即60byte。首部的可变字节数为60-20=40byte,RR选项用去3byte(参见记录路由选项的一般格式),只剩下37byte,最多只能放下9个IP地址。

     

    注意:很多的主机会略过IP报文的路由选项,因此有可能在回复报文中没有路由信息。

    注意:不能和-T选项一起使用。

    -r

    绕过一般的路由表而直接向一个连接着的主机发送报文。如果主机不是通过直接连接的网络相连,则会出现错误。这个选项可以用来ping一个没有通过路由相连而是通过一个接口相连(假设也使用了-I选项)的本地主机。

    -S sndbuf

    设置套接字的发送缓冲区大小。如果没有设置,则被设定为不超过一个报文长度的长度。

    -s packetsize

    指定每次ping发送的数据字节数,默认为“56字节”+“28字节”的ICMP头,一共是84字节。

    包头+内容不能大于65535,所以最大值为65507(linux:65507, windows:65500)。

    -t ttl

    设置TTL(Time To Live)为指定的值。该字段指定IP包被路由器丢弃之前允许通过的最大网段数。

    -T timestamp_option

    设置IP时间戳选项。时间戳选项可以是以下三种:

    (a) -T tsonly 只记录时间戳。

    (b) -T tsandaddr 收集时间戳和IP地址。

    (c) -T tsprespec [host1 [host2 [host3[host4]]]] 收集来自预定的网络段的时间戳和地址,发送端对选项列表进行初始化,存放了4个IP地址和四个取值为0的时间戳。只有在列表中的下一个地址和当前路由地址相匹配时,才记录它的时间戳。

     

    与-R选项的分析类似,首部的可变字节数为60-20=40byte,选项用去4byte(参见时间戳选项的一般格式),只剩下36byte,最多只能放下9个时间戳。

     

    注意:由于IP首部的空间限制,程序限制-R选项与-T不能同时使用。

    -M hint 

    设定Path MTU查找选下项,可设置成下列三种:

    (a) -M do 不允许分段,甚至不允许在本地分段。

    (b) -M want 找出PMTU,在如果包太大就在本地分段。

    (c) -M dont 不要设置IP首部中的DF位,即允许分段。

    -m mark

    设置mark。

    -v

    使ping处于verbose方式,它要ping命令除了打印ECHO-RESPONSE数据包之外,还打印其它所有返回的ICMP数据包。

    -W timeout

    等待回复的时间,单位是毫秒。这个选项只在没有接到任何的回复的情况下有效,只要接到了一个回复,就将等待时间设置为两倍的RTT。如果没有设置,则等待时间设置为一个最大值。

    -w deadline

    设定时间期限为<deadline>秒,不管已经发送和接到了多少包,只要达到时间期限就结束ping的过程。

     

     

     

    2.4 输出格式

     

     

     

    下图为简单的ping产生的响应内容,图中返回内容具体的含义如下:

    ① ping目标主机的域名和IP(ping会自动将域名转换为IP)

    ② 不带包头的包大小和带包头的包大小(参考“-s”参数)

    ③ icmp_seq:ping序列,从1开始;如果数字不是按顺序递增也就意味着丢包了

      ttl:剩余的ttl;见TTL解释

      time: 响应时间,数值越小,联通速度越快;

    ④ 发出去的包数,返回的包数,丢包率,耗费时间;

    ⑤ 最小/最大/平均响应时间和本机硬件耗费时间;

     

     

     

     

     

    3 TTL解释

     

    当我们在使用ping命令时,返回结果里会带一个TTL值。这个东西的含义其实就是Time To Live,指的是报文在网络中能够‘存活’的限制。以前这个限制方式是设定一个时间(Time To Live中的Time就是这样来的),当报文在网络中转发时,时间超过这个限制,最后一个收到报文的‘路由点’就会把它扔掉,而不继续转发。后来把时间限制改为了跳数限制,就是当报文在网络中转发时,每经过一个‘路由点‘,就把预先设定的这个TTL数值减1,直到最后TTL=1时报文就被扔掉,不向下转发。

     

    路由点:我这里是指完成路由功能的机器,因为并不是只有路由器才可以完成路由转发功能,比如主机可以配置路由转发。

     

    ping命令中的TTL

     

    上边解释的TTL是基础,然后,我们这篇文章要说明的是ping中的TTL到底是什么意思。

     

    其实这个TTL是指:被ping主机那里返回的报文,到了你这里,从它自己预设的TTL减小到还剩下多少。

     

    有点绕口,举个例子就明白了。

     

    (1) 我们先 tracert www.baidu.com

     

     

     

     

    这里表示,我们发出的ICMP报文从自己主机到目标主机一共经过12跳,这里可以想成我们发过去的和对方返回的路由路径是一样的(其实网络很复杂的,这样说是在基本理论上简化问题——一般网络情况不变化就是这样的),也就是目标主机它预设的报文TTL要减掉12。现在,按照刚才说的“被ping主机那里返回的报文,到了你这里,从它自己预设的TTL减小到还剩下多少。”,我们可以计算ping www.baidu.com时的TTL了。

     

    TTL = 目标主机预设报文TTL - 12

     

    现在等式中有两个未知数,但是“目标主机预设报文TTL”其实比较容易知道。并且有一个前提:一般有64、128等几个值。

     

    (2) 我们先来ping www.baidu.com

     

     

     

     

    这里我们看到 TTL = 52。一般就可以推断目标主机预设的报文TTL为64,因为它比较接近(一般啦)。然后对比一下上边的等式,代入数值:

    52 = 64 - 12

    默认情况下,Linux系统的TTL值为64或255,Windows NT/2000/XP系统的TTL值为128,Windows 98系统的TTL值为32,UNIX主机的TTL值为255。

     

     

     

     

     

    4 简单实例

     

    (1) 每隔0.6秒ping一次,一共ping 5次

     

     

    [root@my ~]# ping -c 5 -i 0.6 qq.com
    PING qq.com (14.17.32.211) 56(84) bytes of data.
    64 bytes from 14.17.32.211: icmp_seq=1 ttl=54 time=16.5 ms
    64 bytes from 14.17.32.211: icmp_seq=2 ttl=54 time=17.0 ms
    64 bytes from 14.17.32.211: icmp_seq=3 ttl=54 time=16.6 ms
    64 bytes from 14.17.32.211: icmp_seq=4 ttl=54 time=18.3 ms
    64 bytes from 14.17.32.211: icmp_seq=5 ttl=54 time=19.9 ms
     
    --- qq.com ping statistics ---
    5 packets transmitted, 5 received, 0% packet loss, time 2405ms
    rtt min/avg/max/mdev = 16.520/17.692/19.919/1.293 ms

     

    (2) 极限快速的使用大包ping

    以最快的速度,使用最大的包进行ping,可用于测试目标主机的承压能力:

    [root@my ~]# ping -f -s 65507 10.0.0.52
    PING 10.0.0.52 (10.0.0.52) 65507(65535) bytes of data.
    .^
    --- 10.0.0.52 ping statistics ---
    646 packets transmitted, 646 received, 0% packet loss, time 1675ms
    rtt min/avg/max/mdev = 1.202/2.406/8.253/0.507 ms, ipg/ewma 2.598/2.318 ms

     

    注意:此用法非常危险,65535(包头+内容)*100个包每秒=6.25MB,每秒发送6.25MB的数据,相当于50Mbps的带宽,完全可能导致目标主机拒绝服务。请勿用于非法用途,造成不良后果自负。

     

     

    (3) 不稳定网络,丢包严重的情形

    下面的ping发出17个ping icmp包,而只有序号为8、9、12的包收到响应信息,丢包率达82%,联通非常不稳定

    [root@my ~]# ping 8.8.8.8
    PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
    64 bytes from 8.8.8.8: icmp_seq=8 ttl=43 time=32.3 ms
    64 bytes from 8.8.8.8: icmp_seq=9 ttl=43 time=32.2 ms
    64 bytes from 8.8.8.8: icmp_seq=12 ttl=43 time=32.0 ms
    ^C
    --- 8.8.8.8 ping statistics ---
    17 packets transmitted, 3 received, 82% packet loss, time 16003ms
    rtt min/avg/max/mdev = 32.038/32.208/32.362/0.246 ms

     

     

     

    (4) 完全无法ping通的情形

     

     

    [root@my ~]# ping -c 3 9.9.9.9
    PING 9.9.9.9 (9.9.9.9) 56(84) bytes of data.
     
    --- 9.9.9.9 ping statistics ---
    3 packets transmitted, 0 received, 100% packet loss, time 1999ms

     

     

     

     

     

     

     

     

    展开全文
  • 指定网口ping,指定速率ping,指定大小ping,指定次数ping
  • 用Python实现PING

    万次阅读 多人点赞 2019-07-16 21:02:10
    PING 概述 ping属于一个通信协议,是TCP/IP协议的一部分。利用“ping”命令可以检查网络是否连通,可以很好地分析和判定网络故障。 PING ,用于测试网络连接量的程序。Ping发送一个ICMP(Internet Control Messages ...
  • Linux ping 命令

    千次阅读 2019-04-04 09:43:17
    ping 解析  Linux系统的ping命令是常用的网络命令,它通常用来检测与目标主机的连通性,经常说"ping以下机器,看是否开着,不能打开网页时候,可以ping 一下网关,它是通过发送ICMP ECHO__REQUEST数据包到网络...
  • 背景:我在虚拟机上ping主机时,发现ping得通,但在主机上ping虚拟机时,一直提示请求超时。上网查看了几个博客,发现基本都是要修改win10主机的相关内容,我不想改动它,只想改动虚拟机。所以就有了下面的方法,只...
  • [GXYCTF2019]Ping Ping Ping

    千次阅读 2020-03-02 19:36:04
    打开题目发现提示输入ip,发现应该是个命令执行,源码中应该是exec()、shell_exec()之类的函数,然后传入 ping + ip,我们首先尝试 ?ip=1;ls发现flag.php、index.php.尝试打开flag.php发现存在过滤,几次尝试之后...
  • 记 [GXYCTF2019]Ping Ping Ping 1

    千次阅读 多人点赞 2020-03-24 10:39:40
    结合题目的ping。尝试?ip=127.0.0.1 果然是linux的命令执行,尝试执行其他命令 ?ip=127.0.0.1 ;ls 成功执行 目标是flag.php ?ip=127.0.0.1 ;cat flag.php 提示/?ip= fxck your space! 判断目标网站是对...
  • Ping命令详解(使用Ping这命令来测试网络连通)

    万次阅读 多人点赞 2020-07-10 10:32:40
    ,列出ping的相关参数 使用Ping这命令来测试网络连通 1, 使用ipconfig /all观察本地网络设置是否正确 2, Ping 127.0.0.1 回送地址Ping回送地址是为了检查本地的TCP/IP协议有没有设置好; 3, Ping本机IP地址,这样是...
  • python实现ping工具

    万次阅读 多人点赞 2018-12-25 21:22:32
    ping工具的实现 应课程设计的需要,需要完成以下内容,实现ping工具的使用 任务要求: 使用该工具可以测试目标主机的状态 根据ICMP回显请求和回显应答报文,使用该工具测试目标主机的状态。 程序应该提供...
  • 什么是ping

    千次阅读 2019-09-30 09:08:27
    ping这个命令是用来检测你的电脑和你所输入的IP地址127.0.01是否有数据通讯,以判断网络通不通的问题,执行这个命令也很简单,在开始——运行,输入ping 127.0.01,上面会出现一些数据,如果你看到了out of date的...
  • 网络连通性测试ping和tracert命令

    千次阅读 2020-11-26 15:21:23
    ping和tracert命令 Ping简介 Ping是基于ICMP协议实现的。通过从源端向目的端发送ICMP回显请求(Echo Request)报文后,根据是否收到目的端的ICMP回显应答(Echo Reply)报文来判断目的端是否可达。即源端在一个...
  • 电信级 ping/ping包测试 工具

    热门讨论 2010-11-16 15:28:50
    可规定ping包数量、大小、间隔时间 结果显示ping包数、掉包数、掉包率、ping的时长、开始及结束时间 支持域名、日志、分割数据包 支持条件停止ping 毫秒 支持随机大小数据包 等等 小工具,强悍功能
  • 【Linux】一步一步学Linux——ping命令(150)

    千次阅读 多人点赞 2019-08-18 20:58:25
    00. 目录 文章目录00. 目录01. 命令概述02. 命令格式03. 常用选项04. 参考示例05. 使能和禁用ping的方法06. 总结07....01. 命令概述 ping命令用来测试主机之间网络的连通性。...ping, ping6 - 向网络主机发送ICMP回...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 490,823
精华内容 196,329
关键字:

ping