zoukankan      html  css  js  c++  java
  • linux ping命令实践

          ping 解析      

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

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

        ping 参数解释      

     -b 允许ping网关地址

    -c count 发送count次ECHO_REQUEST(回传请求)数据包。当有deadline选项(最后期限,-w选项),在超时之前,ping等待ECHO_REPLY(回传响应)直到count次。
    -d 在正在使用的socket(套接字)上设置SO_DEBUG选项。本质上,Linux内核不使用此套接字选项。
    -f 大量ping,极限ping。每个ECHO_REQUEST(回传请求)打印一个点,每有一个ECHO_REPLY(回传响应)打印一个退格符(Backspace)。这样可以快速显示丢弃的数据包数量。如果没有给出间隔,它会将间隔设置为0,并按照它们返回或每秒百次的速度输出数据包,以多者为准。只有超级用户才可以0间隔使用此选项。
    -i interval 发送每个数据包之间等待的间隔(单位秒)。默认设置是等待一秒,极限模式下不等待。只有超级用户可以设置间隔值小于0.2秒。
    -I interface address 将源地址设置为指定的接口地址。参数可以是数字IP地址或设备名称。在ping IPv6 linklocal地址时,此选项是必需的。
    -l preload 如果指定了preload,则ping发送许多不等待回复的数据包。只有超级用户可以选择超过3的预加载。
    -n 仅限数字输出。不会尝试查找主机地址的符号名称
    -p pattern 你可以指定最多16个“pad”字节来填充你发送的数据包。这对于诊断网络中的数据以来问题是有用的。例如-p ff将导致充满整个被发送包。
    -q 静默输出。除启动和完成时的摘要行外,不显示任何内容
    -r 绕过正常的路由表并直接发送到连接接口上的主机。如果主机不在直接连接的网络上,则返回错误。如果还是用了-I选项,则此选项可用于通过没有路由的接口ping本地主机。
    -R 记录线路。包含ECHO_REQUEST数据包中的RECORD_ROUTE选项,并在返回的数据包上显示路由缓冲区。请注意,IP报头只能容纳9个这样的路由。许多主机忽略或放弃此选项。
    -s packetsize 指定要发送的数据字节数。默认56,当与8字节的ICMP头数据组合时,转换为64个ICMP数据字节。
    -t ttl 设置IP生存时间值(TTL)
    -v 详细输出
    -w deadline 指定一个以秒为单位的退出时间,不管ping退出之前发送或接收了多少数据包。在这种情况下,ping将一直发送数据包,直到deadline过期或count探针结束或一些来自网络的错误通知。

        指定ping的次数    

    以上显示看着啰嗦,那么我们注重结果不注重过程:

    上图最后一行我们看到一个陌生的指标 mdev (Mean Deviation) 

    表示 ICMP 包的RTT偏离平均值的程度,主要用来衡量网速的稳定性,mdev值越大说明网络越不稳定。

     

         指定ping数据包大小     

     默认情况下,ping命令是以64字节大小的数据包来测试网络连通性的,可以使用参数 -s 选项修改默认数据包大小。

    实际工作中,我们通常使用 -s 选项来发现网络环境中有关MTU(网络上传最大的数据包)的问题。

         指定ping的TTL     

    TTL:指生存时间,是指数据包被路由器丢弃之前允许通过的路由器的跳数。

    TTL 是由发送主机来设置的,为了防止数据包在网络中无限循环,每个路由器在转发网络数据包时,都要求将TTL的值减少1,直到TTL减为0的那一刻,也就是这个数据包生命终结的时刻。

    对于ping命令发出的数据包,可以使用 -t 选项,设定它在网络上的生命时长。

    下面是一些常用操作系统肥肉默认值:

      1、Linux系统的TTL值为64或255

      2、Windows NT/2000/XP 系统的TTL值为128

      3、UNIX 系统的TTL值为255

        指定ping的时间间隔    

    ping命令的核心功能就是查看网络的连通性和网络延迟,默认情况下,发生2个数据包之间的间隔是1秒。如果嫌默认1秒发送一个ping 包太慢,则可以使用 -i 选项指定发送两个 ping 包之间的时间间隔,不过需要注意:只有root用户才能设置低于0.2秒的时间间隔。

         爱如潮水般的ping    

    使用 -i 选项可以指定发送时间间隔,我们希望尽可能更快的的速度发送和数据包,则可以使用 -f 选项来实现。

    -f (flood ping) :潮水模式的ping。只有超管用户可以使用。

    0% packet :表示0丢包率。说明网卡非常正常。也没有任何的网络拥塞。

         ----------------  历经天华成此景,世间万事出艰辛! -----------------

  • 相关阅读:
    juc之ConcurrentHashMap在我工作中的实践
    设计模式在我工作中的实践
    SpringBoot突报java.lang.NoSuchFieldError分析
    JQuery.UI类库AutoComplete 调用WebService进行模糊查询
    DevExpress控件库----LookUpEdit控件 和 GridLookUpEdit控件使用
    DevExpress控件库----FlyoutPanel提示控件
    Android学习笔记---Log与Activity生命周期
    DevExpress控件库---MarqueeProgressBarControl控件和ProgressBarControl控件
    DevExpress控件库---TokenEdit控件使用
    DevExpress控件库----SearchLookUpEdit控件
  • 原文地址:https://www.cnblogs.com/Coolhao/p/10649927.html
Copyright © 2011-2022 走看看